Connecting agents
Wire the CLI, MCP clients, HTTP API, and runner processes to a running Runyard Hub. The setup snippets that used to live on the in-app "Connect" page live here.
The in-app Tokens page (#tokens / #connect) is now focused on one
job ā minting, inspecting, and revoking access tokens. Everything else that
used to share that page (install snippets, MCP wiring, runner bring-up,
multi-org guidance) is documented here so operators pick from one place and
agents can be pointed at a stable URL.
For the underlying concepts ā trust boundary, scope vocabulary, and secret grants ā see the security model.
The four channels
Every client of a Runyard Hub uses one of these entry points:
| Channel | Best for | Setup |
|---|---|---|
| MCP | Local AI clients (Claude Code/Desktop, Codex, Cursor, Windsurf, ā¦) | runyard mcp install --all |
| CLI | Humans and shell scripts | runyard login --url <hub> then runyard menu |
| HTTP API | Anything that speaks HTTP; mirrors every CLI/MCP action | curl -H "authorization: Bearer $TOKEN" <hub>/api/menu |
| Runner | Executing runs on a machine you control | runyard-runner with RUNYARD_HUB_URL + RUNYARD_HUB_TOKEN |
All four authenticate with a bearer token minted in the app on the Tokens
page (or via POST /api/tokens). Copy the value at mint time ā the Hub never
shows it again.
1. Install the client
The Hub serves its own client bootstrap so the CLI and MCP server always match the Hub's release:
bash <(curl -fsSL https://hub.example.com/install.sh)The installer places runyard and runyard-mcp on PATH, asks for the Hub
URL, and prompts for the token you copied at mint time. Node.js 18+ is
required on the client host.
2. Wire every AI agent (MCP)
runyard mcp install --all detects and configures the MCP-capable AI clients
already on the machine ā no JSON editing ā for Claude Code/Desktop, Codex,
Cursor, Windsurf, Gemini, and VS Code. Target one client with
--client <name>.
runyard mcp install --allThe install writes each client's own MCP registration file (Claude Desktop's
claude_desktop_config.json, Cursor's mcp.json, etc.) and reuses the token
saved by runyard login.
3. Drive the CLI
runyard login --url https://hub.example.com
runyard menu # next-action menu
runyard run helloNamed remotes let one workstation talk to several deployments ā see the
CLI guide for the full command surface, remote switching, and the
--json machine-readable output every command supports.
4. Call the HTTP API directly
curl -H "authorization: Bearer $TOKEN" https://hub.example.com/api/menuThe full surface is documented at <hub>/openapi.json, and generic agent
orientation is at <hub>/llms.txt. The API guide covers pagination,
event streams, and the run lifecycle in detail.
5. Stand up a runner
A runner is a worker process that registers with the Hub using a runner-scoped token, heartbeats, claims queued runs, and executes workflows. Mint a runner token on the Tokens page (preset: Runner) and export it:
RUNYARD_HUB_URL=https://hub.example.com \
RUNYARD_HUB_TOKEN=shub_... \
SMITHERS_RUNNER_TAGS=linux,node,git,shell,web,smithers \
runyard-runnerSee installation for systemd units, sandboxing, and multi-host capacity.
Multiple orgs on one machine
Each org is its own Hub. To register the second one alongside the first:
runyard login --remote acme --url https://acme.runyard.example
runyard mcp install --all --remote acmeIts MCP tools install alongside the existing ones, namespaced
runyard-acme-*, so there's no ambiguity when several Hubs are wired to the
same AI client.
Shareable deep links
Every page, run, workflow, and artifact in the Hub has a stable URL. Click any š icon in the console to copy one ā paste it into chat, docs, or a ticket and recipients land on the same view (still auth-gated). See deep links for the URL grammar.
Token hygiene
Prefer narrow scopes and short lifetimes. The Tokens page sorts by usage so never-used and stale (>30 days idle) credentials surface first ā revoke those before minting new ones. See security for the full scope vocabulary and the secrets model.