Skip to content
v0.8.4stable

What Halro is and its object model

Halro is a self-hosted LLM gateway delivered as one Go binary. It sits between applications and upstream model services and centralizes credentials, budgets, routing, redaction, audit, and usage accounting—without an external database, cache, CDN, or browser-stored secrets.

Credential → Provider → Deployment → Route → Project → Gateway Key
Model invocation chain
ObjectMeaning
CredentialUpstream Provider secret, stored with AES-256-GCM encryption
ProviderOne upstream access point bound to an immutable Provider Profile
Deployment“What this model on this Provider can do”
RouteMaps a public alias to one or more Deployments
ProjectOwnership unit for budget, rate limits, CIDR, Token Guard, and redaction policy
Gateway KeyApplication credential prefixed with gw_

Applications see only a Gateway Key and a Route model alias. They do not know the upstream Provider, actual target ID, or Provider Credential—by design.

From v0.8.2, a Provider may select an Admin-managed Outbound Proxy. It is an optional egress path, not a business object in the chain. Proxy authentication is Vault-encrypted and failure never silently falls back to direct connection. A Route spanning proxied and direct Providers crosses egress trust boundaries and requires explicit fallback review.

Work Unit → Run → Request → Provider Attempt
└──────────────────────────────→ Outcome
Run Governance chain
ObjectMeaningAuthority
Work UnitWork whose final business result should count once, such as a ticket or code repairAccounting Ledger
RunOne execution of the Work Unit, containing multiple requests, retries, and fallbackAccounting Ledger
Request / AttemptOne client request and its one or more Provider callsAccounting Ledger and derived Usage views
OutcomeStructured business result submitted by a trusted evaluator under the frozen Definition versionGovernance Journal

One Work Unit can have multiple Runs. A failed first execution can close and restart in a new Run; the final result counts once, while unit-result cost includes every Attempt from every Run.

Halro does not orchestrate agents or decide business success. Before Provider I/O it enforces both Project and Run budget admission, preserves auditable cost attribution, and joins cost with Outcome by Work Unit at report time.

Client / SDK → protocol facade (OpenAI / Anthropic compatible)
→ authentication / policy / budget / redaction / accounting
→ capability-aware routing → versioned Provider Profile
→ SafeTransport → upstream

Two invariants matter: budget reservation is durable before an upstream request is sent, and once response bytes are visible to the client, Halro never silently switches Provider.

Continue with First Admin Console setup to build the first real chain.