Skip to main content

Anteroom - your gateway to AI conversation

Project description

Anteroom

Anteroom

Your employees are already using ChatGPT. Your compliance team doesn't know.

Give your whole org AI — without giving up control.

Self-hosted AI gateway. Web UI + agentic CLI. Any LLM. No telemetry.
pip install anteroom

PyPI Version Python 3.10+ Coverage Apache 2.0 License

DocsQuick StartWhy Anteroom?Changelog


Anteroom Web UI




The backstory

I'm a CTO at a Fortune 500 in a regulated industry where we can't use third-party AI tools — no ChatGPT, no Claude Code, no Cursor, no Copilot. But we can pip install open-source packages.

So I built Anteroom: a self-hosted AI gateway with a polished web UI for everyone on the team and an agentic CLI for developers. It connects to any OpenAI-compatible API — Azure OpenAI, Ollama, LM Studio, or your company's internal endpoint. Zero telemetry, no phone-home — data only goes to the LLM endpoint you choose. Go fully offline with local models.

JPMorgan built a private AI gateway for 250,000 employees. Goldman Sachs built one for 46,500. Anteroom gives every regulated institution the same capability — without a nine-figure technology budget.




Why Anteroom?

38% of employees paste confidential data into unauthorized AI tools. Marketing teams, executives, and product owners are the worst offenders — not developers. Shadow AI breaches cost $650K+ per incident.

Cloud-hosted AI sends your data to third parties. Self-hosted chat UIs can't actually do anything. Building a custom platform costs millions.

Anteroom threads the needle:

Problem Anteroom
"AI tools send our data to the cloud" Self-hosted. Zero telemetry. Data only goes to the endpoint you choose.
"Chat AI can't actually do things" Agentic: edits files, runs commands, generates documents, creates presentations
"Our compliance team won't approve it" OWASP ASVS L2 security, HMAC-chained audit logs, DLP, bash sandboxing
"It only works for developers" Web UI for everyone + CLI for developers, same governed platform
"We can't control costs at scale" Token budgets per-request, per-user, per-day
"We're locked into one AI vendor" Any OpenAI-compatible API — Azure, Ollama, local models
"It takes months to deploy" pip install anteroom && aroom init — done in 60 seconds



Get running in 60 seconds

pip install anteroom
aroom init          # interactive setup wizard
aroom               # web UI at http://127.0.0.1:8080

That's it. No Docker. No database server. No config files required.

Or use the CLI directly:

aroom chat                              # interactive REPL
aroom exec "summarize this PR" --json   # one-shot for scripts



Two interfaces, one engine

Everything is shared — conversations, tools, storage, security controls, audit trail. The web UI serves the whole organization. The CLI serves developers who want agentic power tools.


Web UI

A full-featured chat interface with projects, folders, tags, file attachments, canvas panels, inline tool approvals, and four built-in themes. Product owners, executives, compliance officers, and marketing teams use this.

Midnight   Ember

Dawn   Aurora


CLI REPL

An agentic terminal with 12 built-in tools (+ 3 optional MS Office tools), MCP integration, sub-agent orchestration, a skills system, and planning mode — all with Rich markdown rendering.

$ aroom chat

anteroom v1.85.0 — the secure AI gateway
  model: gpt-4o | tools: 12 built-in + 3 MCP | safety: ask_for_writes

> Refactor the auth module to use JWT tokens

  Thinking... (12s)

  I'll break this into steps:
  1. Read the current auth implementation
  2. Design the JWT token flow
  3. Implement and test

  read_file  src/auth.py                        ✓
  read_file  src/middleware.py                   ✓
  edit_file  src/auth.py  (+42 -18)             ✓  ⚠ requires approval
  edit_file  src/middleware.py  (+15 -8)        ✓
  bash       pytest tests/unit/test_auth.py     ✓  12 passed

  Done. Refactored auth to use JWT with RS256 signing.
  See the changes in src/auth.py and src/middleware.py.

>

Exec mode

Non-interactive mode for scripts, CI/CD, and automation:

aroom exec "summarize this PR" --json          # structured output
aroom exec "run tests and fix failures" --timeout 300
echo "review this" | aroom exec - --quiet      # pipe stdin



Key capabilities

Agentic, not just chat

The AI reads files, edits code, runs commands, searches your codebase, generates documents, creates presentations, and spawns parallel sub-agents — with safety gates at every step.

Built-in tools: read_file write_file edit_file bash glob_files grep create_canvas update_canvas patch_canvas run_agent ask_user introspect

Optional tools (install with pip install anteroom[office]): docx xlsx pptx — create, read, and edit Word, Excel, and PowerPoint files directly


Packs: shareable AI capabilities

Packs are versioned, git-distributed bundles with 7 artifact types: skills, tools, prompts, templates, hooks, configs, and docs. Build a "compliance pack" with regulatory prompts, a "marketing pack" with brand guidelines, a "DevOps pack" with deployment skills — and share them across teams.

aroom pack install https://github.com/example/compliance-pack
aroom pack list

Packs use a 6-layer precedence system (built-in → global → space → project → conversation → runtime) so departments can customize without weakening security controls.


Spaces: named workspaces

Spaces bundle repositories, tools, configs, and packs into named workspaces. Different teams, different projects, different configurations — centrally governed.

aroom space create my-project --repo ./frontend --repo ./backend
aroom space switch my-project

Enterprise-grade security

Built to OWASP ASVS Level 2 standards. Not bolted on — baked in.

  • Tool safety gate: 4 risk tiers, 4 approval modes, 3 permission scopes
  • 16 hard-block patterns: Catastrophic commands blocked unconditionally
  • Bash sandboxing: Execution timeouts, output limits, path/command blocking, network restrictions
  • Prompt injection defense: Trust classification, defensive XML envelopes, tag breakout prevention
  • Tamper-evident audit log: HMAC-SHA256 chained JSONL, daily rotation, content redaction, SIEM-ready
  • Session hardening: Ed25519 identity, concurrent session limits, IP allowlisting
  • Token budgets: Per-request, per-conversation, per-day limits (cost governance at scale)
  • Sub-agent isolation: Concurrency, depth, iteration, timeout, and output caps
  • Team config enforcement: Lock security settings across the entire organization
  • DLP: Configurable data loss prevention rules

Works with any LLM

Any endpoint that speaks the OpenAI protocol:

  • Azure OpenAI — your enterprise deployment
  • OpenAI — GPT-4o, o1, o3, etc.
  • Ollama / LM Studio — fully offline, fully private
  • vLLM / TGI — self-hosted open models
  • Any OpenAI-compatible API

Extensible via MCP

Connect any Model Context Protocol server. Databases, APIs, file systems, internal services — with per-server trust levels and tool filtering.

# config.yaml
mcp_servers:
  - name: internal-tools
    command: npx
    args: ["-y", "@my-org/internal-tools"]
    trust_level: trusted
  - name: external-api
    command: npx
    args: ["-y", "@third-party/api"]
    trust_level: untrusted

Planning mode

For complex tasks, the AI explores first, writes a plan, then executes only after you approve. Works in both CLI and web UI.

> /plan build a REST API for user management
  Planning... reading codebase, designing approach

> /plan approve
  Executing plan: 8 steps across 5 files...

Knowledge sources

Upload documents (PDFs, DOCX, code) via CLI or web UI drag-and-drop. Text is automatically extracted and indexed for semantic search with local vector embeddings — no external API needed.

pip install anteroom[docs]        # adds PDF/DOCX text extraction
pip install anteroom[embeddings]  # adds local vector search



The full picture

Web UI Conversations, projects, folders, tags, attachments, canvas, themes, keyboard shortcuts
CLI REPL, one-shot, exec mode, planning, skills, @file references, Rich rendering
Tools 12 built-in + 3 optional office tools + unlimited MCP tools, parallel execution, sub-agents
Packs 7 artifact types, 6-layer precedence, git distribution, lock files, health checks
Spaces Workspace management, auto-discovery, repository cloning, per-space config overlays
Security OWASP ASVS L2, CSRF, CSP, HSTS, SRI, rate limiting, DLP, prompt injection defense
Audit HMAC-SHA256 chained JSONL, daily rotation, content redaction, SIEM integration
Storage SQLite + FTS5 + optional vector search, fully local, optional SQLCipher encryption
Config YAML + env vars, ANTEROOM.md conventions, team enforcement, dynamic API key refresh



Development

git clone https://github.com/troylar/anteroom.git
cd anteroom && pip install -e ".[dev]"
pytest tests/ -v                    # 4800+ tests
ruff check src/ tests/              # lint
ruff format src/ tests/             # format

Stack: Python 3.10+ • FastAPI • SQLite • Vanilla JS • Rich • prompt-toolkit • OpenAI SDK • MCP SDK




Contributing

See CONTRIBUTING.md for architecture overview, dev setup, and contribution guidelines. Packs are the easiest way to contribute — no core changes needed.




Apache License 2.0 — free to use, modify, and distribute

An anteroom is the private chamber just outside a larger hall —
a controlled space where you decide who enters and what leaves.

anteroom.readthedocs.ioanteroom.ai

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

anteroom-1.88.0.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

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

anteroom-1.88.0-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

File details

Details for the file anteroom-1.88.0.tar.gz.

File metadata

  • Download URL: anteroom-1.88.0.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for anteroom-1.88.0.tar.gz
Algorithm Hash digest
SHA256 c1eee07b3eb32b41e6cb25f0c83a7e87f2d795af516556b26bbaa6d8ef3c7212
MD5 cd01926c6f5bdbb8ac209af39b0c7eb5
BLAKE2b-256 0a9b8508d3a3b26ebd454419c567570e8cd742b77cc5f278d7487048fdf35669

See more details on using hashes here.

File details

Details for the file anteroom-1.88.0-py3-none-any.whl.

File metadata

  • Download URL: anteroom-1.88.0-py3-none-any.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for anteroom-1.88.0-py3-none-any.whl
Algorithm Hash digest
SHA256 355ec45c90e4e4a1f5b1d7e5160ab8fe0069816858613ec23b3ec29af02068ca
MD5 169edbf37ae78de3d17a533febb848d5
BLAKE2b-256 c8a61446fec164c43c4155a80d579fcedaefde50019d134653333cd86e805aed

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