Install and create your first agent
An agent runs on a dedicated Apple-silicon Mac (macOS 15+) under its own admin macOS account. You can scaffold and configure on any Mac for development, but production expects one machine per agent, always on.
Prerequisites
| Dependency | Install | Purpose |
| --- | --- | --- |
| Node.js 20+ | brew install node@20 | Runtime for the daemon, poller and CLI |
| Claude Code CLI | npm install -g @anthropic-ai/claude-code | The agent's reasoning engine |
| jq | brew install jq | Used by hook scripts |
| Pandoc + MacTeX | brew install pandoc && brew install --cask mactex-no-gui | Branded PDF generation (optional) |
| Anthropic auth | An API key, or claude login with a Pro/Max subscription | Model access for every session |
On a production mini, also keep the machine awake:
sudo pmset -a sleep 0 displaysleep 0 autorestart 1
Create the agent repo
npx @cohortapp/agent-sdk create jacob-ai
cd jacob-ai
maestro setup
@cohortapp/agent-sdk is not yet on the npm registry. Until the first publish lands, install the CLI from the source repository — it links the same binaries, and every command in these docs works unchanged:
npm install -g github:adapticai/maestro
cohort create jacob-ai
The npx @cohortapp/agent-sdk … form is the canonical one and takes over as soon as the package is published.
create scaffolds a complete agent repository:
- Copies the framework —
scripts/,lib/,agents/,workflows/,policies/,plugins/,schedules/,teams/,docs/,mcp/,desktop-control/. - Copies the agent templates —
CLAUDE.md, theconfig/agent.jsonstub,config/*.yamlskeletons, and.claude/(settings, hooks, slash commands). The scaffolded.mcp.jsonwires thecohort-mcporg tool surface into interactive Claude sessions. - Creates the operational directory tree (config, knowledge, memory, state, logs, outputs) and generates queue, dashboard and schema templates.
- Generates
package.jsonwith the operational scripts (daemon,healthcheck,emergency-stop,upgrade,doctor, …), copies.env.exampleand.gitignore, initializes git, and runsnpm install.
The CLI binaries
Installing the package links five bins; the first two are the same file and the last two are legacy aliases from the pre-rename fleet:
| Bin | What it is |
| --- | --- |
| cohort / maestro | The agent CLI — create, setup, pair, sync, upgrade, doctor, router, secrets, audit, who-owns, init, global-setup |
| cohort-mcp | The org MCP server (stdio) — see The tool surface and MCP |
| neolith / neolith-mcp | Legacy aliases; identical behaviour |
Run the setup wizard
maestro setup is a deterministic, resumable, self-verifying wizard — Node code drives the orchestration, and the LLM is invoked only as a bounded enrichment step for company-specific prose. It runs as ordered sections, checkpoints to state/setup/progress.json, and on re-run resumes at the first incomplete section. config/agent.json is the source of truth; the checkpoint is just a hint.
- Identity and company
Name, title, the function-by-altitude archetype, and the principal the agent reports to; then the company interview (or a
docs/company-context/folder, or local repos to read) — written toconfig/agent.jsonandconfig/company.json. - Model and communications
Choose Claude Code subscription auth (keychain OAuth) or an Anthropic API key; then wire each messaging channel you want — workspace messaging, email, Slack, SMS, WhatsApp, Telegram, voice — with credentials verified inbound.
- Operating model and enrichment
Deterministic generators produce the operating charter, a seeded backlog, 40–60 role-specific sub-agents, skills, workflows, cadences and launchd plists from the archetype. Enrichment then fills the company-specific prose slots with bounded, validated LLM calls.
- Org, learning, recovery, verify
Enroll against your Cohort workspace (see Connect an agent to your workspace), enable the self-learning loop and the recovery watchdog, and finish with a live capability probe that prints an N/M table with a remedy line per failure.
Useful flags: maestro setup <section> runs one section; --status prints each section's detected state; --headless --answers file.json drives it non-interactively; --dry-run previews. The wizard exits non-zero only on hard failures (no identity, unresolvable archetype, Claude API unreachable) — optional channels are reported but never fatal.
Verify
maestro doctor
Doctor verifies the installation end to end — framework files, cadence-bus wiring, launchd plists, config, state, .env, dependencies, and (once enrolled) live Cohort connectivity. It exits non-zero with actionable remediation when something is wrong. See Troubleshooting for the full check list.