# AGENTS.md ## Package Selection Guide | Task | Package | | ----------------------------------------------------- | ------------------------- | | Aggregate multiple MCP servers behind one endpoint | `@oaslananka/composer` | | Enforce policy, approvals, and audit logging | `@oaslananka/sentinel` | | Discover and catalogue MCP servers | `@oaslananka/atlas` | | Build MCP-native pipelines and orchestration flows | `@oaslananka/forge` | | Generate MCP servers from API descriptions | `@oaslananka/bridge` | | Inspect traces, metrics, and anomalies | `@oaslananka/observatory` | | Use the desktop workbench for interactive debugging | `@oaslananka/lab` | | Reuse shared protocol, transport, and test primitives | `@oaslananka/shared` | ## Bootstrap ```bash pnpm install --frozen-lockfile pnpm build ``` ## Core Commands ```bash pnpm lint pnpm typecheck pnpm test pnpm test:coverage pnpm docs:api pnpm smoke:prod ``` ## Working Notes - Publishable workspaces live under `packages/`. - `apps/lab` stays private and ships as Electron release artifacts rather than npm packages. - Use `pnpm --filter ` to focus on one workspace at a time. # This is NOT the Turborepo you know Turborepo configuration, task behavior, and CLI commands can vary between installed versions and may differ from your training data. Resolve the `turbo` package from this file's directory or relevant workspace; in monorepos, it may not be visible from the repository root. For example, run `node -p "require.resolve('turbo/package.json')"` from a workspace that depends on `turbo`. Read `docs/README.md` inside that installed package first, then read the relevant pages from its `docs/` directory before changing Turborepo configuration or commands. Heed deprecation notices. These bundled docs match the installed package version and are available without network access. This block is written and re-added by `turbo` before repository-scoped commands when an AI agent is detected. In the Turborepo source repository, its template is defined in `crates/turborepo-cli/src/cli/agent_guidance.rs`. Removing the managed block while updates are enabled means a later qualifying invocation will add it again. Set `"agentGuidance": false` in the root `turbo.json` or `turbo.jsonc` to opt out; this does not remove an existing block. Keep the block committed with your work to avoid an uncommitted change on the next agent invocation.