The self-hosted AI gateway

One gateway between your people and every AI provider.

Janus Edge speaks the OpenAI API, so the tools your teams already use keep working without changes. Every request is checked against your single sign-on, priced at the provider's real rate, attributed to a person and a team, and logged. It all runs on your own network, and prompts are never stored unless you ask.

Free for up to 25 people. Works with OpenAI, Anthropic, AWS Bedrock, Google Vertex, Ollama and any OpenAI-compatible server.

Janus Edge personal dashboard showing one user’s AI requests, cost and quota, with demo data
A dashboard for every person

See usage trends, throughput, costs, and remaining quota without asking an administrator.

Actual Janus interface · Demo identities and synthetic usage
Where it sits

Every AI request passes through one checkpoint you control.

Janus Edge runs on your network, between the people and apps that use AI and the models that answer them. It speaks the same API as OpenAI, so nothing on either side needs to change. What changes is that every request now has a name on it, a limit around it and a price next to it.

Where Janus Edge sits People and apps on your network send AI requests to Janus Edge. Janus checks who is asking, whether they are allowed the model, whether they have budget, and whether the prompt contains secrets. Then it forwards the request to a cloud provider or a model on your own GPUs and records the cost. YOUR NETWORK CLOUD PROVIDERS PRPriyaEngineering · coding agent MAMarcusSupport · chat assistant DADanaFinance · notebook CIrelease-botCI pipeline · service token Janus Edge checks every request, in order Who is asking?Single sign-on identity Are they allowed this model?Grants Is there budget left?Quotas Anything secret in the prompt?Guardrails What did it cost?Metering and audit log OpenAI Anthropic AWS Bedrock Google Vertex Your GPUsOllama · vLLM · TEInever leaves the site Requests leave your network only after every check passes. Where Janus Edge sits: people and apps send requests through Janus, which checks identity, grants, budget and secrets before forwarding to your own GPUs or to cloud providers. YOUR NETWORK PriyaEngineering MarcusSupport DanaFinance release-botCI pipeline Janus Edge Who is asking?Single sign-on Allowed this model?Grants Budget left?Quotas Anything secret?Guardrails What did it cost?Metering and audit Your GPUsOllama · vLLM · TEI, stays on site CLOUD PROVIDERSOpenAI · AnthropicBedrock · Vertex
Requests from people, notebooks, agents and CI jobs all go through the same checks. Traffic to your own GPUs never leaves the building.
Why you need it

Ten problems you hit the day AI goes company-wide.

Handing out provider API keys works for a pilot. Once hundreds of people and a dozen internal tools are calling models, the same questions come up at every company. Here is how Janus answers each one.

01 · Cost you can explain

A provider key tells you what you spent. Not who spent it.

When everyone shares an API key from OpenAI or Anthropic, you get one invoice at the end of the month and no way to explain it.

You can't tell which team drove the bill, which script is looping all weekend, or whether anyone is getting value out of it. Janus gives every person, team and service its own key and meters each request at the provider's real price, so the invoice comes with a breakdown and you can set budgets before the money is spent, not after.

How metering works →
With one shared provider key you get one invoice and no idea who spent it. With Janus, the same $48,210 is broken down by team. ONE SHARED PROVIDER KEY PR MA DA one key Provider INVOICE $48,210 Who used it? On what? WITH JANUS PR MA DA own keys Janus SPEND BY TEAM Engineering$21.4k Data science$10.9k Support$9.8k Marketing$6.1k
02 · Grants

Keep the most expensive models for the work that needs them.

The best frontier models can cost many times more than a fast model that writes a perfectly good email.

Grants let you decide who gets which model. Engineering and data science can have the frontier model for hard problems, while everyone else gets fast, inexpensive models for day-to-day writing. Nobody gets a model just by signing in, and a request for a model someone hasn't been granted is refused with a clear message.

