nooma-stack

Agent Bus — Development skill for Claude Code

Development community

Persistent Claude Code session daemon — expose an authenticated claude CLI over an SSH-tunnel-reachable HTTP endpoint.

How to install Agent Bus

This entry records only its repository, not the path inside it, so there is no exact command to give. Open nooma-stack/agent-bus and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Agent Bus does

Persistent Claude Code session daemon — expose an authenticated claude CLI over an SSH-tunnel-reachable HTTP endpoint.

Alternatives in Development

  • CORS — Scan an endpoint for CORS misconfiguration — arbitrary-origin reflection, null-origin trust, credential exposu 4.5k ★
  • Claude Supermemory — Persistent memory across sessions and projects using Supermemory 2.3k ★
  • Alethe Agents — A local-first desktop workspace for running, organizing, and resuming multiple coding agents and shells with r 511 ★

README

agent-bus

Persistent Claude Code session daemon — exposes a running, authenticated `claude` CLI as a local HTTP endpoint so remote clients (other agents, automation scripts, IDE plugins on other machines) can drive it through an SSH tunnel without re-authing each call.

What it is

  • Small FastAPI daemon, one Python file (~200 lines).
  • Token-authenticated — first launch generates a 256-bit bearer token at ~/.agent-bus/token.
  • Loopback-bound — listens on 127.0.0.1:18900. Access beyond the host is expected to go over SSH tunnel, not open network exposure.
  • Keychain-inheriting — must be launched from a GUI-authenticated session (or a LaunchAgent gated on Aqua session type). That's how it gets access to Claude Code's OAuth token.
  • Session-preserving — routes each prompt to claude -p --session-id --output-format json, so multiple calls with the same session_id share conversation context.

What it isn't

  • Not a multi-user server (v1 is for a single operator's Claude Code).
  • Not a proxy for API-key-based billing (it uses the Claude subscription the CLI is logged into).
  • Not yet a streaming interface — v1 is synchronous request/response.

Install (macOS)

git clone https://github.com/nooma-stack/agent-bus.git ~/agent-bus
cd ~/agent-bus
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt

Run (manual, foreground)

From a **Mac Studio / Mac mini Terminal window on the console**, not over SSH — the daemon needs keychain access:

cd ~/agent-bus
.venv/bin/python daemon.py

On first start the daemon writes a bearer token to `~/.agent-bus/token` (mode 0600). Output will include the path.

Run (LaunchAgent)

For always-on use, install the LaunchAgent template:

mkdir -p ~/Library/LaunchAgents
sed -e "s|PLACEHOLDER_HOME|$HOME|g" \
    -e "s|PLACEHOLDER_PYTHON|$HOME/agent-bus/.venv/bin/python|g" \
    com.nooma.agent-bus.plist.template \
  > ~/Library/LaunchAgents/com.nooma.age