Many minds.
One intent.

Juxt-lang is a language for directing AI agents. Put many models side by side, give them one intent, and get the full strength of each. You declare the objective, the agents, how they hand off work, and the checks that prove it is done. Any model, any harness, open protocols.

Read the language spec
harness · claude codeharness · codexharness · ci sandboxplannerbuilderreviewertesterrunnerbilling · a2ayou · approve??????{ plan, contract }diff +212looks safe?6/6 passedbuild green1000/minapprove deploy?APPROVEDwhich rules?wrong file…tests missingredo from scratch?build redlimit unknownapprove… this?RETRY ×5one intent
rounds 2tokens 12kedge cases named 6 of 6illustrative
SpeaksMCPA2AOpenTelemetryRuns inClaude CodeAgent SDKCodexyour own harness
ratelimit.juxtJuxt 0.7

    
orchestrationsimulated run
harness · claude-code · sandbox · checkpoints A2A · signed card ⇒ {plan, contract} ⇒ {diff, decisions} until verify MCP plannerstaff engineer · deep builderscope /server/mw reviewersecurity · fresh billingremote agent mcp://github mcp://redis (read) you · approval
$ juxt run ratelimit.juxt
New in 0.6 · npm juxt-lang@0.6.0

Keep AI-written code under control. Spend fewer tokens.

Agents now write code faster than anyone can review it, so the intent is the thing to keep. Juxt makes the program the source of truth and checks the repo against it. Questions about the program itself are answered without a model; whether Juxt saves tokens on real coding work is what the open benchmark below measures.

Typed IR + drift check

A strict IR with typed contracts and handoffs, a published JSON Schema, and juxt check, which fails CI when the program and the repo disagree.

Fewer tokens per answer

juxt ask goes cache → compiled (0 tokens) → small local model → frontier, and sends only the types a question touches. juxt eval measures it on your repo.

Local models + CI

Ollama or any OpenAI-compatible endpoint for the cheap tier, a predictor slot for ranking plans, and a GitHub Action: uses: juxt-lang/juxt@v1.

node bench/run.mjs --runs 3open benchmark · results not yet published
Same agent, model, repo and prompt. The juxt arm adds only the skill
and the words "use juxt:". Hidden tests check the house rules.

  cancel-order      refund once, 409 for shipped orders
  rate-limit        per key, never throttle /billing/, injected clock
  partial-refunds   integer cents, never over-refund, idempotency key
  reserve-stock     all-or-nothing, no charge when stock is short

  metrics: solved · hidden checks · tokens and cost as reported by the agent
  every run is published, including the ones Juxt loses

Methodology, fairness rules and the runner: github.com/juxt-lang/juxt/bench. Run it on your own account and send us the numbers.

Recipe: fix PHP2Shell (CVE-2026-109618/9) with your agent, safely.

Watch · Three concept films · not product footage

See it work inside the tools you already use.

Each film runs about 50 seconds and compares the same job with and without Juxt. They are animated mock-ups of the planned experience with illustrative numbers. The app windows are generic designs, not the real interfaces of Claude, Codex or any other product.

0:00 / 0:52
Works today · Juxt 0.1.0 preview

Not a mock-up. Real output.

The Juxt plugin running in Claude Code against a small test repo, unedited. It read the project's context file, inherited its rules, spotted the double-refund risk and asked three questions before writing any code.

claude -p "use juxt: add a cancel-order endpoint …"
› use juxt: add a cancel-order endpoint to this Express API. Refunds go back to the customer's card.

Understood as
objective:   POST cancel-order endpoint in the Express API; a cancelled
             order's payment is refunded to the original card
constraints: MUST keep existing tests passing; MUST NOT add dependencies
             without asking; SHOULD follow patterns in src/orders
contract:    in: order id (+ caller identity) / out: order status + refund
             status / on_error: unknown order, not cancellable, refund failure
pattern:     idempotent (a retried cancel must never refund twice)
verify:      npm test (jest), plus new tests for cancel and refund paths

The repo is nearly empty, so I can't infer these from the code. There is no
Express app, no order model, no payment code and no tests.

Open questions
1. Payment provider: how are cards charged today (Stripe, Adyen, something
   else)? Using its SDK would be a new dependency, so I need your approval,
   or I can write against a thin interface that you plug the provider into.
2. Cancellable states: which order states can be cancelled (e.g. only
   pending and paid, not shipped)? Is a partial refund ever possible?
3. Storage and auth: where do orders live, and who may cancel: the owning
   customer, staff, or both? And per context.juxt, who reviews changes to
   shared code?

Once you answer, I'll save the program to juxt/cancel-order.juxt and build it.
I haven't written any code yet.
✓ claude plugin validate --strict · passed ✓ Agent Skills validator · valid skill

Install (after the repo is public)

/plugin marketplace add juxt-lang/juxt
/plugin install juxt@juxt-lang

Codex, Cursor, Gemini CLI and other Agent Skills tools: copy agent-skills/juxt into your skills folder, for example .agents/skills/juxt.

  • use juxt: compile, ask, build, verify, save
  • /juxt:digest repo changes from git, cached per commit
  • /juxt:status cited status drafts
  • /juxt:hosts native capability map
  • /juxt:receipts what ran without a model

