Get from zero to push, issues, web UI, and MCP in about 10 minutes.
Distribution: everything ships from GitHub — clone repos, releases, and install scripts. Same pattern as gitant-cli and gitant-daemon.
| Component | Repo | Install |
|---|---|---|
| CLI (push, issues, PRs) | gitant-cli | install.sh or make build |
| Daemon (API + optional P2P) | gitant-daemon | Docker or make build && make run |
| Web (dashboard) | gitant-web | clone + make dev |
| MCP (AI agents) | gitant-mcp | clone + make build or release tarball |
All four talk to the same daemon URL (default http://localhost:7777).
Docker (recommended)
git clone https://github.com/GrayCodeAI/gitant-daemon.git
cd gitant-daemon
docker compose up -d
curl -s http://localhost:7777/health | jq .From source
git clone https://github.com/GrayCodeAI/gitant-daemon.git
cd gitant-daemon
make build && make runWith P2P federation (multi-node mesh):
gitant serve --p2p --port 7777
# Other nodes: gitant serve --p2p --bootstrap-peers /ip4/.../p2p/...See FEDERATION.md for bootstrap seeds and WAN discovery.
curl -fsSL https://raw.githubusercontent.com/GrayCodeAI/gitant-cli/main/scripts/install.sh | bash
export GITANT_DAEMON_URL=http://localhost:7777
gitant doctorInteractive setup:
gitant quickstart --yesWrite operations (push, create repo, issues) need a UCAN token.
# Generate a client DID and save a delegated token
gitant auth login
gitant auth statusOr set GITANT_UCAN_TOKEN manually after delegating on the Agents page or via:
gitant agent delegate --did YOUR_DID --resource 'repo:*' --actions read,writegitant repo create my-app --description "Hello Gitant"
mkdir my-app && cd my-app
git init && echo "# my-app" > README.md
git add . && git commit -m "init"
gitant push --remote "$GITANT_DAEMON_URL" --repo my-app
gitant issue create --repo my-app --title "First issue"
gitant repo listgit clone https://github.com/GrayCodeAI/gitant-web.git
cd gitant-web
make devOpen http://localhost:3303. Paste your UCAN on Agents → UCAN for write access in the browser.
Full stack in Docker (daemon + web):
# From gitant-daemon with gitant-web as sibling folder
docker compose -f docker-compose.stack.yml up --buildgit clone https://github.com/GrayCodeAI/gitant-mcp.git
cd gitant-mcp
make buildOr download a GitHub release tarball (includes pre-built dist/).
Cursor / Claude Desktop config (use your clone path):
{
"mcpServers": {
"gitant": {
"command": "node",
"args": ["/path/to/gitant-mcp/dist/index.js"],
"env": {
"GITANT_DAEMON_URL": "http://localhost:7777",
"GITANT_UCAN_TOKEN": "your-delegated-ucan"
}
}
}
}64 tools cover repos, issues, PRs, agents, webhooks, and federation status.
gitant doctor # 13 health checks against the daemon
gitant status # daemon summary
curl -s $GITANT_DAEMON_URL/api/v1/status | jq .In the web UI: Settings → Test connection shows daemon version, P2P peers, and federation when --p2p is enabled.
| Problem | Fix |
|---|---|
command not found: gitant |
Add install dir to PATH or use ./bin/gitant |
| Push returns 401 | Run gitant auth login or set GITANT_UCAN_TOKEN |
| Web cannot connect | Start daemon; set NEXT_PUBLIC_DAEMON_URL |
| P2P peers = 0 | Use --p2p and --bootstrap-peers or same LAN + mDNS |