Show HN: AGBoss Dependency injection and static validation for AI agents AGBoss released version 0.1.0 of its open-source TypeScript framework, publishing @agboss/core@0.1.0 as the production runtime and @agboss/cli@0.1.0 as the CLI and static workflow compiler on registry.npmjs.org under the official agboss npm organization. The framework layers static verification on LangGraph for multi-agent workflows, with typed decorator components, constructor dependency injection, compile-time Path Scope verification via `agboss check`, declared action compensation with automatic LIFO rollback, pre-call FinOps budgets, boundary PII token masking, and signed Agent Mesh envelopes for A2A services. Running `npm exec --yes --package=@agboss/cli@0.1.0 -- agboss create my-app` scaffolds a project whose postinstall step runs `agboss check`, generates `.agboss/types.d.ts`, and unpacks 13 version-matched reference guides into `.claude/skills/agboss/` for AI coding agents. AGBoss agboss.dev https://agboss.dev is an open-source TypeScript framework with static verification for complex multi-agent workflows on top of LangGraph https://www.langchain.com/langgraph . Agents, actions, routers, arbiters, tools, MCP servers, A2A services, and knowledge bases are strictly typed decorator components — assembled in an @Application container with constructor dependency injection, compile-time structural Path Scope verification agboss check , declared action compensation compensateWith / committedBy with explicit rollback side paths .onError / .onJoinError to an undo @Action and automatic LIFO compensation, two-phase human-in-the-loop pauses @ChannelRole , pre-call FinOps budgets @Budget , boundary PII token masking @PiiPolicy , multi-instance SQLite WAL leases and child work-stealing ChildPlacement.AnyInstance , signed Agent Mesh envelopes @A2AExpose , @A2AAgent , agboss hub , and a 5-loop evaluation & testing pipeline @EvalSuite , testWith + 10 unit runners . Current release v0.1.0 : @agboss/core@0.1.0 https://www.npmjs.com/package/@agboss/core production runtime and @agboss/cli@0.1.0 https://www.npmjs.com/package/@agboss/cli CLI & static workflow compiler are publicly published on registry.npmjs.org under the official agboss npm organization. Documentation: https://agboss.dev https://agboss.dev · Quick Start: https://agboss.dev/getting-started/quick-start/ https://agboss.dev/getting-started/quick-start/ · CLI Reference: https://agboss.dev/cli/ https://agboss.dev/cli/ · Examples: https://github.com/agbossjs/agboss-examples https://github.com/agbossjs/agboss-examples npm exec --yes --package=@agboss/cli@0.1.0 -- agboss create my-app cd my-app npm install npm exec --yes --package=@agboss/cli@0.1.0 -- agboss create my-app also available via npx --yes --package=@agboss/cli@0.1.0 agboss create my-app scaffolds a complete project where package.json already lists @agboss/core https://www.npmjs.com/package/@agboss/core in dependencies and @agboss/cli https://www.npmjs.com/package/@agboss/cli in devDependencies , alongside AGENTS.md and CLAUDE.md @AGENTS.md . Running npm install triggers "postinstall": "npm run types" , which runs agboss check , generates .agboss/types.d.ts for TypeScript, and unpacks 13 version-matched reference guides into .claude/skills/agboss/ SKILL.md + references/01..13 for your AI coding agent. cp .env.example .env && npm run chat every name is the full one, as in name 268 : the CLI never adds a suffix for you npx agboss g tool refund-tool --workflow my-app-workflow --agent my-app-assistant-agent one tool per OpenAPI 3 operation DTOs, a client in services/, tests , wired into the agent npx agboss g openapi pets --url ./pets.yaml --workflow my-app-workflow --agent my-app-assistant-agent npx agboss g workflow onboarding-workflow a second workflow, listed in the @Application any layout: targets come from the workflow module, tests go where vitest looks, files are prettier-formatted; a rerun refuses — --force regenerates the files and keeps the wiring in them tools, rag, MCP, judges, routes, … ; --force --reset starts them over without it npm install @agboss/core npm install -D @agboss/cli npx agboss check Why two packages? - @agboss/core dependencies — the lightweight production runtime decorators, execution graph, DI container, storage repository contracts, subpath entries @agboss/core/dto , @agboss/core/testing , @agboss/core/eval , @agboss/core/eslint , schemas, and bundled AI coding skills that ships into your Docker / Kubernetes image. - @agboss/cli devDependencies — the static graph compiler agboss check , code generator agboss generate , dev watcher agboss dev , LangGraph Studio bridge agboss studio , and local visual UI servers agboss eval ui , agboss hub ui that stay out of production container images. js // src/agents/scout.agent.ts — the prompt is a file next to the agent import { Agent } from "@agboss/core"; @Agent { name: "scout-agent", description: "Finds jobs", promptUrls: "./scout.prompt.md" , model: "moonshotai/kimi-k2.6", tools: GreenhouseJobs , } export class ScoutAgent {} // src/job-scout.workflow.ts — the paths, defaults and providers; money is the application's budgets import { Workflow, route, start } from "@agboss/core"; import { WorkflowStartTextDto } from "@agboss/core/dto"; @Workflow { name: "job-scout-workflow", version: "1.0.0", flow: start ChatWorkflowStart .returns WorkflowStartTextDto .toRouter MainRouter // picks one of its @Router { routes } .chooseOne route ProfilerAgent .toFinish ChatWorkflowFinish , route ScoutAgent .toFinish ChatWorkflowFinish , , , defaults: { models: { temperature: 0 }, router: { model: "typesafe/jev-1.13" }, tools: { maxToolCalls: 8 }, }, uncompactedTurns: 5, // the last 5 turns of the thread in full older ones: a @Compaction's summaries providers: JobFitJudge , } export class JobScout {} The application is the one entry 261 : it lists the workflows, the infrastructure a class that extends CostLedgerRepository , ExecutionRecordRepository , PausedExecutionRepository , LangGraph's BaseCheckpointSaver or one of the shared contracts of 265 — ExecutionLeaseRepository , ExecutionTreeRepository , RateLimitRepository ; none listed → the built-in in-memory ones, nothing written to the home folder; the SQLite ones below — each with a fast ping readiness calls, 300 , its model providers , every budget and its health checks healthChecks . createApp and testWith take it, never a workflow. Model providers are infrastructure too 266 : @ModelProvider classes listed in @Application { providers } — none listed → the built-in OpenRouterModelProvider chat and DecisionsModelProvider Jev and the other decision models ; one listed → the list is complete, the built-ins are not added next to it. A workflow and its components only name models; every model of the application agents, model routers, the default router, guardrails, compactions, judges resolves to exactly one listed provider by serves at assembly — none → model.unserved , two → model.ambiguous-provider one model through two providers = two model strings, each in one serves ; the built-ins yield a model another listed provider claims, 454 . agboss describe prints model: … →