Version prompts, route LLM calls, trace and evaluate — one platform.
AcruxCore is an open-source, Apache-2.0, self-hostable LLMOps platform for engineering teams. It sits between your app and the model providers you connect — so you ship, change, and measure LLM features without redeploying to move a prompt.
Watch
The whole platform in two and a half minutes.
One thread, end to end: a versioned prompt, the gateway call that renders it, the trace that call produced, an agent traced over OpenTelemetry without the gateway, and a thumbs-down that becomes a scored fix — shipped by moving an alias. Recorded against a live instance, not a mockup.
- Category
- LLMOps platform — prompts, gateway, tracing, tools, evaluation, audit trail
- Licence
- Apache 2.0, with no enterprise-only directory
- Deployment
- Hosted, or self-hosted with docker compose up — the same code either way
- SDKs
- TypeScript (@acruxcoreai/sdk) and Python (acruxcore)
- Price
- Self-hosted is free, always. The hosted platform is free during beta. Bring your own provider keys; no markup on tokens
- Audit trail
- Every change recorded with the person who made it — keys, members, roles, gateway, secrets, prompts and tools — on every plan and when self-hosted. What the trail records
- Best for
- Teams that want the gateway in the request path, so budgets, caching and virtual keys have a call to act on
The round-trip
From a bad answer to a fixed prompt — without leaving the app.
Follow one thread across the whole platform. Open the trace behind a bad answer, widen to the session it belonged to, rate the span that missed, and jump straight to the exact prompt version that produced it. Fix it — or let the optimizer draft the fix — score it against the cases it got wrong, then move the production alias. The promotion is recorded, so the change has a name against it. No redeploy, no context-switch, no leaving AcruxCore.
Trace
Model, tokens, latency, cost on every call.
Session
Widen to the whole agent run, span by span.
Feedback
Rate the span that missed; flag the failure.
Prompt version
Jump to the exact version that produced it.
Edit & save
Fix the template, commit a new version.
Score the fix
Run it against the cases that failed, or let the optimizer draft candidates.
Promote alias
Move 'production' to the version that won. No redeploy.
Audit trail
Who promoted what, and when — recorded for the whole team.
Step 8 loops back to step 1 — the fix is already live the next time that session runs.
The platform
Six parts of the LLM stack, one control plane.
Each piece works on its own and composes with the rest. Adopt what you need, no rip-and-replace — prompts, tracing and tools do not need your traffic routed through us at all.
Prompts
A prompt management platform for versioned, templated message sets. Move a production alias between versions without redeploying your app.
Explore promptsGateway
An LLM gateway that speaks OpenAI to every provider you connect. Bring your own keys; get routing, fallbacks, cost and caching.
Explore gatewayTracing
LLM observability for every call — spans for model, tokens, latency and cost. Or export your own spans over OpenTelemetry.
Explore tracingTools
LLM tool calling from a versioned catalog: functions bound to a prompt alias and handed to the model.
Explore toolsEvaluation
An LLM evaluation platform: score prompt versions and models on a dataset, judge live traffic on a standing rule, and optimize the next version.
Explore evaluationAudit
An audit log of every recorded action — keys, members, gateway, secrets, prompts and tools — filtered by area, event or actor.
Explore auditHow it works
Wired in three steps.
Install the SDK
One client for prompts, gateway, and tracing — TypeScript (Node 18+) or Python (3.9+). Zero config beyond your key.
npm i @acruxcoreai/sdk
pip install acruxcorePoint your LLM calls at AcruxCore
One method routes, traces, and prices every call — or swap the base URL and your existing OpenAI client keeps working.
const result = await hub.gateway.chat({
model: 'gpt-4o',
messages: [{ role: 'user', content: 'Hi' }],
});Watch it all in one dashboard
Prompts, cost, latency, and quality land in a single control plane — live.
const { data } = await hub.traces.list({
sessionId: 'support-1234',
});Why AcruxCore
Why teams switch.
- Change prompts without a deploy. Move the production alias: the next render returns it, and SDK callers pick it up within their cache window.
- Drop-in gateway. OpenAI-compatible, so your current client and code paths stay put.
- TypeScript and Python SDKs. First-class async clients for both — same prompts, gateway, tool loops, and tracing — plus a plain REST API.
- Every call is a trace. Spans for model, tokens, latency, and cost — automatic through the gateway, or over OpenTelemetry.
- Prove a change before you ship it. Score prompt versions and models against a dataset, or let the optimizer draft the rewrites and rank them.
- Guardrails on spend and failure. Budgets and per-key rate limits, an ordered fallback chain per model, and caching you switch on per key.
- Every change has a name against it. A team-wide audit trail of keys, members, gateway, secrets, prompts and tools — filter it by area, event or person.
- Own your keys and data. Bring your own provider keys, or self-host the whole platform.
- Open source. Apache License 2.0 — read the code, self-host it, or send a pull request.
Open source
Nothing about the platform is a black box.
The API, gateway, dashboard, and both SDKs are public on GitHub under the Apache License 2.0. Read exactly how a call gets routed and priced, run the whole stack on your own infrastructure, or send a pull request.
Audit every call
Read exactly how a prompt renders and a call gets priced — no black box between your app and the model.
Self-host on your infra
Run the API, gateway, and dashboard against your own database — your keys, your data, your network.
Apache License 2.0
Permissive and OSI-approved, with nothing gated — fork it, contribute back, or just read the source.