Local Setup¶
Prerequisites¶
| Requirement | Version |
|---|---|
| Node.js | >= 20.0.0 (ES2022 target) |
| pnpm | Latest (recommended) |
Clone and Install¶
Environment¶
Edit .env with your credentials:
| Variable | Required | What it's for |
|---|---|---|
ANTHROPIC_API_KEY |
Yes* | LLM provider API key |
PANW_AI_SEC_API_KEY |
Yes | Prisma AIRS Scan API key |
PANW_MGMT_CLIENT_ID |
Yes | AIRS Management OAuth2 client ID |
PANW_MGMT_CLIENT_SECRET |
Yes | AIRS Management OAuth2 client secret |
PANW_MGMT_TSG_ID |
Yes | Tenant Service Group ID |
*Or the equivalent for your chosen provider.
Tests run without credentials
Unit and integration tests use MSW mocks — you only need real credentials for E2E tests and actual AIRS operations.
Development Commands¶
| Command | What it does |
|---|---|
pnpm run dev |
Run CLI via tsx (any subcommand) |
pnpm run generate |
Interactive guardrail generation |
pnpm run build |
Compile TypeScript to dist/ |
pnpm test |
Run all tests |
pnpm run test:watch |
Watch mode |
pnpm run test:coverage |
Coverage report |
pnpm run lint |
Biome lint check |
pnpm run lint:fix |
Auto-fix lint issues |
pnpm run format |
Format with Biome |
pnpm run format:check |
Check formatting (no write) |
pnpm tsc --noEmit |
Type-check |
Data Directories¶
Runtime data lives under ~/.daystrom/:
| Path | What's in it |
|---|---|
~/.daystrom/runs/ |
Persisted run states (JSON) |
~/.daystrom/memory/ |
Cross-run learning store |
~/.daystrom/config.json |
Optional config file |
Config priority
CLI flags > environment variables > config file > Zod schema defaults
Verify Setup¶
Run all three checks to confirm everything works:
pnpm test # All tests pass (no AIRS creds needed)
pnpm run lint # No lint errors
pnpm tsc --noEmit # No type errors
All three should pass on a fresh clone
If any fail, make sure you're on Node >= 20 and have run pnpm install.