Sovereignty
Your data never leaves EU jurisdiction. Every request is traceable end-to-end.
Visual content goes here (RequestTrace, chat panel, table, etc.)
Every section component in src/components/, rendered live.
Example eyebrow
This is a lede paragraph for the SectionHeader component, shown in its default centered alignment.
Example eyebrow
Same component with align='left'.
Get started
Run frontier open-weight models on European hardware. One endpoint, zero data retention.
A managed inference platform for frontier open-weight models on EU infrastructure.
No. Zero data retention. Your prompts and completions are never stored or used for training.
corti-s1, s1-instant, s1-mini, s1-mini-instant, and s1-embedding.
Sovereignty
Your data never leaves EU jurisdiction. Every request is traceable end-to-end.
Visual content goes here (RequestTrace, chat panel, table, etc.)
Privacy
Zero data retention. No training on your prompts. Verifiable GPU attestation.
Another visual block slot.
Corti Models
One OpenAI-compatible API on EU infrastructure we own from the metal up. $50 free credits, first call in five minutes.
corti · v1.4.2 · models init ◆ Which models should Corti offer? ranked; the top selected model is the default ▸ ■ corti-s1 256K default ■ corti-s1-instant 256K ■ corti-s1-mini 256K ■ corti-s1-mini-instant 256K ■ corti-s1-embedding 16K ✓ creds model 2/5 tools scope planPay for tokens, not seats. One credit balance from prototype to production.
180 ms to first token, 118.5 tokens a second on corti-s1.
Attestation before inference. Isolation enforced by hardware, not policy.
ISO 27001, ISO 42001, GDPR, NIS2, DORA, EU AI Act. No US cloud in the request path.
Use Corti Models
Path 01
Point OpenCode, Crush, or Pi at Corti Models with the CLI. Same workflow.
# run the setup wizardnpx @corti/cli models init # load credentials, then launch your agentset -a; . ~/.env; set +aopencodePath 02
Point your OpenAI SDK at Corti Models with a new URL and key. Same code.
client = OpenAI( base_url="https://ai.eu.corti.app/v1", api_key="<your-api-key>") r = client.chat.completions.create( model="corti-s1", messages=msgs)Switching is easy
SDK, prompts, and evals stay. A new base URL and key put inference on EU hardware. The compatibility that makes arriving cheap makes leaving cheap.
The lineup
| Model | Reasoning | Input | Cached input | Output |
|---|---|---|---|---|
corti-s1recommended Complex agentic coding and repo-wide refactors | Yes | $2.00 / MTok | $0.20 / MTok | $8.00 / MTok |
corti-s1-instant Fast interactive coding and inline completion | No | $2.00 / MTok | $0.20 / MTok | $8.00 / MTok |
corti-s1-mini High-volume review, tests, and refactors | Yes | $1.00 / MTok | $0.10 / MTok | $4.00 / MTok |
corti-s1-mini-instant Cost-sensitive completion at scale | No | $1.00 / MTok | $0.10 / MTok | $4.00 / MTok |
corti-s1-embedding Codebase search, retrieval, and indexing | n/a | $0.03 / MTok | — | no output charge |
Verifiable at every layer
Attestation runs before inference, so isolation is enforced by hardware, not a policy clause. There is no US cloud in the request path. Infrastructure code is open source on GitHub for anyone to review.
Private by architecture
Prompts and completions process in memory and end with the request. Nothing is retained, trains a model, or is visible to another tenant. Access, budget, and residency stay under central control, on sovereign cloud or on-prem, with ISO 27001, ISO 42001, GDPR, NIS2, DORA, and EU AI Act posture by default.
Pricing
Per-seat coding assistants charge whether developers use them or not. We charge for what runs, at European infrastructure cost.
Difference of $187,200 a year, before the procurement and compliance overhead you stop paying for.
Everything considered
Anyone can download a model. Running it for regulated production is the hard part. Corti evaluates and operates the best available open weights models as the market moves, without you rebuilding integrations every leaderboard cycle.
Five endpoints. corti-s1 is the flagship reasoning model. corti-s1-instant is the same weights tuned for low latency. corti-s1-mini and corti-s1-mini-instant are the smaller, cheaper variants. A separate endpoint handles embeddings.
A reseller changes who invoices you. The inference still runs under US jurisdiction. Corti operates the hardware, so your request is processed on machines we run, in Europe, under European law.
Yes. Most teams swap a base URL and an API key and are running in an afternoon. The compatibility that makes adoption cheap also makes exit cheap.
On some work it is, and we'll tell you where. For most production volume (coding, extraction, classification, routing) the gap has closed and the economics haven't. Most teams run both and send us the volume.
An open-weight model is a starting point, not a product. Before your request touches it, three things happen: we evaluate candidate models against defined suites, harden the ones that pass through tuning, compression, and grading, and serve them on infrastructure we operate. If selection, tuning, serving, and hardware were easy, self-hosting would work. Mostly it doesn't. The teams who try spend months on it and still ship a model that fails on real work. That's the layer Corti owns.
No. Prompts and completions are never stored, logged, or used for training. Hardware attestation verifies isolation before every inference. When the request finishes, the data is gone.
You keep calling corti-s1. We upgrade the weights behind that ID when a stronger model clears our bar. No code change. We tell you what changed.
A base URL and a key. Teams typically have a working integration in an afternoon and a governance model in a few weeks.
Moving off Corti is the same base URL change as moving on. We don't hold your prompts, completions, or tuning data. The compatibility that makes adoption cheap makes exit cheap.
Sovereignty is about who operates the infrastructure, not where the research was done. Open weights are a static artefact. No data reaches the original developer.
Quickstart
Create a key, change the base URL, make the call. OpenAI-compatible - any existing SDK works without a rewrite.
curl https://ai.eu.corti.app/v1/chat/completions \ -H "Authorization: Bearer $CORTI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "corti-s1", "messages": [ {"role": "user", "content": "Refactor this function"} ] }'