{"_id":"@asynkor/mcp","_rev":"7-9fe66de4f9d020453039794fccc2b275","name":"@asynkor/mcp","dist-tags":{"latest":"0.7.0"},"versions":{"0.1.0":{"name":"@asynkor/mcp","version":"0.1.0","keywords":["mcp","asynkor","ai","agents","claude","coordination"],"license":"MIT","_id":"@asynkor/mcp@0.1.0","maintainers":[{"name":"coldkey12","email":"donnvladimir70@gmail.com"}],"bin":{"asynkor":"dist/cli.js"},"dist":{"shasum":"5597a326c437838691dc2280cbf234a3940ea542","tarball":"https://registry.npmjs.org/@asynkor/mcp/-/mcp-0.1.0.tgz","fileCount":17,"integrity":"sha512-QL0qM+lELtGxLQW6nCpQzxL1qy5cKwTJD2G4O6hYFNzI4EOJJWqcJETcV0VjBzFA9oJB3Mj/lHfw7cNGdjRC9Q==","signatures":[{"sig":"MEYCIQCD2FDcZlVyVvssAu4lya01BTxuKbJio8C7Zmbfrab5dQIhAIHI1Mzxxn0xA1d/6k4v/xKWGunJMTnQhVV29FlKiCiO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82317},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"cd979c22d02bca571372f97bb2bc02d1647089d3","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/cli.js start","prepublishOnly":"npm run build"},"_npmUser":{"name":"coldkey12","email":"donnvladimir70@gmail.com"},"_npmVersion":"11.6.0","description":"Asynkor MCP client — real-time agent coordination for AI coding teams","directories":{},"_nodeVersion":"23.10.0","dependencies":{"zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.10.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.0_1776171094907_0.07171831639926118","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@asynkor/mcp","version":"0.1.1","keywords":["mcp","asynkor","ai","agents","claude","coordination"],"license":"MIT","_id":"@asynkor/mcp@0.1.1","maintainers":[{"name":"coldkey12","email":"donnvladimir70@gmail.com"}],"bin":{"asynkor":"dist/cli.js"},"dist":{"shasum":"1e67b45e94742df21437eba2838f379bfae77664","tarball":"https://registry.npmjs.org/@asynkor/mcp/-/mcp-0.1.1.tgz","fileCount":17,"integrity":"sha512-CJ98zLV3/esHaOnLJcsrRDeGz5Na/ie5WII7CfJVdKTEHyqvTvJLffTFpWVm2ms7bZOCgUh64vCgKguGA+dNiQ==","signatures":[{"sig":"MEYCIQDNYdobsq0ri1JkVsWribpdT+bewf1x1Vi1ee9oOynDwwIhAPVBf0/CrQnutYNAb6UQs6WZs/rLGlw8I9HMeCvyqj54","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84706},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"cd979c22d02bca571372f97bb2bc02d1647089d3","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/cli.js start","prepublishOnly":"npm run build"},"_npmUser":{"name":"coldkey12","email":"donnvladimir70@gmail.com"},"_npmVersion":"11.6.0","description":"Asynkor MCP client — real-time agent coordination for AI coding teams","directories":{},"_nodeVersion":"23.10.0","dependencies":{"zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.10.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.1_1776171526768_0.8976796701820313","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@asynkor/mcp","version":"0.1.2","keywords":["mcp","asynkor","ai","agents","claude","coordination"],"license":"MIT","_id":"@asynkor/mcp@0.1.2","maintainers":[{"name":"coldkey12","email":"donnvladimir70@gmail.com"}],"bin":{"asynkor":"dist/cli.js"},"dist":{"shasum":"5c46b50756193afe8055e89769ee10df2323b0e9","tarball":"https://registry.npmjs.org/@asynkor/mcp/-/mcp-0.1.2.tgz","fileCount":17,"integrity":"sha512-uKxKc/sNygqk3+itseDrGmyHShfgbBLsEzVqliR1g1btrlmF5iiWbaBa3PsROkCv0lY6M44wZCcu8wxrIBHLKQ==","signatures":[{"sig":"MEYCIQC2liGXTrW1L9xRU2jEX46W3tsCYTOWGTMuOYrVVniTjQIhAJdI8KLlTNam3Egxqgh2EMCQ+Lomd3Xsl7OfO0c3anOP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134107},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a8fe091ae27ee334f4ca904e2ed15a62d6f76a0f","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/cli.js start","prepublishOnly":"npm run build"},"_npmUser":{"name":"coldkey12","email":"donnvladimir70@gmail.com"},"_npmVersion":"11.6.0","description":"Asynkor MCP client — real-time agent coordination for AI coding teams","directories":{},"_nodeVersion":"23.10.0","dependencies":{"zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.10.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.2_1776362369895_0.9875421020352428","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@asynkor/mcp","version":"0.2.0","keywords":["mcp","asynkor","ai","agents","claude","coordination"],"license":"MIT","_id":"@asynkor/mcp@0.2.0","maintainers":[{"name":"coldkey12","email":"donnvladimir70@gmail.com"}],"bin":{"asynkor":"dist/cli.js"},"dist":{"shasum":"119ad040228b12a1f4fb9e5a91c6b38fb514f236","tarball":"https://registry.npmjs.org/@asynkor/mcp/-/mcp-0.2.0.tgz","fileCount":18,"integrity":"sha512-Snqt3IiuHbLkME+iAPak2N/q61PQhecu4NdL9oT/w1JkWQRVKS+gCtweOwmuRZTcAwyn1z4LTm7ZP5CjVEvsmw==","signatures":[{"sig":"MEYCIQC1YmoJGezU+QHGryXrmflAk8mYs0Y3OdVu43rpN//maAIhAK6RFSixU67E06+jaGpRPixcvKskbjO+xo8Pe+gT4PiW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":170255},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"1d4ca85cdc826c4f472eee84709c5010c454c5fe","mcpName":"io.github.asynkor/asynkor","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/cli.js start","prepublishOnly":"npm run build"},"_npmUser":{"name":"coldkey12","email":"donnvladimir70@gmail.com"},"_npmVersion":"11.6.0","description":"Asynkor MCP client — real-time agent coordination for AI coding teams","directories":{},"_nodeVersion":"23.10.0","dependencies":{"zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.10.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.0_1777582998379_0.5199570689819579","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@asynkor/mcp","version":"0.5.0","keywords":["mcp","asynkor","ai","agents","claude","coordination"],"license":"MIT","_id":"@asynkor/mcp@0.5.0","maintainers":[{"name":"coldkey12","email":"donnvladimir70@gmail.com"}],"bin":{"asynkor":"dist/cli.js"},"dist":{"shasum":"8f9a536b0bb30f6e256c0516fad77aeb6f18994c","tarball":"https://registry.npmjs.org/@asynkor/mcp/-/mcp-0.5.0.tgz","fileCount":26,"integrity":"sha512-x+a1i1EhsQtRj8eZc1FDOvjCFrZuTBZKh+BvuwtXz+JUES2RNWb7ePBZ9yuni6BxGlUW0gC+CryUSt2sz3uGaA==","signatures":[{"sig":"MEYCIQCNc87R99Yr+Iyy8f/o3HeMfOfs40KMBrZklhYN/k2f1AIhAKXv0q+eikLc5EwmZvhQVGXM1pBkY1Z0zQdp5OqbTVsN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219871},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f983a8e72b2f310f32174ce1b7f3bc36660a677c","mcpName":"io.github.asynkor/asynkor","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/cli.js start","prebuild":"node scripts/generate-claude-md.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"coldkey12","email":"donnvladimir70@gmail.com"},"_npmVersion":"11.6.0","description":"Asynkor MCP client — real-time agent coordination for AI coding teams","directories":{},"_nodeVersion":"23.10.0","dependencies":{"zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.10.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.5.0_1780308104333_0.5903174752819276","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@asynkor/mcp","version":"0.6.0","keywords":["mcp","asynkor","ai","agents","claude","coordination"],"license":"MIT","_id":"@asynkor/mcp@0.6.0","maintainers":[{"name":"coldkey12","email":"donnvladimir70@gmail.com"}],"bin":{"asynkor":"dist/cli.js"},"dist":{"shasum":"7b37db8adace2cd28eb779d89b053e17f4ce64e5","tarball":"https://registry.npmjs.org/@asynkor/mcp/-/mcp-0.6.0.tgz","fileCount":26,"integrity":"sha512-Sea+YATyUcthspiYQ4i4ph4KqPVbYFqOwL8df1OkjTnE2SzsJbnnwA/lN50t5kbI5PJvmc06FZQV/FFZfM5mGQ==","signatures":[{"sig":"MEYCIQDG4OJ6OS1ebVeERIJl+jpYWBW96wo1LmMvHozSE+ocyAIhAI8RYLn4YTh3ZcX+3ik2UpfIu+bpYwiB8xb1eHLtVhYZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228554},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"88c201e935829b40db36b1369c814c5fc0beebe2","mcpName":"io.github.asynkor/asynkor","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/cli.js start","prebuild":"node scripts/generate-claude-md.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"coldkey12","email":"donnvladimir70@gmail.com"},"_npmVersion":"11.6.0","description":"Asynkor MCP client — real-time agent coordination for AI coding teams","directories":{},"_nodeVersion":"23.10.0","dependencies":{"zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.10.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.6.0_1780341306080_0.25702277034127374","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@asynkor/mcp","version":"0.7.0","mcpName":"io.github.asynkor/asynkor","description":"Asynkor MCP client — real-time agent coordination for AI coding teams","license":"MIT","type":"module","bin":{"asynkor":"dist/cli.js"},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"prebuild":"node scripts/generate-claude-md.mjs","build":"tsc","dev":"tsc --watch","start":"node dist/cli.js start","prepublishOnly":"npm run build"},"dependencies":{"@modelcontextprotocol/sdk":"^1.10.0","zod":"^3.24.0"},"devDependencies":{"@types/node":"^22.0.0","typescript":"^5.7.0"},"engines":{"node":">=18.0.0"},"keywords":["mcp","asynkor","ai","agents","claude","coordination"],"_id":"@asynkor/mcp@0.7.0","gitHead":"d7f078120cc6be9b2a16c03dcfab85328a34086c","_nodeVersion":"23.10.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-8V/AtxFTlpP+BYrD561QuFDNX5MNVEB8zLDqQ/wUg8lsmI96UkLQkVKVtnK43jmPMBu0n/zrULUU481XyXVjXQ==","shasum":"ecdfbd8838840248db262befaf9a25caa23c47d9","tarball":"https://registry.npmjs.org/@asynkor/mcp/-/mcp-0.7.0.tgz","fileCount":26,"unpackedSize":233568,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC+EzlFVfmCKI0rRBVDDI0N2nsz0rjlFDTOm8zr6UqDdgIhAMoO10yVFvvqCIedRtV1ORfkl/Sc4TKAhX5aO1FSecXv"}]},"_npmUser":{"name":"coldkey12","email":"donnvladimir70@gmail.com"},"directories":{},"maintainers":[{"name":"coldkey12","email":"donnvladimir70@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.7.0_1780386182322_0.8078297945591804"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-14T12:51:34.785Z","modified":"2026-06-02T07:43:02.588Z","0.1.0":"2026-04-14T12:51:35.109Z","0.1.1":"2026-04-14T12:58:46.908Z","0.1.2":"2026-04-16T17:59:30.036Z","0.2.0":"2026-04-30T21:03:18.517Z","0.5.0":"2026-06-01T10:01:44.489Z","0.6.0":"2026-06-01T19:15:06.249Z","0.7.0":"2026-06-02T07:43:02.474Z"},"license":"MIT","keywords":["mcp","asynkor","ai","agents","claude","coordination"],"description":"Asynkor MCP client — real-time agent coordination for AI coding teams","maintainers":[{"name":"coldkey12","email":"donnvladimir70@gmail.com"}],"readme":"# @asynkor/mcp\n\nReal-time coordination for teams running AI coding agents.\n\nThis is the open-source MCP client for [Asynkor](https://asynkor.com). It ships the `asynkor` CLI and the stdio MCP shim your IDE's agent (Claude Code, Cursor, Windsurf, Zed, JetBrains, Copilot, Codex, Trae, Antigravity, or anything that speaks MCP) connects through.\n\n- **License:** MIT\n- **Repository:** https://github.com/asynkor/asynkor\n- **Docs:** https://asynkor.com/docs\n- **Dashboard:** https://asynkor.com\n\n---\n\n## What it does\n\nWhen a team runs multiple AI coding agents in parallel on the same codebase, agents collide. Two sessions touch the same file. Branches diverge. Someone spends Friday untangling merge conflicts instead of shipping.\n\nAsynkor is the coordination layer that prevents this. Every agent on the team connects to one MCP server. Before editing a file, the agent acquires an atomic file lease. Other agents trying the same path see the lock and wait. When an agent finishes, the next one inherits the latest file content and the team's accumulated memory — across any IDE, any laptop, any agent framework.\n\nThis package (`@asynkor/mcp`) is the piece that runs on your machine. It proxies between your IDE's agent and the Asynkor server over MCP, and it ships the setup CLI.\n\n---\n\n## Quickstart\n\nTwo commands. Install the CLI globally, then sign in — Asynkor auto-detects every IDE on the machine (Claude Code, Cursor, Windsurf, Zed, VS Code, Codex CLI) and wires the MCP server into each one's user-scope config.\n\n```bash\nnpm i -g @asynkor/mcp\nasynkor login\n```\n\n`asynkor login` opens your browser to sign in, saves the API key to `~/.asynkor/config.json`, and runs `asynkor install` automatically. Restart any open editor afterwards.\n\nAfter login, switch teams from inside Claude Code:\n\n```\n/asynkor <team-slug>\n```\n\n### Headless / CI\n\n```bash\nASYNKOR_API_KEY=cf_live_... npx -y @asynkor/mcp install\n```\n\nSame effect, no browser. Useful for CI, scripts, or agents installing on behalf of a user.\n\n### Installed a new IDE later?\n\nRe-run `asynkor install`. It picks up the new IDE and registers Asynkor in it. Existing IDEs see no change — the command is idempotent.\n\n### Per-project config (optional)\n\nIf you want a project-scoped `.asynkor.json` + `CLAUDE.md` + per-IDE config inside one repo, use `init` instead:\n\n```bash\ncd your-project\nASYNKOR_API_KEY=cf_live_... npx @asynkor/mcp init\n```\n\nMost users want `login`/`install` (system-wide). Use `init` only when one project needs different team credentials than your default.\n\n---\n\n## MCP tool surface\n\nEighteen tools. Every agent connected to the server can call them. Once your IDE is wired up, all but `asynkor_context_update` are auto-approved by default (the long-term doc is owner-reviewed).\n\n**Coordination + history**\n\n| Tool | What it does |\n|------|--------------|\n| `asynkor_briefing` | Team state at session start — who is active, what was recently shipped, what follow-ups are open, applicable rules, memories, zones, context, and inbox top-3. |\n| `asynkor_start` | Declare the work you're about to do. Acquires file leases on declared paths, runs overlap detection, can resume a parked session via `handoff_id` or pick up an open `followup_id`. |\n| `asynkor_check` | Before an edit, check for active overlaps, applicable rules, protected zones, and relevant team memories on specific paths. Read-only. |\n| `asynkor_lease_acquire` | Acquire leases on additional paths mid-session (paths not declared in your initial `asynkor_start`). |\n| `asynkor_lease_wait` | Block up to 25–30s waiting for a leased path to free. Returns `still_blocked` if the lease holder outlasts the window so you can work on other files and retry. |\n| `asynkor_remember` / `asynkor_forget` | Save / drop short-term staging memories. Promote durable ones to long-term context. |\n| `asynkor_finish` | Complete work. Uploads result, learnings, decisions, file snapshots (critical for cross-machine handoffs), follow-ups. Releases leases. |\n| `asynkor_park` | Save incomplete work for another agent to resume. Stores progress, notes, learnings, decisions. Returns a `handoff_id` that appears in the next briefing. |\n| `asynkor_cancel` | Clean up stale or orphaned work (disconnected sessions holding leases). Requires a `work_id` from the briefing. |\n| `asynkor_context` / `asynkor_context_update` | Read / atomically rewrite the long-term project doc. |\n| `asynkor_switch_team` | Switch the active team for a user-scoped API key, or confirm the current team. |\n\n**Agent comms (v0.2 — async messaging between agents)**\n\n| Tool | What it does |\n|------|--------------|\n| `asynkor_inspect` | Read-only snapshot of one teammate's live work — plan, planned paths, files touched, learnings, decisions, parked notes, and the file leases they hold. |\n| `asynkor_ask` | Open an async thread targeting `work:<id>` (a specific session), `host:<name>` (a developer), or `team` (broadcast). Recipient sees it on their next briefing. |\n| `asynkor_inbox` | List threads addressed to me — my work, my host, or team broadcasts. |\n| `asynkor_thread` | Read the full transcript of one thread. |\n| `asynkor_reply` | Append a reply. Pass `close: \"true\"` when the question is fully answered. |\n\nFull reference with inputs, outputs, and examples: https://asynkor.com/docs\n\n---\n\n## The coordination model in one paragraph\n\nEvery edit starts with a lease — acquired atomically through a Redis Lua script so the check-and-set is single-threaded across the whole team. When an agent finishes, it uploads file snapshots (content-addressed) along with learnings and decisions. The next agent — on any machine — inherits both the latest file content and the team's accumulated memory. Sessions that can't complete hand off a full context package to the next agent via `asynkor_park`. Team memory (`asynkor_remember`) compounds across sessions; zones mark paths that need elevated confirmation.\n\n---\n\n## Supported IDEs\n\n`asynkor init --ide <name>` writes the appropriate MCP config. Anything that speaks MCP works — the list below is just the IDEs we've validated.\n\n| IDE | `--ide` flag | Notes |\n|-----|--------------|-------|\n| Claude Code | _auto-detected_ | First-class: `.claude/settings.json` + auto-approval + slash commands |\n| Cursor | `cursor` | Writes `.cursor/mcp.json` + `.cursorrules` |\n| Windsurf | `windsurf` | Writes `~/.codeium/windsurf/mcp_config.json` + `.windsurfrules` |\n| Zed | `zed` | Writes `~/.config/zed/settings.json` |\n| VS Code / Copilot | `vscode` | Writes `.vscode/mcp.json` |\n| JetBrains (IntelliJ / WebStorm / PyCharm / Junie) | `jetbrains` | Writes `.junie/mcp.json` |\n| OpenAI Codex CLI | `codex` | Writes `~/.codex/config.toml` |\n| Trae | `trae` | Writes `.trae/mcp.json` |\n| Google Antigravity | `antigravity` | Writes `.antigravity/mcp_config.json` |\n\n---\n\n## CLI reference\n\nThe `init` command registers the package locally as the `asynkor` binary, so after the first run you can invoke it without `npx`.\n\n```\nasynkor login                        Browser sign-in — saves your key + auto-installs into every IDE\nasynkor install                      Detect every IDE on the machine and register Asynkor MCP (idempotent)\nasynkor start                        Run the MCP proxy (what your IDE calls)\nasynkor init                         Advanced: write project-scoped .asynkor.json + IDE config\nasynkor init --ide <name>            Advanced: target a specific IDE\nasynkor init --link <url>            Set up from a join-link URL\nasynkor setup <url>                  Alias for `init --link`\nasynkor status                       Print the current team briefing\n\nasynkor teams                        List configured teams\nasynkor teams create <slug>          Create a team on the backend\nasynkor teams add                    Add an existing team to local config\nasynkor teams remove <slug>          Remove a team from local config\nasynkor teams switch <slug>          Set the active team\n\nasynkor invite <email>               Email a team invite (admin role optional)\nasynkor invite link                  Generate a shareable join-link URL\nasynkor keys list                    List API keys for the active team\nasynkor keys create                  Create a new API key (shown once)\nasynkor keys revoke <keyId>          Revoke an API key\n\nasynkor help                         Print this.\n```\n\nFull help with flags: `asynkor help`.\n\n---\n\n## Environment variables\n\n| Variable | Purpose |\n|----------|---------|\n| `ASYNKOR_API_KEY` | API key. Used by `start` and by `init` for non-interactive setup. |\n| `ASYNKOR_SERVER_URL` | Override the MCP server URL (default `https://mcp.asynkor.com`). |\n| `ASYNKOR_TEAM` | Active team slug — overrides `active_team` in `.asynkor.json`. |\n\n---\n\n## Multi-team config\n\nAsynkor keys come in two shapes, and the distinction matters for which team a session lands on:\n\n- **User-scoped key** (what `asynkor login` issues by default) — one key that can reach *every* team you belong to. On connect the server binds your **account-default team**; you target a different team per project by naming a **team slug** (no extra keys required).\n- **Team-scoped key** — a key bound to a single team. Useful for CI or when a project needs isolated credentials.\n\n### Pin a team per project (user-scoped key)\n\nTo make a project always connect to a specific team, set its slug. The client pins it on connect (via `asynkor_switch_team`, on the same session your first `asynkor_briefing` uses), so the very first tool call already runs against the right team:\n\n```json\n// <project-root>/.asynkor.json\n{ \"team\": \"acme-backend\" }\n```\n\n`\"active_team\": \"acme-backend\"` is equivalent, and the `ASYNKOR_TEAM` env var overrides both. The slug must be one of your accessible teams (`asynkor teams`). Switch at runtime any time from inside the editor with `/asynkor <team-slug>`.\n\n> Before 0.6.0 these knobs were cosmetic for a user-scoped key — every session silently resolved to the account-default team. 0.6.0 sends the team on connect and pins it, so per-project selection is honored.\n\n### Multiple team-scoped keys\n\nPrefer a separate key per team? `.asynkor.json` takes a `teams` array; switch with `asynkor teams switch <slug>` or `ASYNKOR_TEAM`:\n\n```json\n{\n  \"teams\": [\n    { \"slug\": \"acme-backend\",  \"api_key\": \"cf_live_...\", \"context\": \"Main product\" },\n    { \"slug\": \"open-source\",   \"api_key\": \"cf_live_...\", \"context\": \"OSS side project\" }\n  ],\n  \"active_team\": \"acme-backend\"\n}\n```\n\n### Key precedence\n\nA key resolves in order: **project `.asynkor.json` `api_key` → `ASYNKOR_API_KEY` (env) → `~/.asynkor/config.json`**. A project-local key wins over the process-wide `ASYNKOR_API_KEY` — which is set once on the MCP server registration (e.g. `~/.claude.json`) and otherwise applies to every project. When both are set and differ, the client uses the project key and prints a one-time warning. Gitignore per-project files; the global fallback lives in `~/.asynkor/config.json`.\n\n---\n\n## Self-hosting\n\nAsynkor is fully self-hostable. If your codebase is air-gapped or subject to data-residency requirements, run the Go MCP server, Postgres, and Redis inside your own VPC — nothing leaves your perimeter.\n\nPoint the client at your deployment with `ASYNKOR_SERVER_URL` or the `serverUrl` field in `.asynkor.json`. The deployment guide lives at https://asynkor.com/docs under \"Self-hosting\".\n\n---\n\n## What Asynkor does not do\n\nAsynkor coordinates what lands in your repo. It does not:\n\n- **Write code.** Your agents do. Swap your agent tomorrow — Asynkor stays the same.\n- **Auto-merge PRs.** Collision prevention happens before the edit. Merging stays in your existing git / CI flow.\n- **Replace your CI, git host, or agent.** It sits between them.\n\nIn the hosted deployment, file snapshots transit our infrastructure between agent handoffs so the next agent inherits the latest content. For air-gapped codebases, self-host.\n\n---\n\n## Contributing\n\nIssues, PRs, and discussions welcome at https://github.com/asynkor/asynkor. The client (this package) is MIT-licensed; the full Asynkor project is Apache-2.0. The bar for contributions is straightforward: real bugs, real features, honest tests.\n\n---\n\n## License\n\nMIT — see LICENSE.\n","readmeFilename":"README.md"}