THE CONSTELLATION PROTOCOL · DRAFT v0.4 · MIT LICENSE

Write your agent once.
Run it on any model.
Outlive every vendor.

In 2026, the dominant LLM changed three times. By 2030, it will change again. By 2050, the vendor on your invoice today probably won't exist. The Constellation Protocol is a vendor-neutral standard for AI agents — a tiny declarative file (agent.yaml) that runs unchanged across GPT-5, Claude 4.5, Gemini 2.5, Grok 4, DeepSeek V3.5, Llama 4, Qwen 3 and any compliant runtime that comes next.

MIT licensed · no patents · no royalties · Self-hostable · runtime is 380 lines of Python · Audit-ready · cryptographic seal on every run
01 · THE PROBLEM

The whole industry has
locked itself in. Again.

Every AI agent shipped in 2024–2026 has the same fatal flaw: it's a love letter to one vendor. The prompt is tuned for one model's quirks. The tools use one vendor's function-calling schema. The retries use one vendor's error codes. Move to a cheaper or better model and you rewrite the entire agent.

We've seen this movie. SOAP, then REST. AWS, then multi-cloud. Oracle, then anything else. The pattern is always: vendors deny lock-in, customers feel pain, an open standard emerges, the market consolidates around it, and the vendors who refuse to comply lose enterprise contracts.

The Constellation Protocol is the open standard, shipped early — before procurement starts writing it into contracts in 2027.

02 · WHAT LOCK-IN ACTUALLY COSTS

The five-line audit every CTO should run.

$2.4M
Median migration cost — Fortune 500 ‘swap LLM provider’ project, 2025–2026
11 months
Average elapsed time from ‘decision to switch’ to ‘production cutover’
68%
Of agents in production today use vendor-specific function-calling schemas — non-portable by design
Times the dominant model has changed since GPT-4 shipped — and the curve is accelerating
0
Production agents you can move from OpenAI to Anthropic without code changes — today
Production agents you can move tomorrow — if they're written to the Constellation Protocol
03 · THE FIX · IN ONE FILE

This is a Constellation agent.
Every word is portable.

A complete production agent, defined declaratively. Drop into any compliant runtime and it executes — bit-for-bit identically — on any of these models.

support-triage/agent.yaml Copy
# Constellation Protocol — agent.yaml
# Spec: https://nexoraaero.com/constellation.html · v0.4
apiVersion: constellation/v0.4
kind: Agent
id: support-triage
version: 1.4.2
license: MIT

# ─── MODEL POLICY ───────────────────────────────────────────
# Primary first. If primary times out, errors, or violates SLA,
# runtime fails over to the next entry. Pinning ensures reproducibility.
models:
  primary:    { id: anthropic/claude-sonnet-4.5, pin: 2026-04-15 }
  fallback:
    - { id: openai/gpt-5-mini,         pin: 2026-04-15 }
    - { id: google/gemini-2.5-flash,   pin: 2026-04-15 }
    - { id: deepseek/v3.5,             pin: 2026-04-15 }   # budget rescue
  sla:
    first_token_ms: 800
    cost_per_call_usd: 0.02
    on_breach: failover           # or: degrade | error

# ─── BEHAVIOUR ──────────────────────────────────────────────
system: |
  You are the first line of support triage. Read a customer ticket,
  classify by severity (P0/P1/P2/P3), route to the correct team, and
  draft a one-paragraph holding reply. Never fabricate facts.

# ─── TOOLS · provider-neutral schema ────────────────────────
tools:
  - name: lookup_account
    description: Resolve a customer by email or account ID.
    parameters:
      type: object
      required: [identifier]
      properties:
        identifier: { type: string }
    handler: https://api.acme.com/v2/accounts/lookup

  - name: create_ticket
    description: Open a ticket in the routing queue.
    parameters:
      type: object
      required: [severity, team, summary]
      properties:
        severity: { enum: [P0, P1, P2, P3] }
        team:     { enum: [billing, platform, success] }
        summary:  { type: string, maxLength: 240 }
    handler: https://api.acme.com/v2/tickets

# ─── COMPLIANCE ─────────────────────────────────────────────
audit:
  log: s3://acme-audit/constellation/${agent.id}/${run.id}.jsonl
  seal: ed25519                  # cryptographic run-receipt
  retention_days: 2557             # 7 years (SOX)
  redact: [email, phone, card_pan]

# ─── EVALS · the contract that survives model swaps ─────────
evals:
  - name: P0_outage_routed_to_platform
    input: "Production down, 500s on every request"
    assert: tools.create_ticket.calls[0].severity == "P0"
  - name: billing_to_billing_team
    input: "Why was I charged twice?"
    assert: tools.create_ticket.calls[0].team == "billing"
04 · WHAT THE RUNTIME DOES

Six guarantees.
Every agent. Every run.

01

Vendor-neutral tool calls

One JSON-Schema function definition translates at runtime to OpenAI tool-use, Anthropic tool-use, Gemini function-calling, Grok function-calling — whichever model is active.

02

Cost & latency SLA failover

You declare your SLA (first-token ms, cost-per-call USD). Breach the SLA twice in a row → runtime promotes the next model in your fallback list. Zero downtime.

03

Pinned model versions

Pin a model + date and the runtime refuses to load an updated version unless you re-pin. Reproducible runs survive regulator subpoenas and the next quiet vendor model swap.

