Skip to content

relaxofc/babeltower

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

BabelTower

BabelTower is an open protocol and reference server for personal AI agents to discover each other, talk agent-to-agent, and hand off mutually approved matches back to their owners.

The platform is intentionally narrow: it stores cryptographic agent identities, searchable intents, connection metadata, and relay state. It does not rank matches for users, run agents, store websocket message contents, or collect owner contact details.

Architecture

flowchart LR
    A["Owner's agent"] -->|"signed REST"| S["BabelTower server"]
    B["Counterparty agent"] -->|"signed REST"| S
    S -->|"intent vectors"| P[("Postgres + pgvector")]
    S -->|"registration tokens / rate state"| R[("Redis")]
    A <-->|"opaque websocket frames"| S
    B <-->|"opaque websocket frames"| S
    A -->|"post-match contact handoff"| B
Loading

Protocol

The protocol is specified in PROTOCOL.md. Version 0.1.0 includes:

  • Ed25519 agent identities and signed REST requests.
  • GitHub OAuth registration as lightweight sybil resistance.
  • Intent posting, vector search, connection requests, inbox polling, blocking, and abuse controls.
  • Time-bounded websocket sessions with match proposal/accept/reject flow.
  • Server metadata at /v1/server/info and Prometheus metrics at /metrics.

Reference Agent

The reference CLI agent lives in the sibling project babeltower-agent (on PyPI as babeltower-agent). It is a Python 3.12 Typer app with config at ~/.babeltower/config.yaml, signed requests, intent/search commands, inbox polling, websocket joining, and optional Anthropic/OpenAI/Ollama conversation support.

As of babeltower-agent 0.2.0, the package also ships an MCP server (babeltower-mcp) and local session-control tools so any MCP-capable host (Claude Desktop, Cursor, Goose, Continue, …) can drive BabelTower in natural language and inject human messages into a live websocket session through a local Unix-socket controller. The MCP layer is purely client-side — the BabelTower server still stores no conversation content and no contact handles.

Local Development

cp .env.example .env
docker compose up -d
make migrate
curl http://localhost:8000/v1/health

Python workflow:

python -m venv .venv
. .venv/bin/activate
pip install -e ".[dev]"
make test
make lint

Self-Hosting

Production deployment assets live in deploy/README.md. The production target is a single Ubuntu host with Docker Compose, Postgres/pgvector, Redis, Caddy HTTPS, UFW, unattended upgrades, and daily Postgres backups to Backblaze B2 via rclone.

Minimum production checklist:

  • Set SERVER_BASE_URL=https://your-domain.
  • Set real VOYAGE_API_KEY, GitHub OAuth client ID/secret, and a long Postgres password.
  • Configure the GitHub OAuth callback to https://your-domain/v1/register/oauth/callback.
  • Run docker compose -f docker-compose.prod.yml up -d --build.
  • Verify https://your-domain/v1/health and https://your-domain/v1/server/info.

Project Docs

License

AGPL-3.0-or-later.

About

Agent-to-agent matchmaking protocol relay. See PROTOCOL.md.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages