Knows who is asking.
Validates the token and binds the agent to its organization. Tenant scope comes from the credential, never the request body.
- authorization
- verified
- org_id
- from token
- permissions
- enforced
The boundary between your agent and the model
Tenant-scoped memory, bounded context, and an inspectable trace — self-hosted and OpenAI-compatible.
01 / The boundary
Use IBEX when agents need customer context without crossing tenant lines, or when you need a bounded, inspectable path to any model.
Validates the token and binds the agent to its organization. Tenant scope comes from the credential, never the request body.
Retrieves tenant-scoped memories from PostgreSQL and pgvector, then ranks them without letting another organization’s data into the window.
Calculates a token budget, packs the directive and ranked memories, and degrades to directive-only context when retrieval misses.
Keeps the OpenAI-compatible request shape while OpenAI, Anthropic, OpenAI-compatible, and mock adapters sit behind one boundary.
Forwards provider SSE, normalizes upstream errors, and keeps trace writes off the critical path. Slow-client soak evidence remains open.
Records the route, token usage, and timing with a scope and date. The relay is default-off; this is local evidence, not a hosted guarantee.
02 / Drop-in
Point your client at IBEX instead of the provider. The request stays OpenAI-compatible; auth, tenant scope, memory, and traces move behind the boundary.
Request lifecyclecurl -s -w "\nHTTP %{http_code}\n" \ -X POST "http://localhost:8080/v1/chat/completions" \ -H "Authorization: Bearer $IBEX_TEST_PAT" \ -H "X-IBEX-Agent-ID: $IBEX_TEST_AGENT_ID" \ -H "Content-Type: application/json" \ -d '{"model":"gpt-4o","messages":[{"role":"user","content":"hello"}]}'03 / Evidence
IBEX is G0 and provisional. Capabilities and benchmark numbers are published with a status, a scope, and a date, so you can tell the difference between a working seam and a finished guarantee.
6 of 17 capabilities implemented locally.
13 are implemented or have a running seam. Every status is public, and every claim links back to its evidence. Hosted, HA, and production readiness are not claimed.
Not claimed: production readiness, high availability, a hosted p99 SLO, or restore drills. Local numbers keep their scope and date.
Start with mock mode
Start Postgres, Redis, and the services with Docker Compose. Mock mode returns a response without a provider key, so you can inspect a request before connecting a model.
Clone the repository and copy the example environment.
Postgres, Redis, and the local services come up together.
Migrate, seed, and run the smoke path in mock mode.
The full quickstart covers separate service terminals and real provider keys.
git clone https://github.com/Rick1330/ibex-harness.gitcd ibex-harnesscp .env.example .envmake compose-dev-upmake db-migratemake db-seedmake dev-smoke