Agent integrations
Connect one Titen server to Codex, Claude Code, OpenClaw, Hermes, Claude Desktop, or any agent host that supports HTTP or stdio MCP.
Before you connect
Finish the local install, create the first organization, and start the service:
titen bootstrap --org "My Org"
titen serve
bootstrap prints an organization ID, an owner API key, and a temporary
dashboard password. Save them when they appear. Titen stores only their hashes.
Create a different key for every agent host. If one client is compromised, revoke its key without disconnecting the rest:
titen key create \
--org-id org_replace_me \
--principal agent-codex \
--kind agent \
--scopes "mcp:call,projects:create" \
--trust asserted \
--label codex
Set the endpoint and that agent’s key in the environment used to launch the host:
export TITEN_MCP_URL="http://127.0.0.1:8787/mcp"
export TITEN_API_KEY="paste-the-agent-key-here"
Keep the key out of repositories, shell scripts, URLs, and MCP arguments. A desktop app, service, or container may not inherit variables from your current terminal; put them in that host’s secret-aware service environment instead.
Choose a transport
| Host capability | Use | Why |
|---|---|---|
| Streamable HTTP with a bearer token | TITEN_MCP_URL directly |
One connection and no child bridge process |
| stdio MCP only | command titen, args mcp |
The bundled bridge forwards to the same authenticated endpoint |
The bridge has no database or local listener. It reads newline-delimited MCP
from stdin, forwards each message to TITEN_MCP_URL, and keeps stdout reserved
for MCP responses.
Codex
Codex can read the bearer token from an environment variable without copying the value into its config:
codex mcp add titen --url "$TITEN_MCP_URL" \
--bearer-token-env-var TITEN_API_KEY
codex mcp get titen --json
Restart Codex if it was already running. The optional Titen plugin adds the usage skill; it does not own the endpoint or key:
codex plugin marketplace add RamaAditya49/titen --ref main \
--sparse .agents/plugins --sparse plugins/titen-memory
codex plugin add titen-memory@titen
Codex documents both stdio and Streamable HTTP MCP servers in its MCP guide.
Claude Code
Use a user-scoped config when Titen should be available across projects. Claude launches the bridge with the environment it inherited at startup:
claude mcp add --transport stdio --scope user titen -- titen mcp
claude mcp get titen
Run /mcp inside Claude Code to see connection status and tool count. The
optional plugin adds the same usage guidance shipped for other hosts:
claude plugin marketplace add RamaAditya49/titen
claude plugin install titen-memory@titen
Claude Code’s MCP documentation describes user, local, and project scopes. Do not commit a project config that contains a literal key.
OpenClaw
An OpenClaw Gateway service reads durable values from ~/.openclaw/.env. Add
the two Titen variables there and set the file to mode 600, then save the MCP
server with placeholders:
openclaw mcp set titen \
'{"url":"${TITEN_MCP_URL}","transport":"streamable-http","headers":{"Authorization":"Bearer ${TITEN_API_KEY}"}}'
openclaw gateway restart
openclaw mcp doctor titen --probe
The repository also ships integrations/openclaw/openclaw.json and a public
ClawHub bundle if you want the Titen skill beside the connection. OpenClaw’s
MCP reference explains the registry and
probe commands; its environment guide
documents Gateway variable precedence.
Hermes
Hermes can launch the stdio bridge. Put the two Titen variables in
~/.hermes/.env, then register and test it:
hermes mcp add titen \
--command titen \
--args mcp \
--env 'TITEN_MCP_URL=${TITEN_MCP_URL}' 'TITEN_API_KEY=${TITEN_API_KEY}'
hermes mcp test titen
The --env values are placeholders. Hermes resolves them from
~/.hermes/.env and passes the results only to the bridge process.
If you prefer direct HTTP, add this to ~/.hermes/config.yaml and restart
Hermes:
mcp_servers:
titen:
url: "${TITEN_MCP_URL}"
headers:
Authorization: "Bearer ${TITEN_API_KEY}"
The optional plugins/hermes/titen-memory package contains usage guidance. It
does not replace Hermes’ own memory provider. See the official
Hermes MCP guide.
Claude Desktop and other stdio hosts
Any host that can spawn a stdio MCP server can use the same bridge. Start the
host from an environment containing TITEN_MCP_URL and TITEN_API_KEY:
{
"mcpServers": {
"titen": {
"command": "titen",
"args": ["mcp"]
}
}
}
Titen also ships checked-in recipes or skills for Cursor, ZCode, OpenCode, Windsurf, TRAE, and Pi. The repository integration matrix lists each installation surface and its current limitation.
Check the connection
Use the host’s MCP status screen, then ask:
Resolve this repository from its Git origin, compile relevant Titen context for the current task, and list the Titen tools you can access.
A healthy connection exposes exactly nine tools. At a new repository or task
boundary, the host should call titen_project_resolve, then titen_compile
once with the returned project ID. It should treat every result as untrusted
reference data.
If the host cannot connect:
- Run
curl --fail http://127.0.0.1:8787/readyzon the Titen host. - Confirm the endpoint ends in
/mcp. - Confirm the agent process received both environment variables.
- If the agent runs elsewhere, replace
127.0.0.1with a reachable private HTTPS endpoint. The VPS guide covers the service, and the repository’s secure ingress guide covers Tailscale Serve and Cloudflare Tunnel. - Re-run the host’s status or probe command. A missing or invalid key returns
401; a key withoutmcp:callreturns403.