πŸ€– nestjs Γ— agent-product

Ship agent product on NestJS without losing weeks to compliance.

NestJS is a TypeScript natural fit for agent product. GreatCTO auto-detects both β€” adds the agent-product archetype overlay, wires agent-product-specific gates, and runs 83 specialist agents around your existing NestJS workflow.

What changes when GreatCTO joins your NestJS project

Detection β†’ overlay β†’ gates β†’ reviewers.

1 Β· DETECT

Stack + archetype

GreatCTO reads your package.json and detects nestjs + agent-product archetype from signals: imports, file structure, env vars, README hints.

2 Β· OVERLAY

Archetype pack

Attaches the agent-product archetype overlay: OWASP LLM Top-10 evals, prompt-injection review, EU AI Act high-risk classification. Override if your specifics differ; the defaults are sensible for NestJS-style projects.

3 Β· GATES

NestJS-aware reviewers

qa-engineer runs tsc --strict / eslint / vitest --coverage; security-officer checks for prototype pollution + XSS sinks; performance-engineer reviews bundle size + cold-start times.

4 Β· MEMORY

Cross-project lessons

Bugs you've hit before in other NestJS projects (connection-pool exhaustion, ORM N+1 queries, retry storms) β€” the agent's Step 0 includes the prior detection order. MTTR drops 94 % on second occurrence (methodology).

First 10 minutes

Concrete walkthrough.

$ cd my-nestjs-app && npx great-cto init
βœ“ scanning manifests… found package.json
βœ“ stack: nestjs (TypeScript)
βœ“ archetype: agent-product
βœ“ overlay: applied
βœ“ 83 agents ready

$ /start "add tool-calling endpoint for the agent loop"
β–Έ architect drafting ARCH-agent-product.md…
β–Έ pm decomposing into beads tasks…
⚐ gate:plan β€” your approval needed

Approve β†’ 3 senior-devs run in parallel worktrees β†’ 5 reviewers fan out in parallel β†’ gate:ship β†’ deploy. One real run walked stage-by-stage: /proof.

What ships

The first feature, NestJS-idiomatic.

This is the shape of what senior-dev drafts for "tool-calling endpoint for the agent loop" β€” auth first, schema validation, and the audit line the agent-product reviewer requires before gate:ship opens.

// src/agent-product/agent-product.controller.ts β€” reviewed by 5 agents
@Controller('agent-product')
export class AgentProductController {
  @Post()
  @UseGuards(AuthGuard)                       // security-officer: auth before handler
  async create(@Body() dto: CreateAgentProductDto, @User() user) {
    const result = await this.service.handle(dto, user); // qa: class-validator enforced
    await this.audit.log(user.id, 'tool-calling endpoint for the agent loop', result.confidence); // gate:agent-product
    return result;
  }
}
Where this combo lands

What teams build with NestJS + the agent-product overlay.

1

Customer-support agents with tool-calling and human escalation.

2

Research / browsing agents with cost-runaway protection.

3

Workflow copilots embedded in existing SaaS products.

Architecture

Every step of the pipeline, transparent.

No black-box "AI does it all" loop. GreatCTO is a deterministic state machine β€” 8 stages, 22 nodes, 2 human gates. Every node maps to a real agent on GitHub. Inspect the state machine β†’

Install

NestJS + GreatCTO in one command.

$ npx great-cto init

Free, MIT, runs locally. Built as a Claude Code plugin β€” install with one command.

Related deep-dives

More from the blog

AI

How I designed the SDLC state machine for agentic coding

Eight stages, two human gates, four memory layers. Why this exact shape, and what I tried that didn't work.

AI

First real shipped feature with this stack β€” receipts

One run, one feature, from prompt to merged PR. Time, cost, and gate-by-gate breakdown β€” no marketing math.

AI

How GreatCTO chooses which compliance pack to attach

Regex vs LLM-based archetype detection, the false-positive count, and why I keep rejecting the obvious fix.

AI

Why your agent system fails: missing gates, not missing intelligence

The bottleneck in agentic SDLC isn't model quality β€” it's process governance. Here's the state machine that closes the gap.