How grants work →
A grants matrix: Engineering and Data science can use the frontier model; Support and Marketing get the fast model; everyone gets the small and self-hosted models. Frontier$$$$ Fast$$ Small$ On siteyour GPUs Engineering Data science Support Marketing Everyone Marketing asks the frontier model to draft an email. Refused, because Marketing isn't granted that model. The fast model writes the same email for a fraction of the cost.
03 · Managed models

Models change every month. Your apps shouldn't have to.

New models launch constantly, prices drop, and older versions get retired. Nobody else in the company should have to keep up.

With managed models, your AI specialists watch the landscape and choose the right model for each job. Apps call a stable name such as chat-default, and when something better or cheaper comes along, the team points that name at the new model. Every app picks it up at once, without a code change. New models stay switched off until someone has tried them.

How managed models work →
Three apps all call the stable name chat-default. Over time the AI team repoints chat-default from Model A to the cheaper Model B and then the faster Model C, while a preview Model D stays disabled. Support bot Code review Docs search chat-default the name apps use Model Athe old default Model Bhalf the price Model Cfaster, smarter Model Dpreview · off The apps never change. Your AI team decides what chat-default means.
04 · Janus Chat

Most people want a chat window, not an API key.

A separate chat app needs its own accounts and its own copy of your rules, and nobody can see what its traffic costs.

Janus Chat is built into the gateway. People sign in as they already do and chat with the models they are granted, and every message gets the same grants, quotas, security checks and metering as an API call. Models on your own GPUs can search the web through Janus and cite their sources, and people can attach files, compare models side by side or ask for a picture. Chats are encrypted, and administrators can't read them. Chat is a preview in this release.

How Janus Chat works →
Grace asks Janus Chat whether a new Go release is worth upgrading to. Before the model sees the message, Janus checks her grant, her quota and the security policy. The model on your own GPUs searches the web through Janus, answers with three sources, and the reply is metered: 3,692 tokens in, 585 out, a quarter of a cent. Chats are encrypted and administrators cannot read them. JANUS CHAT · GRACE Is the new Go point release worth upgrading to this week? The same checks as every API call Grant Quota Policy Metered LLAMA-3.3-70B · YOUR GPUS Searched the web · 3 sources Yes: Go 1.27.3 fixes two security issues. Bump the toolchain line and rebuild. go.dev · golang-announce · go.dev/doc 3,692 in · 585 out · $0.0026 · 645 tok/s Encrypted at rest. Administrators can't read anyone's chats.
05 · Auto-routing

People shouldn't have to pick the right model. Janus can.

Most people send everything to the one model they know, so legal questions leave the building and simple emails go to the most expensive model you have.

A router is a model name like auto/assist. For each request a fast classifier decides what kind of work it is and how hard, and Janus sends it to the model you chose for that work: contract questions to a model on your own GPUs, hard coding to a frontier model that thinks hard, everyday writing to a small, cheap one. Each route can add its own instructions too, such as a house style for legal answers or a reminder to cite sources. Try a router in shadow first, then let a judge model compare its answers with the default's on real traffic before you switch it on.

How auto-routing works →
Three requests all ask for the router auto/assist. A classifier labels each one with a category and difficulty: a contract question goes to a model on your own GPUs, a hard coding task goes to a frontier model with high thinking, and a quick email goes to a small, fast model. Anything the classifier is unsure about goes to the default. Legal team“Check this clause” Engineer“Lock-free queue” Sales“Polish this email” auto/assist category difficulty ~150 ms Legal, on-premyour own GPUs Hard codingfrontier, thinks hard Easy writingsmall, fast model One name, the right model for each request. Unsure, slow or no route fits: the default answers. Routing never fails a request.
06 · Usage insights

Find out what people actually use AI for, without reading their prompts.

Leadership asks what the AI budget buys. Token counts don't say whether people are writing code, drafting contracts or asking for recipes.

Janus labels each request with a category such as Coding, Legal or Data analysis and keeps only the label, never the prompt. Reports show the mix over time, by team and by model, so decisions about models, training and policy rest on how AI is really used. Labelling runs in the background and adds no wait to the request.

How usage insights work →
Requests pass through Janus, which keeps only a category label for each, never the prompt. Over a month the labels add up to a breakdown: coding 31 percent, writing and editing 18 percent, data analysis 12 percent, technical help 10 percent, legal 6 percent and everything else 23 percent. “Why does this Go test race?” prompt: not stored KEPT coding › go Last 30 days 9,000 requests labelled no prompts kept Adds no wait: labelling runs after the request Coding31% Writing and editing18% Data analysis12% Technical help10% Legal6% 18 other categories23% By team, by model and over time: what AI is actually used for, before you choose models, training or policies.
07 · Security

Stop passwords and tokens before they leave your network.

People paste config files, stack traces and logs into AI tools every day, and credentials come along for the ride.

Janus inspects each prompt at your network edge. When it finds a password, an API key or a cloud credential, it either removes the secret and sends the rest, or blocks the request outright and tells the person why. Either way, the secret never reaches an outside provider, and the decision is recorded for your security team. Redacting and blocking are Business features; Community detects and reports.

How the guardrails work →
A prompt containing a database password and a cloud secret key reaches Janus at your network edge. Janus either redacts the secrets and sends the rest, or blocks the request so nothing is sent. PROMPT FROM PRIYA Why won't this connect? export DB_PASSWORD=Hunter2!prod aws_secret_access_key=wJalrXUtnFEMI… password cloud secret YOUR NETWORK EDGE Janus checks REDACT export DB_PASSWORD= [REDACTED] aws_secret_access_key= [REDACTED] The rest of the prompt goes to the provider. BLOCK Request blocked Priya is told to remove the credentials and retry. Nothing was sent.
08 · Child Safety

Let children learn with AI without it doing their homework.

Families and schools want children to use AI, but not to have essays written for them, overshare, or be left alone when something is wrong.

Child Safety puts rules on the child, not on the app or the model, so they cover every model the child can use, including ones added later. Each age range decides what happens for six kinds of request. Homework gets a tutor that helps without giving the answer away, a child who seems low gets a kind reply that points to a trusted adult while you get a note, and the critical safety categories are always blocked in both directions. Child Safety is free on every edition.

How Child Safety works →
Child Safety reads each message from a child and answers by their age range. Maya, in the Kids range, asks for her essay to be written and gets a tutor that helps her start instead. When she says nobody likes her at school, Janus answers kindly itself, points her to a trusted adult and the 988 Lifeline, and tells the parent she may need support without saying what she wrote. Leo, in the Little kids range, asks how to turn off screen time and gets a kind no. The rules follow the child to every model they can use. "Can you write my essay on volcanoes?" Maya · Kids (9–12) · Homework done for them TUTOR Helps her start. Never the finished essay. "nobody likes me at school" Maya · Kids (9–12) · Feeling low or unsafe SUPPORT A kind reply, 988 Lifeline; you get a note. "how do I turn off screen time?" Leo · Little kids (8 and under) · Parental controls BLOCK A kind no, with no steps or tricks. The rules follow the child to every model Organization models, personal plans, models added later. Sexual content, weapons and self-harm always block, in what they send and in what the model answers.
09 · Unified access

One key for cloud models and the ones on your own GPUs.

Teams end up juggling a different endpoint, SDK and key for every provider, plus another set for the models you host yourself.

Janus puts all of them behind a single endpoint and a single key. Cloud models from OpenAI, Anthropic, Bedrock and Vertex sit next to self-hosted models on Ollama, vLLM or TEI, and the model name decides where each request goes. Sensitive work can stay on your own hardware without anyone learning a new tool.

