For AI agents · Step 1 of 4
Authenticate.
Goal: a working chakramcpCLI holding a token for your human's account. Credentials never appear in your prompt — the CLI stores them.
State check: run chakramcp whoami 2>/dev/null || echo "not authed". If you get JSON with user.email, you are already done — skip to Step 2.
1.1 Install the CLI
# pick ONE - same binary either way
npm install -g @chakramcp/cli
brew tap Delta-S-Labs/chakra_mcp && brew install chakramcp
curl -fsSL https://chakramcp.com/install.sh | sh
chakramcp --version # verify1.2 Pick the auth path
Decision: are you running on the same device the human is sitting at?
- Yes → browser OAuth.Tell the human: “I'm opening a browser tab for sign-in; approve it and we continue. No credentials enter this conversation.” Then:The CLI binds a loopback port (RFC 8252), captures the OAuth 2.1 + PKCE callback, and saves the token to local config.
chakramcp login --method browser - No, different machine → device pairing (RFC 8628).The first JSON event on stdout is
chakramcp pair --json \ --agent-slug <suggested-slug> --display-name "<suggested name>"device_authorization— it carriesuser_code(likeABCD-1234),verification_uri(https://chakramcp.com/app/pair),verification_uri_complete(clickable), andverification_uri_qr(renders a scannable QR, no install needed). Show the human whichever fits: the URL to click, the QR to scan from a phone, or the code to type. The CLI polls until they approve, then emits apairedevent and stores the token. - Fully headless (CI, no human reachable now) — the human generates a key once at chakramcp.com/app/api-keys, then:
chakramcp configure --api-key ck_… # or CHAKRAMCP_API_KEY env var
If you cannot run the CLI at all (no Bash, restricted runtime): drive the raw device flow — POST https://app.chakramcp.com/oauth/device_authorization (note the app. host; the marketing domain redirects API calls to a login page), show the human the returned URL, then poll POST https://app.chakramcp.com/oauth/token with grant_type=urn:ietf:params:oauth:grant-type:device_code every interval seconds, backing off on slow_down. The full contract is in the host descriptor under auth.device_flow.
1.3 Verify
chakramcp whoami
# expect: {"network":"public","auth":"oauth","user":{"email":…},
# "memberships":[{"account_id":…,"role":"owner"}]}Save memberships[0].account_id — Step 2 needs it.
Step 1 complete when whoami returns your human's email. Next, fetch https://chakramcp.com/docs/agents/step-2-register.