{"_id":"@agent-ops/sesh-claude-agent-teams","_rev":"2-493f938463892501289592064146ed83","name":"@agent-ops/sesh-claude-agent-teams","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@agent-ops/sesh-claude-agent-teams","version":"0.1.0","keywords":["claude-code","agent-teams","sesh","nats","synadia-agent-protocol","tmux"],"author":{"name":"Daniel Mestas"},"license":"Apache-2.0","_id":"@agent-ops/sesh-claude-agent-teams@0.1.0","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/claude-teams-on-sesh","bugs":{"url":"https://github.com/danmestas/claude-teams-on-sesh/issues"},"bin":{"claude-teams-spawn":"bin/claude-teams-spawn"},"dist":{"shasum":"062d905fa82ce0372582b8b7290d8b2a2056b666","tarball":"https://registry.npmjs.org/@agent-ops/sesh-claude-agent-teams/-/sesh-claude-agent-teams-0.1.0.tgz","fileCount":5,"integrity":"sha512-rfhxgYZGr89XlFElHlvJuPcerLQiutk7JykYAdR35yUGF7SRigW1Hu+9GGQfriRxGnSFDqMQx6TSRyD1MfxzMw==","signatures":[{"sig":"MEUCIGFzcvxnTUtdXvebwU8xMi2nGx3wxGUE29GbOImkfhfKAiEA0kj3Pet7P0ibeZEJyO4Bo/wXeoMjAKchgv9qDUDa084=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22261},"engines":{"node":">=18"},"gitHead":"ad4fe617550c3beee0e21c25de50191a96933133","scripts":{"postinstall":"node scripts/postinstall.js"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/danmestas/claude-teams-on-sesh.git","type":"git"},"_npmVersion":"11.12.1","description":"Spawn Claude Code agent-teams members bound to their own sesh sessions and reachable as first-class NATS Micro services. Mirrors the harness's spawn protocol exactly; layered on the sesh up --exec primitive.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sesh-claude-agent-teams_0.1.0_1779551582241_0.25169217205071437","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@agent-ops/sesh-claude-agent-teams","version":"0.1.1","description":"Spawn Claude Code agent-teams members bound to their own sesh sessions and reachable as first-class NATS Micro services. Mirrors the harness's spawn protocol exactly; layered on the sesh up --exec primitive.","license":"Apache-2.0","author":{"name":"Daniel Mestas"},"repository":{"type":"git","url":"git+https://github.com/danmestas/claude-teams-on-sesh.git"},"homepage":"https://github.com/danmestas/claude-teams-on-sesh","bugs":{"url":"https://github.com/danmestas/claude-teams-on-sesh/issues"},"keywords":["claude-code","agent-teams","sesh","nats","synadia-agent-protocol","tmux"],"engines":{"node":">=18"},"bin":{"claude-teams-spawn":"bin/claude-teams-spawn"},"scripts":{"postinstall":"node scripts/postinstall.js"},"_id":"@agent-ops/sesh-claude-agent-teams@0.1.1","gitHead":"71aaf9c8802b5e6eff529762419ab3d7a03d7021","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-AnrNSat8c8jm7O0AscN2By7U+/KCR4f8D7q5zPswacKyX/8wlH5YqIAgGPRDvvwL15oXyvRJlji5LUBqm9I+UA==","shasum":"263a2e3951e05a6c3ef08b3f7d1e25dd51bf8656","tarball":"https://registry.npmjs.org/@agent-ops/sesh-claude-agent-teams/-/sesh-claude-agent-teams-0.1.1.tgz","fileCount":5,"unpackedSize":22261,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDzUyBzpLef5hyfuY4N9YYuyky0jAOcWYF+WJQdB241lAIgbOJHTw/wHA5rtwqGOuOdbxKd9ijQSMABpPhYMC3zwz8="}]},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"directories":{},"maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sesh-claude-agent-teams_0.1.1_1779554985174_0.8502910173445977"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-23T15:53:02.059Z","modified":"2026-05-23T16:49:45.424Z","0.1.0":"2026-05-23T15:53:02.421Z","0.1.1":"2026-05-23T16:49:45.320Z"},"bugs":{"url":"https://github.com/danmestas/claude-teams-on-sesh/issues"},"author":{"name":"Daniel Mestas"},"license":"Apache-2.0","homepage":"https://github.com/danmestas/claude-teams-on-sesh","keywords":["claude-code","agent-teams","sesh","nats","synadia-agent-protocol","tmux"],"repository":{"type":"git","url":"git+https://github.com/danmestas/claude-teams-on-sesh.git"},"description":"Spawn Claude Code agent-teams members bound to their own sesh sessions and reachable as first-class NATS Micro services. Mirrors the harness's spawn protocol exactly; layered on the sesh up --exec primitive.","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"readme":"# claude-teams-on-sesh\n\nSesh-native spawn path for Claude Code's experimental Agent Teams.\n\n## What this is\n\n`claude-teams-spawn` is a small CLI that adds members to a Claude Code agent team and launches them as real, NATS-wired teammates bound to their own sesh sessions. The result: a teammate that is both a first-class participant in Claude Code's agent-teams IPC (inbox messaging, `SendMessage`, `shutdown_request` protocol) **and** a first-class peer on the sesh hub (its own NATS subject, addressable from any client connected to the hub).\n\n## Why this lives outside sesh\n\nSesh provides the agent-neutral primitive — `sesh up --session=<label> --exec='<cmd>'` brings up a session and binds a child process to it with the full canonical env. Anything more specific would couple sesh to a particular harness's protocol details.\n\nClaude Code's agent-teams protocol (team config schema, inbox file format, the `--agent-id` / `--team-name` claude CLI flag set) is owned by Anthropic and changes on Anthropic's release cadence. Tracking that drift belongs in a thin adapter project, not in sesh's core. This repo IS that adapter.\n\n## How it relates to other projects\n\n```\n                   ┌─────────────────────────────────┐\n                   │  Claude Code agent-teams        │\n                   │  (Anthropic-owned protocol)     │\n                   │  - team config + inbox files    │\n                   │  - --agent-id, --team-name CLI  │\n                   └────────────┬────────────────────┘\n                                │ writes/spawns\n                                ▼\n┌────────────────────────────────────────────────────┐\n│  claude-teams-on-sesh (this repo)                  │\n│  - writes team config + inbox                      │\n│  - spawns claude with the right CLI flags          │\n│  - tracks Anthropic-side schema/flag drift         │\n└─────────────────┬──────────────────────────────────┘\n                  │ invokes\n                  ▼\n┌────────────────────────────────────────────────────┐\n│  sesh (github.com/danmestas/sesh)                  │\n│  - sesh up --session=<label> --exec='...'          │\n│  - canonical env: SESH_*, NATS_URL, SESH_ROLE...   │\n│  - hub + per-session NATS bundles + fossil         │\n└────────────────────────────────────────────────────┘\n```\n\nSesh is the agent-neutral substrate. This repo adapts it for one specific harness.\n\n## Status\n\n**Phase 2 + Phase 4 complete (2026-05-23).** End-to-end one-shot spawn works against a live Claude Code agent team. Sesh-spawned teammate registers as NATS Micro service per Synadia Agent Protocol v0.3, is reachable on `agents.prompt.cc.<owner>.<name>` with sub-4ms RTT, and is indistinguishable from harness-spawned teammates at the protocol layer.\n\nImplementation plan at `docs/SPEC.md`. Spy-test reference data at `docs/spy-test-2026-05-22.md`. Binary built locally via `go build ./cmd/claude-teams-spawn`. Not yet released.\n\nRemaining phases: Phase 3 (readiness handshake hardening), Phase 5 (operator skill), Phase 6 (CI drift detection).\n\nPhase 0 prerequisites:\n- [x] **Resolved 2026-05-22.** The upstream `claude-nats-channel` MCP at `github.com/danmestas/sesh-channels/claude-nats-channel/server.ts:234` already honors `SESH_SESSION` env-var override. When `sesh up --exec` sets the env, the spawned claude's MCP auto-subscribes to `agents.prompt.cc.<owner>.<name>`. No upstream issue needed.\n- [ ] Re-run the spy-test against the current Claude Code version to confirm the captured CLI flag set is still accurate.\n\n## Usage (planned)\n\n```\nclaude-teams-spawn <team-name> <member-name> \\\n    [--prompt=STRING | --prompt-file=PATH] \\\n    [--agent-type=TYPE] \\\n    [--agent-color=COLOR] \\\n    [--model=MODEL] \\\n    [--cwd=PATH] \\\n    [--scope=workflow|project|session] \\\n    [--scope-id=ID] \\\n    [--backend=tmux|cmux|background] \\\n    [--dry-run]\n```\n\nBackend auto-detect: `CMUX_SOCKET_PATH` set → cmux; `TMUX` set → tmux; neither → background. Override with `--backend`.\n\n## Prerequisites\n\n- sesh ≥ (version with `--exec` shipped — verify via `sesh up --help | grep exec`)\n- Claude Code (any 2.1.x — older versions untested)\n- `tmux` OR cmux OR neither (for `--backend=background`)\n- `claude-nats-channel` MCP (from `github.com/danmestas/sesh-channels`) — env-override already shipped; no version pin needed\n\n## Design references\n\n- `docs/SPEC.md` — full implementation plan, locked decisions, phased work breakdown\n- `docs/spy-test-2026-05-22.md` — reverse-engineered Claude Code agent-teams spawn shape\n- Sesh's `docs/coordination-patterns.md` — the `--exec` primitive contract this repo builds on\n\n## License\n\nApache 2.0 (matches the rest of the dmestas/sesh-adjacent ecosystem).\n","readmeFilename":"README.md"}