Ships with an eval suite: claude plugin eval . runs each case with and without Juxt and reports the difference. That is how the benchmark numbers on this page will be replaced with measured ones.

Patterns · Agentic design patterns

Pick how the agents work. Keep the patterns you trust.

Choose an agentic pattern, then the design pattern your codebase already uses. Juxt finds that pattern in your repo, turns its rules into constraints, and the agents build inside it instead of inventing a new one.

Step 1 · How the agents work
Step 2 · What your codebase already uses

Repo paths and ADR numbers are illustrative.

Answer tiers · juxt ask, since 0.6

Chat freely. Pay only for what's new.

Most chatbot traffic is repeated questions and routine reports, and each one burns a full model call. Juxt sends every request down a ladder and stops at the cheapest tier that can answer it correctly. The model writes a report program once; after that, the program runs on fresh data at zero tokens.

Ask something
assistant.juxt
T0Recall · approved answers and answer cache0 tok
T1Compute · run a compiled program on fresh data0 tok
T2Small model · short and simplelow
T3Frontier model · trimmed context, cached prefixfull
Pick a question to see which tier answers it.
0tokens used
0tokens avoided
0%saved this session
Simulated, with illustrative numbers. Savings depend on how repetitive your traffic is; measure your own repeat rate.
Hosts · adapters and receipts

Use the tool's own expertise. Show the savings.

Claude Code, Codex and other agents ship commands, skills and subagents tuned for their models. Juxt discovers them at the start of a session and compiles each step to the native one, falling back to a generic step only when nothing fits. Every run leaves a receipt, so the value is visible to whoever pays.

1 · Discover
skill/security-review project
command/test-all project
subagent@code-reviewer user
skill/commit built-in
mcpgithub, jira connected
fileAGENTS.md, juxt/context.juxt
2 · Compile to native
plan→generic · juxt planner
test→native · /test-all
review→native · @code-reviewer
security→native · /security-review
commit→native · /commit
ticket→native · mcp jira

Refreshed when the tool's version changes. Lint warns when a generic step is used where a native one exists. Names shown are examples.

JUXT · RECEIPT
digest · T0 cache0 model tok
digest · T1 git0 model tok
status · T1 facts~120 tok
use · open questions3 asked
use · checks attached4

not sent to a model≈41,800 tok
Estimate: bytes ÷ 4 of git logs and diffs answered without a model. Measured savings come from the eval suite.
Cost model · modeled, not measured

Where the savings come from, scenario by scenario.

A cost model, not a measurement: every number comes from the assumptions in the table, so you can check the arithmetic or swap in your own. Measured results come only from the open benchmark, run with the agent's reported usage.

Tokens per job, baseline = 100

Without Juxt (freeform agent prompts)With Juxt
View as table, with assumptions

Answer-tiers calculator

Your monthly chat traffic, priced at a frontier model. Small-model requests are priced at one tenth.

Without
With Juxt
monthly saving, modeled. Frontier requests also get a 15% reduction from trimmed context and prompt caching.
Compare · an honest look at the alternatives

How Juxt compares, including where it doesn't win.

Spec-driven development is a crowded, healthy space. Here is where Juxt differs and where the others are ahead today. If one of them fits you better, use it.

JuxtGitHub Spec KitKiro (AWS)AGENTS.md
What it isA small language: one .juxt program per changeToolkit and CLI for a spec → plan → tasks → implement workflowAgentic IDE built around specsOpen file of instructions for coding agents
FormatFormal grammar, typed IR, JSON SchemaMarkdown artifact per phaseMarkdown: requirements in EARS notation, design, tasksFree-form Markdown
Runs inClaude Code, Codex, Cursor, Gemini CLI via skill and CLIAbout 38 agent integrationsThe Kiro IDEMost coding agents, no setup
Open questionsOPEN lines, flagged by the linter until answeredRefined across the phasesYou review requirements before designNot addressed
Mechanical checkslint, validate, drift check in CIQuality checklists; CI gates via community extensionsManual review of each specNone defined
MaturityEarly: 0.7, few users, results pendingWidely adopted, large communityCommercial product backed by AWSDe facto standard, Linux Foundation stewardship

Where the others are ahead

  • Spec Kit has a mature multi-phase workflow and far more integrations and users.
  • Kiro gives an integrated IDE experience, with EARS requirements and design docs generated for you.
  • AGENTS.md is already read by most agents with zero setup.

Where Juxt is different

  • A checkable program: grammar, conformance suite, typed IR and schema.
  • Drift check in CI: the build fails when the program and the code disagree.
  • Rules outrank the objective, and unanswered questions are lint warnings, not guesses.

Use them together

AGENTS.md tells every agent how your repo works. A .juxt program states one change, its rules and how to prove it. Spec Kit or Kiro artifacts can feed a program too.

Sources: Spec Kit · Kiro specs · AGENTS.md and the Agentic AI Foundation. Spotted something wrong or out of date? Open an issue and we will fix it.

Stop chatting
with agents. Direct them.

Read the language spec