Skip to main content

Universal human-in-the-loop control plane for AI developer agents — forward prompts to your phone, reply from anywhere

Project description

AtlasBridge (AtlasBridge)

Universal human-in-the-loop control plane for AI developer agents.

CI License: MIT Python 3.11+ Version


AtlasBridge sits between you and your AI coding agent. Whenever your agent pauses and requires human input — approval, confirmation, a choice, or clarification — AtlasBridge forwards that prompt to your phone.

You respond from your phone, from a channel such as Telegram or WhatsApp, Slack or others. AtlasBridge relays your decision back to the CLI. Execution resumes.

No walking back to your desk. No missed prompts. You stay in control.

┌──────────────┐        ┌───────────────┐        ┌─────────────────┐
│  AI Agent    │──────► │     AtlasBridge     │──────► │   Your Phone    │
│ (Claude CLI) │        │  Prompt Relay │        │   (Telegram)    │
│              │◄────── │               │◄────── │                 │
└──────────────┘        └───────────────┘        └─────────────────┘
   paused waiting           detects &                you reply
   for input                forwards prompt          from anywhere

How it works

  1. atlasbridge run claude — wraps your AI CLI in a PTY supervisor
  2. The tri-signal prompt detector watches the output stream
  3. When a prompt is detected, AtlasBridge sends it to your Telegram (or Slack)
  4. You tap a button or send a reply on your phone
  5. AtlasBridge injects your answer into the CLI's stdin
  6. The agent continues

That's it. AtlasBridge is a relay, not a firewall. It does not interpret commands, score risks, or block actions. It asks you — and only you — at the exact moment the agent needs human input.


Status

Version Status Description
v0.1.0 Design release Architecture, docs, and code stubs
v0.2.0 In progress macOS MVP — working Telegram relay
v0.3.0 Planned Linux support
v0.4.0 Planned Slack channel
v0.5.0 Planned Windows (ConPTY, experimental)

Quick start (v0.2.0 target)

pip install atlasbridge

# First-time setup (creates ~/.atlasbridge/config.toml)
aegis setup

# Wrap Claude Code
aegis run claude

# In another terminal, check status
aegis status

When Claude Code asks you a question, your Telegram bot will send you a message with buttons. Tap Yes or No. Claude Code answers and continues.


Design

See the docs/ directory:

Document What it covers
architecture.md System diagram, component overview, sequence diagrams
reliability.md PTY supervisor, tri-signal detector, Prompt Lab
adapters.md BaseAdapter interface, Claude Code adapter
channels.md BaseChannel interface, Telegram implementation
cli-ux.md All CLI commands, output formats, exit codes
roadmap-90-days.md 6-phase roadmap, v0.2.0–v0.5.0
qa-top-20-failure-scenarios.md 20 mandatory QA scenarios
dev-workflow-multi-agent.md Branch model, agent roles, CI pipeline

Repository structure

src/aegis/
  core/
    prompt/     — detector, state machine, models
    session/    — session manager and lifecycle
    routing/    — prompt router (events → channel, replies → PTY)
    store/      — SQLite database
    audit/      — append-only audit log with hash chaining
    daemon/     — daemon manager (orchestrates all subsystems)
    scheduler/  — TTL sweeper and periodic tasks
  os/tty/       — PTY supervisors (macOS, Linux, Windows stub)
  adapters/     — CLI tool adapters (Claude Code, OpenAI CLI, custom)
  channels/     — notification channels (Telegram, Slack stub)
  cli/          — Click CLI entry point and subcommands
tests/
  unit/         — pure unit tests (no I/O)
  integration/  — SQLite + mocked HTTP
  e2e/          — real PTY + mocked Telegram
  prompt_lab/   — deterministic QA scenario runner
    scenarios/  — QA-001 through QA-020 scenario implementations
docs/           — design documents (see table above)

Core invariants

AtlasBridge guarantees the following regardless of channel, adapter, or concurrency:

  1. No duplicate injection — nonce idempotency via atomic SQL guard
  2. No expired injection — TTL enforced in the database WHERE clause
  3. No cross-session injection — prompt_id + session_id binding checked
  4. No unauthorised injection — allowlisted identities only
  5. No echo loops — 500ms suppression window after every injection
  6. No lost prompts — daemon restart reloads pending prompts from SQLite
  7. Bounded memory — rolling 4096-byte buffer, never unbounded growth

Development

# Install in editable mode with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest tests/

# Run a Prompt Lab scenario
aegis lab run partial-line-prompt

# Lint and format
ruff check . && ruff format --check .

# Type check
mypy src/aegis/

# Full CI equivalent (local)
ruff check . && ruff format --check . && mypy src/aegis/ && pytest tests/ --cov=aegis

Contributing

See CONTRIBUTING.md. All contributions require:

  • Existing tests to remain green
  • New code to have unit tests
  • Prompt Lab scenarios for any PTY/detection changes

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

atlasbridge-0.4.0.tar.gz (59.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

atlasbridge-0.4.0-py3-none-any.whl (74.5 kB view details)

Uploaded Python 3

File details

Details for the file atlasbridge-0.4.0.tar.gz.

File metadata

  • Download URL: atlasbridge-0.4.0.tar.gz
  • Upload date:
  • Size: 59.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for atlasbridge-0.4.0.tar.gz
Algorithm Hash digest
SHA256 f857084df67398ceca67c73b5674401b4abd28b64e8eaee09c01982e94ba1346
MD5 dab6bf8a26e286bd20f8de8a65c2047a
BLAKE2b-256 babdae35a89edbe780d07c71793e8ba86a9f04981043640cb66115afc57a6ebf

See more details on using hashes here.

File details

Details for the file atlasbridge-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: atlasbridge-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 74.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for atlasbridge-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 677dddee89ecc961d1230325795e6e874bfcdfaf4b22716bd51439e4f4035d5d
MD5 4cec1c7d61054737825b9472b51a3157
BLAKE2b-256 bc31c954d85f2bff72ee4ccab03a914f87997b1ca5fb6739b45730923bf75d8d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page