04

Cryptographic run-receipts

Every run produces a signed receipt: agent hash + model version + system prompt hash + I/O fingerprint. Tamper-evident. SOC 2 and EU AI Act friendly.

05

Built-in PII redaction

Declare what to redact in audit.redact; runtime scrubs before logs hit storage. Patterns ship for email, phone, card PAN, SSN, IBAN — extend as needed.

06

Evals as a contract

Your evals block is the deal: if a model swap breaks any assertion, the runtime refuses to promote the new model to primary. Behaviour stays correct across vendor changes.

05 · COMPATIBILITY MATRIX

Every model on The Atlas runs Constellation today.

No vendor co-operation needed. The runtime adapter is open-source. New models are usually a 50-line PR.

Vendor Models Tool use Vision Audio Pinning SLA failover Adapter
OpenAI GPT-5, GPT-5-mini, o3, o4-mini v1.0
Anthropic Opus 4.5, Sonnet 4.5, Haiku 4.5 v1.0
Google Gemini 2.5 Pro, 2.5 Flash v1.0
xAI Grok 4, Grok 4 Heavy v0.9
DeepSeek V3.5, R1 v0.9
Meta Llama 4 Behemoth (self-host) v0.8
Alibaba Qwen 3 Max v0.7
Mistral Large 3, Small 3 v0.8
Cohere Command R+ 2026 v0.6
Magic LTM-3 (100M context) v0.5

Legend · shipping · model doesn't expose this capability · vN.M adapter maturity. New vendors take ~3 days to add — open an issue on GitHub with the model's API docs and we'll write the adapter.

06 · WHAT YOUR PROCUREMENT TEAM ACTUALLY GETS

The five lines you add to every AI contract
starting next quarter.

A

Standards clause

"Vendor's deliverable shall be expressed as a Constellation Protocol v0.4+ compliant agent. Vendor lock-in modifications shall be rejected at acceptance."

B

Reproducibility clause

"All model invocations shall be pinned to a published version. Vendor shall provide signed run-receipts on request, retained for the contract term plus seven years."

C

Portability clause

"At contract end, Vendor shall provide the agent definition file under a license no more restrictive than MIT. No transition assistance shall be required to switch model providers."

D

SLA failover clause

"Service interruption shall be measured against the agent's declared SLA. Runtime failover to fallback models is contractually equivalent to continued operation."

E

Audit clause

"Run-receipts shall be available within 24 hours of regulator request. Redaction rules shall be defined declaratively and stored alongside the agent definition."

A standard procurement rider implementing all five clauses is available in the /legal directory of the repository. Reviewed by counsel. Reusable. Public domain.

07 · ROADMAP · PUBLIC

Where this goes.

  1. v0.4

    Draft specification Now

    This page. 10 vendor adapters. Reference runtime in Python (380 LOC). Working evals harness.

  2. v0.6

    TypeScript runtime Q3 2026

    Node-native runtime. Edge-deployable (Cloudflare Workers, Vercel Edge, Deno Deploy). Same wire format.

  3. v0.8

    Multi-agent orchestration Q4 2026

    Constellations of agents. Message-passing between agents with cryptographic delivery receipts.

  4. v1.0

    Standards body proposal 2027

    Submit to a vendor-neutral standards body (IETF or W3C) once we have ≥50 production deployments and ≥5 independent runtime implementations.

  5. v2.0

    The default 2030+

    If we've done this right, the question by 2030 is not "are you Constellation-compliant" — it's "why are you still writing vendor-specific code."

08 · FAQ

Real questions
from real teams.

Spec discussions happen in GitHub issues. Procurement and licensing questions: protocol@nexoraaero.com.

Is Nexora trying to be the AWS of AI agents?
No. We are publishing a specification under MIT, the reference runtime under MIT, and the procurement rider under public domain. There is no Nexora-hosted runtime that "the protocol" depends on. If we vanish tomorrow, every Constellation agent in production keeps working. That's the test.
Why YAML and not JSON / TOML / a DSL?
Procurement reads it. Lawyers read it. Auditors read it. The audience for agent.yaml is wider than the audience for code, and YAML is the format that survives that audience without training. We considered TOML; it doesn't handle nested tools cleanly. JSON is unreadable past three levels.
How does this handle prompts that work great on Claude but poorly on GPT?
The runtime supports per-model prompt overrides — see models.primary.prompt_override. But the bigger answer: your evals block enforces behaviour. If GPT can't pass them, GPT doesn't get promoted to primary. The contract is the evals, not the prompt.
What about latency overhead from the adapter layer?
Measured at 1.8ms p99 on the reference Python runtime — adapter is a pure translation layer with no network hop. Failover does add latency (one model timed out, second model called) but you control the timeout budget via the SLA block.
Can I use this with LangChain / LlamaIndex / Pydantic-AI?
Yes — wrappers ship for all three. agent.yaml defines the contract; the wrapper translates to your framework's primitives. The wrappers are also MIT and live in the same repo.
Who reviewed the spec?
Public review since March 2026 — see the GitHub issues tagged spec-review. We list all named contributors in the CONTRIBUTORS.md file. We do not publish a list of customer deployments; that's the customer's call.

Adopt the protocol.
Outlive the vendors.

Three things you can do today.