Beta·Open source·LLMOps platform for engineering teams

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.

agent.ts
import acruxcore from '@acruxcoreai/sdk';

const hub = new acruxcore({ apiKey });

// move 'production' between versions

// — no redeploy of your app

const { messages, tools } = await hub.prompts.render(
  'support-agent',
  'production',
  { ticket },
);

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.

2 min 32 s · captions on · recorded against a live instance
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.

01

Trace

Model, tokens, latency, cost on every call.

02

Session

Widen to the whole agent run, span by span.

03

Feedback

Rate the span that missed; flag the failure.

04

Prompt version

Jump to the exact version that produced it.

05

Edit & save

Fix the template, commit a new version.

06

Score the fix

Run it against the cases that failed, or let the optimizer draft candidates.

07

Promote alias

Move 'production' to the version that won. No redeploy.

08

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 prompts

Gateway

An LLM gateway that speaks OpenAI to every provider you connect. Bring your own keys; get routing, fallbacks, cost and caching.

Explore gateway

Tracing

LLM observability for every call — spans for model, tokens, latency and cost. Or export your own spans over OpenTelemetry.

Explore tracing

Tools

LLM tool calling from a versioned catalog: functions bound to a prompt alias and handed to the model.

Explore tools

Evaluation

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 evaluation

Audit

An audit log of every recorded action — keys, members, gateway, secrets, prompts and tools — filtered by area, event or actor.

Explore audit

How it works

Wired in three steps.

1

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 acruxcore
2

Point 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' }], });
3

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.
Explore the SDKs
import acruxcore from '@acruxcoreai/sdk';

const hub = new acruxcore({ apiKey });

// rendered prompt + its attached tools

const { messages, tools } =
  await hub.prompts.render('support-agent', 'production', { ticket });

// gateway routes, prices & traces the loop

const result = await hub.gateway.runToolLoop({
  model: 'gpt-4o', messages, toolDefs: tools, dispatch,
});

console.log(result.content);   // final answer
console.log(result.traceId);   // spans + cost

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.

Start free. Ship the first prompt today.

No credit card required. Start on the hosted platform, or self-host the whole stack — your keys, your data.