Supported providers →
One OpenAI client with one Janus key calls claude-sonnet, which goes to a cloud provider, and llama-local and bge, which run on your own GPUs. client = OpenAI( base_url= "https://ai.corp/v1", api_key="je_7f3c…") client.chat( model="claude-sonnet") client.chat( model="llama-local") client.embed(model="bge") Janus CloudOpenAIAnthropicBedrock Your GPUsOllamavLLMTEI One key, one endpoint, every model. The model name decides where each request goes.
10 · Troubleshooting mode

When an AI feature breaks, see exactly what the model saw.

A failed AI call is hard to debug from a status code. The cause is usually buried in a system prompt, a tool definition or a message three turns back.

Janus doesn't store prompts by default. When something isn't working, an administrator turns on a troubleshooting capture for a set time, limited to a team, a model or just the errors. Janus records the entire context, including system prompt, messages, tool calls and the provider's response. Once you've found the problem, one button purges the lot.

How captures work →
A support bot request fails with a 400 error. An administrator turns on a troubleshooting capture limited to the Support team and errors for 30 minutes, and the captured request shows the full system prompt, messages, tools and the provider's error. REQUESTS 200chat · support-bot1.2 s 200embeddings · docs-search0.3 s 400chat · support-bottool call rejected Troubleshooting capture team = Support · errors only 30 min CAPTURED REQUEST system: You are Acme's support assistant. user: Refund order #4417, it arrived broken. tools: lookup_order, issue_refund assistant → issue_refund( amount: "$40.00") provider 400: amount must be a number The whole context in one place. Purge it when you're done.
Why the name

Janus looked two ways at once. So does this gateway.

The Roman god of gateways had one face turned inward and one turned outward. Janus Edge works the same way: it watches over the people using AI on one side and the providers serving it on the other, and it keeps both honest.

Inward, toward your people

People sign in once and see only what they've been given.

Janus uses the identity provider you already run, whether that's Okta, Entra ID, Authentik, Keycloak or AD FS. Signing in doesn't grant anything by itself; access to each model is something an administrator hands out.

  • Personal API tokens people can create and revoke themselves
  • Team tokens for CI jobs, agents and internal apps
  • Quota warnings at 80% and 95%, well before anyone hits a wall
  • Any OpenAI-compatible client, from IDEs to notebooks to scripts

Outward, toward your providers

Every provider behind one API, at the prices you actually pay.

One catalog covers OpenAI, Anthropic, AWS Bedrock, Google Vertex, Ollama, Hugging Face TEI and any OpenAI-compatible server. Janus translates between them, so your clients only ever need to speak one API.

  • Chat, embeddings, images, audio, Responses, Assistants and files, streamed without buffering
  • Automatic fallback when a model or provider goes down Business
  • Pools that spread work across your own GPU servers by live load Business
  • Routers that pick the model for each request and add their own instructions, with a judge checking the routes on real traffic
  • One reasoning setting from your chat client, fitted to what each provider accepts
  • People can bring the ChatGPT, Copilot, Grok or Mistral plan they already pay for
  • Passwords and API keys caught in prompts; redacted or blocked on Business
  • Prompt-injection and content-safety checks from one decision model, with safety categories you write yourself
  • Cost by user, team and token, with CSV export

Yours to run, with nothing phoning home.

Janus Edge is a single Go binary with the admin interface built in. Install the Linux release or try it in Docker, and when you're ready for production, point it at PostgreSQL. Air-gapped networks are an ordinary deployment for us, not a special case.

Read the install guide
Install
Linux server installer with HTTPS, Helm chart or Docker image, plus image files for registries with no internet access
Database
SQLite to evaluate, PostgreSQL in production
Prompts
Not stored. Troubleshooting captures are opt-in and time-limited.
Licensing
Signed license files, verified offline on the gateway
Source
Readable and auditable under the Elastic License 2.0

Start free with up to 25 people. Buy Business from 5 seats when you need its features.

Business adds SCIM and directory sync, high availability, guardrail enforcement and the FIPS edition, for a team of any size. There's no sales call to get started and no fee tied to your AI spend. When you need a contract, air-gapped licensing or an SLA, talk to us about Enterprise.