---
title: "The execution layer for agents"
description: "Nace is the execution layer for agents: Perception reads any file, Decision makes the call in under 200 ms. One API key, at small-model speed and cost."
canonical: "https://nace.ai/developers"
---

# The execution layer for agents

> Nace is the execution layer for agents: Perception reads any file, Decision makes the call in under 200 ms. One API key, at small-model speed and cost.

## The execution layer for agents.

Your agent writes the code. Nace does the grunt work around it: reading files, sorting, and making the small calls. It runs on fast, cheap models.

- [Sign up free](https://console.nace.ai?utm_campaign=drex-launch&utm_content=developers&utm_medium=website&utm_source=nace.ai)
- [Read the docs](https://console.nace.ai/docs)
- Drex 2.0 open weights: [GitHub](https://github.com/nace-ai/drex-decision-models)
- Drex 2.0 open weights: [Hugging Face](https://huggingface.co/nace-ai/drex-v2.0)

Works with Codex, Cursor, Claude Code, pi, Hermes, opencode.

## Leading performance at a fraction of the cost.

### NDI 1.0

Chart: Parse Index against cost per 1,000 pages. Each run is named beside its company mark. The line is the Pareto frontier: no other run is both cheaper and more accurate than a run on it. Cost is on a log scale, so the best trade-off sits top left.

| Model | Parse Index | OmniDocBench | ParseBench Content Faithfulness | USD / 1,000 pages |
| --- | ---: | ---: | ---: | ---: |
| NDI High | 0.820 | 92.6 | 91.16 | 7.00 |
| LlamaParse Agentic | 0.820 | 89.4 | 91.78 | 13.80 |
| GPT-6 Astra (low) | 0.813 | 89.6 | 90.67 | 70.57 |
| NDI Low | 0.805 | 93.8 | 89.05 | 3.50 |
| LlamaParse Cost Effective | 0.799 | 87.4 | 89.87 | 3.80 |
| Mistral OCR 4 | 0.796 | 89.2 | 89.55 | 4.00 |
| Anthropic Opus 4.7 | 0.787 | 88.2 | 90.26 | 71.40 |
| Databricks Parse (high) | 0.784 | 90.3 | 88.25 | 6.12 |
| Chandra-2 (Datalab) | 0.773 | 88.6 | 83.70 | 10.00 |
| Extend AI v1 | 0.766 | 85.9 | 84.59 | 6.00 |
| GPT-5.6 Terra | 0.766 | 89.1 | 82.56 | 15.51 |
| Azure DI | 0.762 | 86.3 | 84.93 | 10.00 |
| Reducto Parse | 0.744 | 83.1 | 86.37 | 30.00 |

Parsing leaderboard export, 15 September 2026. Cost is USD per 1,000 pages as measured. ParseBench is scored on its main metric, Content Faithfulness, only.

### Drex Max, Drex 2.0 and Drex 1.5

| Benchmark | Drex Max | Drex 2.0 | Drex 1.5 | Jev 1.14 | GPT-6 Luna Decisions | GPT-6 Sol | Claude Opus 5.5 |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| Decision: Decision Index (public) | 67.6 | 61.3 | 58.1 | 60.7 | 47.8 | – | – |
| Decision: JevBench | 92.2 | 85.7 | 84.8 | 86.7 | 91.0 | 99.1 | 100.0 |
| Decision: Decision Bench | 94.3 | 88.3 | 86.8 | 92.3 | 90.5 | 94.7 | 95.6 |
| Decision: DecideBench (item) | 98.5 | 96.5 | 90.0 | 98.0 | 97.2 | 99.2 | 98.8 |
| Decision: DecideBench (pair) | 97.0 | 93.5 | 80.5 | 96.0 | 94.5 | 98.5 | 98.5 |
| Decision: Game Bench (win %) | 64.0 | 60.3 | 58.7 | 50.0 | 57.5 | 65.0 | 63.0 |
| Knowledge: MMLU-Pro | 72.5 | 72.8 | 58.6 | 82.1 | 58.1 | 93.0 | 94.0 |
| Knowledge: HLE | 19.0 | 12.8 | 11.4 | 19.4 | 12.3 | 39.0 | 56.0 |
| Knowledge: CRUXEval | 85.8 | 84.6 | 76.7 | 74.7 | 66.4 | 100.0 | 95.0 |
| Reasoning: ARC-Challenge | 97.4 | 96.8 | 95.9 | 97.6 | 96.9 | 99.0 | 98.0 |
| Reasoning: ARC-Easy | 99.4 | 98.6 | 97.9 | 99.3 | 99.0 | 100.0 | 100.0 |
| Reasoning: HellaSwag | 97.9 | 95.9 | 92.1 | 94.3 | 91.4 | 93.0 | 96.0 |
| Agentic: OSWorld-Verified (automation) | 0.780 | 0.698 | 0.676 | 0.734 | 0.747 | 0.756 | 0.790 |
| Agentic: OSWorld-V2 (automation) | 0.737 | 0.636 | 0.640 | 0.687 | 0.659 | 0.744 | 0.761 |
| Agentic: BFCL (tool calling) | 98.2 | 96.6 | 94.9 | 96.4 | 94.2 | 94.7 | 97.3 |
| Agentic: ToolRet (tool retrieval) | 70.6 | 67.3 | 70.2 | 65.0 | 60.4 | 72.7 | 74.8 |
| Agentic: When2Call | 85.2 | 86.5 | 89.7 | 81.7 | 70.2 | 78.3 | 86.7 |
| Agentic: RAGTruth | 84.8 | 82.5 | 82.7 | 75.1 | 77.0 | 72.5 | 69.8 |
| Efficiency: Median API latency | 183 ms | 151 ms | 145 ms | 196 ms | 326 ms | ~2.0 s | ~3.5 s |
| Efficiency: Cost (per 1k decisions) | $0.06 | $0.06 | $0.04 | $0.042 | $0.10 | $3.33 | $10.17 |

### Vision

| Benchmark | Drex Max | GPT-6 Luna Decisions |
| --- | ---: | ---: |
| Vision Index | 74.5 | 63.9 |
| Perception: CV-Bench | 86.3 | 73.8 |
| Perception: BLINK | 74.1 | 63.7 |
| Perception: RealWorldQA | 84.0 | 75.0 |
| Perception: Winoground | 93.0 | 83.8 |
| Documents & charts: CharXiv | 86.1 | 78.8 |
| Documents & charts: InfographicVQA | 98.8 | 93.8 |
| Documents & charts: KIE (CORD + FUNSD) | 95.5 | 97.5 |
| Agentic: Mind2Web | 88.6 | 81.2 |
| Reasoning & safety: R-Bench-M | 48.9 | 32.5 |
| Reasoning & safety: MMMU-Pro (vision) | 53.6 | 41.2 |
| Reasoning & safety: Hateful Memes (moderation) | 70.6 | 71.2 |

Public benchmarks. Latency is the median API time per decision, as the caller sees it, network included; ~ marks an approximate figure. Bars start at zero.

## Builders on Drex and NDI, in their words.

> $499,235 of unbilled work across 1000 work orders. @NaceAI's drex found $482,260.
>
> drex reads the note and the invoice and flags what's missing. code does the math. when drex isn't sure, a human decides.

[Video](https://media.nace.ai/developers/wall/visheshbaghell-unbilled-work.mp4): Screen recording: tally checks 1,000 technician notes against their invoices and adds up the unbilled work

[Vishesh Baghel @VisheshBaghell on X, 2026-09-25](https://x.com/VisheshBaghell/status/2103605766737563991)

> I threw a messy PDF at Nace's new Document Intelligence model.
>
> Instead of just converting the PDF into plain text, NDI is built to understand the document's structure, extract useful information, and connect every extracted value back to its original source.
>
> It's a perception layer built specifically for AI agents.

[Video](https://media.nace.ai/developers/wall/kanojiyaaakash1-messy-pdf.mp4): Screen recording: Document Intelligence reads a messy PDF and links each extracted value to its source

[Aakash Kanojiya @Kanojiyaaakash1 on X, 2026-10-08](https://x.com/Kanojiyaaakash1/status/2108262113768833211)

> Nace shows Drex playing a strategy game. i gave it a harder opponent: my timeline
>
> Spoiler Guard sends each post to the new decision model and blurs the spoilers, 352 post checked in one session with sub-second calls

[Video](https://media.nace.ai/developers/wall/israfilv2-spoiler-guard.mp4): Screen recording: Spoiler Guard checks each post on an X timeline and blurs the spoilers

[Israfil @Israfilv2 on X, 2026-09-30](https://x.com/Israfilv2/status/2105326048040927656)

> someone wired a small open model to a real security camera
>
> 389 ms per call
>
> the vision model sees, drex decides

[Video](https://media.nace.ai/developers/wall/deanwperkins-security-camera.mp4): Screen recording: a pose model watches security-camera footage and Drex decides what each clip shows

[Dean W. Perkins @deanwperkins on X, 2026-10-06](https://x.com/deanwperkins/status/2107548585286049942)

> Drex: faster, cheaper, better than jev, 32k context and with open weights coming soon? I will surely give it a try!

[Ivan Fioravanti @ivanfioravanti on X, 2026-09-25](https://x.com/ivanfioravanti/status/2103480137664926166)

> I’m using Drex as a fast decision layer inside my project Elyreon/NOVA mainly for routing tasks, choosing tools/models, classifying failures, retries, urgency, and handoffs.
>
> the bot already responds sub 1s so i cant imagine how much better drex will make it

[SuperSaiyanColt on Discord, 2026-09-26](https://github.com/colt2822/Drex-Agent-Firewall)

> Using a massive LLM to decide which tool to call feels like hiring a CEO to sort your inbox.
>
> Drex targets those decisions: routing, ranking, classification and guardrails.

[Eduardo Ordax on LinkedIn, 2026-09-25](https://www.linkedin.com/posts/eordax_ai-activity-7509105215158083584-yVNg)

> i was using jev for playing vs a bot in an old game called Little fighter 2
>
> drex 1.5 is actually very comparable with jev's behaviour in game infact might be better
>
> also it's less latent and very fast i've dropped jev eversince and been optimizing for drex

ahmadgho on Discord, 2026-10-07

> Earnings day is chaos. One filing, a mountain of invoices and a feed of X posts. One agent read all of it
>
> @NaceAI Document Intelligence read all three, and every value it pulls links back to where it sits
>
> the part I'd watch: when there isn't enough data, Drex says "insufficient data" instead of guessing

[Video](https://media.nace.ai/developers/wall/arianawi-earnings-day.mp4): Screen recording: one agent reads a 10-Q filing, a stack of invoices and X posts, then lists its decision signals

[Nawi @Aria_Nawi on X, 2026-10-08](https://x.com/Aria_Nawi/status/2108255754067021871)

> Switching was easy. I pointed my existing Jev setup at Drex, kept the same SDK, changed 3 environment variables, and it worked.
>
> I see a good fit for agent routing, tool selection, document classification, and choosing the next action in browser automation.

[Video](https://media.nace.ai/developers/wall/hqmank-chess.mp4): Screen recording: Drex plays a one-minute bullet chess game against Jev

[Kai @hqmank on X, 2026-09-25](https://x.com/hqmank/status/2103470039756112345)

> i built a full NDI 1.0 trading system and open-sourced the entire repo.
>
> NDI extracts the information, grounds it back to the original source, then evaluates the decision while a frontier model reasons over the context.
>
> market data + financial documents + AI reasoning → trading decision.

[Video](https://media.nace.ai/developers/wall/maxdeg0-trading-system.mp4): Screen recording: drex-Trader charts a market and shows each buy or sell decision

[MAX @MAXdeg0 on X, 2026-10-08](https://x.com/MAXdeg0/status/2108256855885762580)

> 128k context means it can route with real state instead of tiny summaries.
>
> the interesting part isn’t more generation. it’s better decisions before generation starts.

[Image](https://nace.ai/developers/wall/gippp69-game-arena.jpg): Table: Drex 1.5 against Jev across eight Game Arena games, 149 wins to 107

[Gipp @gippp69 on X, 2026-09-30](https://x.com/gippp69/status/2105332483952628085)

## Watch an agent run the workflow.

An agent with a Nace key reads an AP packet, finds the page that matters and decides what to do with it. Every call in the window is a Nace endpoint, and every value comes back with the page it was read from.

```text
$ export NACE_API_KEY="nace_sk_…"
$ claude
> This AP packet from Halden Supply mixes invoices, a contract amendment and a W-9. Which invoice can we pay today, and did the terms change?
console · split(file: "halden-packet.pdf")
  38 pages → 5 documents
  1  Invoice INV-2291           p. 1–3
  2  Invoice INV-2304           p. 4–6
  3  Contract amendment No. 3   p. 7–19
  4  W-9                        p. 20
  5  Purchase order PO-77120    p. 21–38
console · classify(document: 3, classes: "procurement")
  contract_amendment · 0.97
console · extract(document: 3, schema: { payment_terms, effective_date, parties })
  payment_terms   "Net 45, 2% discount within 10 days"    found
  effective_date  "2026-10-01"                            found
  parties         Halden Supply Co., Meridian Logistics   found
console · ground(document: 3, text: "Net 45")
  page 11 · box 0.12 0.41 0.88 0.47 · exact · 0.99
console · extract(documents: [1, 2], schema: { invoice_no, total, payment_terms, po_number })
  INV-2291   $18,420.00   "Net 30"   PO-77120   p. 2
  INV-2304    $9,870.00   "Net 45"   PO-77120   p. 5
console · systemone(state: "INV-2304 · $9,870.00 · Net 45 · matches PO-77120 · terms per amendment No. 3", questions: { approve: noul, route: choice })
  approve   noul     0.93
  route     payments 0.88 · review 0.09 · reject 0.03
● Pay INV-2304 today: $9,870.00 against PO-77120 on Net 45, the terms Contract amendment No. 3 sets on page 11, effective 1 October 2026. Drex puts 93% on approving it and routes it to payments.
● Hold INV-2291. It still carries Net 30 on page 2, which predates the amendment. Want me to flag it for AP review?
```

## After the code, the run.

Code generation was the last wave. Workflow execution is the next. Once the code exists, it has to run: call tools, read files, classify, decide and reason, thousands of times a day. Paying a frontier LLM for every one of those steps is slow and expensive. That is where Nace sits.

- The last wave: **Code generation**. Large models write the code, the tests and the pull request.
- The next wave: **Workflow execution**. The code calls tools, reads files and makes decisions, step after step, in production.

## Perception and Decision.

Two layers your agent calls instead of a frontier LLM. Each one is a small model built for one job, and both sit behind the same key.

### 01 Perception: NDI

**Every answer brings receipts.** Reads 36 file types, from scans to spreadsheets, email and video. Parse, split, classify, extract and ground, and every value points back to the page it came from.

[Explore NDI](https://nace.ai/ndi)

### 02 Decision: Drex

**Odds, not opinions.** A calibrated probability on every option in one pass, in under 200 ms. Drex Max decides from screens, images and video.

[Explore Drex](https://nace.ai/drex)

## Reads the screen and picks the next click, fast.

Drex Max is the frontier of the Drex family. Give it a screenshot and the question, and it puts a probability on every element your agent could click. Built for computer use and browser use, and it understands video too.

- Computer use: **0.780** On OSWorld-Verified, the benchmark of real tasks across desktop apps.
- Browser use: **88.6** On Mind2Web, the benchmark for picking the right element on a page.
- Every step: **<200 ms** Median API time per decision, from text or a screenshot. Fast enough for every step of the loop.

- [Try Drex Max](https://console.nace.ai?utm_campaign=drex-max-launch&utm_content=developers_frontier&utm_medium=website&utm_source=nace.ai)
- [Meet Drex Max](https://nace.ai/drex)

## One key, everywhere.

Console is plain HTTPS and JSON behind one nace_sk_ key. Any harness that can call a tool can call it; these are the ones we test with.

1. **Create a key**: Sign up in Console. A new account starts with $25 of credit.
2. **Add Nace to your agent**: One command gives your coding agent every layer as a tool.
3. **Call any layer**: One header, one credit balance and one error envelope for Perception and Decision.

Every call sends `Authorization: Bearer $NACE_API_KEY`.

- MCP: `claude mcp add nace -- uvx nace-mcp` ([docs](https://console.nace.ai/docs/developer-tools/mcp))
- CLI: `pipx install nace-cli` ([docs](https://console.nace.ai/docs/developer-tools/cli))
- TypeScript: `npm install nace-sdk` ([docs](https://console.nace.ai/docs/developer-tools/typescript))
- Python: `pip install nace-sdk` ([docs](https://console.nace.ai/docs/developer-tools/python))

### Works where your agent works

- **[Codex](https://console.nace.ai/docs/developer-tools/mcp#codex)**: Codex calls the same endpoints from its sandbox; the key travels as one environment variable.
- **[Cursor](https://console.nace.ai/docs/developer-tools/mcp#cursor)**: Wire Console into Cursor's agent so a document question is answered inside the editor.
- **[Claude Code](https://console.nace.ai/docs/developer-tools/mcp#claude-code-and-claude-desktop)**: Give Claude Code a Console key and it splits, extracts and decides from the terminal.
- **[pi](https://console.nace.ai/docs/developer-tools/mcp#pi)**: pi's minimal harness fits Console's minimal contract: JSON in, probabilities and locations out.
- **[Hermes](https://console.nace.ai/docs/developer-tools/mcp#hermes-agent)**: Hermes agents read files and route decisions through Console without a second integration.
- **[opencode](https://console.nace.ai/docs/developer-tools/mcp#opencode)**: opencode reaches Console over plain HTTPS; no plugin to install, nothing to keep in sync.

Or self-host Drex 2.0: Drex 2.0 weights now available.

- [GitHub](https://github.com/nace-ai/drex-decision-models)
- [Hugging Face](https://huggingface.co/nace-ai/drex-v2.0)

## One platform. Four boundaries.

Same models, same API, same serving stack at every tier. The only thing that changes is the boundary around your data, from our cloud to your metal.

Your data trains your models. The weights, adapters and eval sets stay yours, inside the boundary you pick.

| Attribute | Managed | Dedicated | Your Cloud | Air-Gapped |
| --- | --- | --- | --- | --- |
| Where it runs | Our cloud | Our cloud | Your cloud account | Your datacenter |
| Network path | Public TLS | Private link | Inside your VPC | None |
| GPU tenancy | Shared | Dedicated | Dedicated | Dedicated |
| Updates | Continuous | Continuous | Pull from registry | Signed offline bundles |

### Managed Cloud

Start on our GPUs, behind our API, with a key from Console.

For: pilots, evaluations, mid-market teams moving fast.

- Shared GPU pool with strict tenant isolation
- Public API over TLS, no training on your data
- Usage-based pricing, no infrastructure to run

### Dedicated Cloud

Your own GPU cluster in our cloud, reached over private links instead of the public internet.

For: regulated teams that are cloud-first but done with shared infrastructure.

- Single-tenant compute, pinned to your region
- PrivateLink or VPC peering into your network
- Customer-managed keys, dedicated throughput

### Your Cloud

The platform installs inside your AWS or Azure account. Data stays within your boundary.

For: banks, Big 4 firms, anyone whose security review starts with “show us the network diagram.”

- Runs in your VPC with your keys, your logs, your IAM
- Updates pull from our registry; nothing flows back out
- The deployment model our audit and banking customers run in production

[Talk to sales](https://nace.ai/contact?product=cloud&source=developers)

### On-Prem & Air-Gapped

Your datacenter, your hardware, zero outbound.

For: government, defense, and sovereign environments where the network cable isn’t there.

- No egress, no telemetry, offline license activation
- Signed offline update bundles on your schedule
- Ships as software on your servers or as a pre-configured appliance

[Talk to sales](https://nace.ai/contact?product=cloud&source=developers)

## Questions

### What is the execution layer?

The models your agent calls when it runs a workflow, instead of sending every step to a frontier LLM. Perception (NDI) reads files and Decision (Drex) makes the call. You reach both from Console at console.nace.ai, behind one nace_sk_ key.

### What does it cost?

Usage-based, from one balance. A new account starts with $25 of credit that expires 30 days after it is created. After that you top up, and every call, a decision or a document job, draws from the same credit. The price sheet is in the docs.

### Which file types does Perception read?

Thirty-six, from PDFs and scans to spreadsheets, email, audio and video. Parse turns any of them into Markdown, text or layout blocks; Split, Classify, Extract and Ground work on the result, and every value comes back with the page and region it was read from.

### Do you train on my data?

No. Not on Managed Cloud and not at any other tier. Your data trains your models only when you ask for it, and the weights, adapters and eval sets stay yours.

### Is there an SDK or MCP server?

Yes. nace-mcp gives Claude Code, Codex, Cursor and other MCP clients every layer as a tool; nace-cli works from the shell; nace-sdk covers TypeScript and Python. Underneath it is plain HTTPS and JSON, so any harness that can call an API can call Nace.

### How do I run it inside my own boundary?

Pick the boundary below. Dedicated Cloud keeps you on our infrastructure over a private link; Your Cloud installs inside your AWS or Azure account; Air-Gapped runs with no outbound at all. Same models, same API, same console.

[Talk to sales](https://nace.ai/contact?product=cloud&source=developers-faq)

## First request today. Your own cloud when you need it.

Create a key in Console and send your first request in a minute. When the data cannot leave your network, we bring the platform inside it.

- [Get API key](https://console.nace.ai?utm_campaign=drex-launch&utm_content=developers&utm_medium=website&utm_source=nace.ai)
- [Talk to sales](https://nace.ai/contact?product=cloud&source=developers)

## For agents

- [Drex API guide](https://nace.ai/drex.md): the decision model: request shape, question types, benchmarks and deployment, as markdown
- [Decision endpoint](https://console.nace.ai/v1/systemone): POST with model "drex-latest", a state string and typed questions (choice, noul, score); https://console.nace.ai/v1/models lists checkpoints
- [Document endpoints](https://console.nace.ai/v1/documents/{parse|split|classify|extract|ground}): POST a source (a public URL, an uploaded workspace file or a finished parse job) and poll GET https://console.nace.ai/v1/documents/jobs/{id}; the same key and credit as decisions
- [Console](https://console.nace.ai): API keys, the playground, usage and billing; send `Authorization: Bearer $NACE_API_KEY` on every request
- [Console docs](https://console.nace.ai/docs): quickstart, question types, the document routes, errors, limits and pricing
- [Nace Document Intelligence](https://nace.ai/ndi.md): the Perception series: parse, split, classify, extract and ground any file type with a location on every value
- [Developers](https://nace.ai/developers.md): The execution layer for agents: Perception, Decision and Context behind one key, the Drex Max frontier, install steps, a scripted agent session and the four deployment boundaries
- [Site index](https://nace.ai/llms.txt): every page on nace.ai; append `.md` to any page URL or send `Accept: text/markdown` for the markdown version
