github garniergeorges/claude-presence v0.2.0
v0.2.0 — Team mode

latest releases: v0.4.0, v0.3.0, v0.2.3...
3 months ago

v0.2.0 — Team mode

claude-presence now coordinates Claude Code sessions across machines, not just on a single laptop. The stdio mode (claude-presence-mcp) is unchanged — solo and single-machine users keep using it as before. The HTTP team-mode server is opt-in.

Highlights

  • HTTP transport via a new entrypoint claude-presence-server, built on node:http with the MCP Streamable HTTP transport
  • Bearer-token auth with RBAC — per-token names, three default scopes (read/write/admin), optional per-tool overrides, full audit log
  • Official multi-arch Docker image at ghcr.io/garniergeorges/claude-presence, signed with cosign (keyless OIDC), Trivy-scanned in CI
  • 3 deployment variants in deploy/: localhost Compose, public-domain Compose with Caddy + auto HTTPS, raw Kubernetes manifests
  • Bilingual deploy guide in docs/team-mode.md and docs/team-mode.fr.md, covering 4 paths (Compose / Caddy / systemd / Kubernetes)

What's NOT in this release

Reported to v0.3 to keep the scope reviewable:

  • Postgres backend (the Repository stays sync + SQLite-only in v0.2)
  • Helm chart
  • Federation between team servers
  • Per-user identity derived from the Bearer (the named tokens are the v0.2 approximation)

Stdio mode

claude-presence-mcp is completely unchanged. If your .mcp.json uses stdio today, nothing to do.

Quick start (team mode)

docker run -d --name cp \
  -p 3471:3471 \
  -v cp-data:/var/lib/claude-presence \
  ghcr.io/garniergeorges/claude-presence:0.2.0

# Bootstrap the first admin token
docker exec cp node dist/server/index.js token create --name admin --scope admin

# Verify
curl http://localhost:3471/healthz

Full guide: docs/team-mode.md (English) / docs/team-mode.fr.md (French).

Each Claude Code session points at the server via .mcp.json:

{
  "mcpServers": {
    "claude-presence": {
      "type": "http",
      "url": "https://your-server.example.com/mcp",
      "headers": {
        "Authorization": "Bearer cp_REPLACE_WITH_YOUR_TOKEN"
      }
    }
  }
}

Statistics

  • Tests: 29 → 69 (+40), all passing in ~5 s
  • CI: 6 jobs (Ubuntu + macOS × Node 18/20/22) + new Docker workflow (build, scan, sign, push)
  • Image size: ~70 MB per architecture (multi-arch: amd64 + arm64)
  • Trust model: cooperative on stdio, bearer-token-authenticated on HTTP

Image variants published

  • ghcr.io/garniergeorges/claude-presence:latest
  • ghcr.io/garniergeorges/claude-presence:0.2.0
  • ghcr.io/garniergeorges/claude-presence:0.2
  • ghcr.io/garniergeorges/claude-presence:0
  • ghcr.io/garniergeorges/claude-presence:sha-<short>

Verify the cosign signature:

cosign verify \
  --certificate-identity-regexp "https://github.com/garniergeorges/claude-presence/.+" \
  --certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
  ghcr.io/garniergeorges/claude-presence:0.2.0

Full changelog

v0.1.1...v0.2.0

Don't miss a new claude-presence release

NewReleases is sending notifications on new releases.