Vercel Labs Introduces Zero, a Systems Programming Language Designed So AI Agents Can Read, Repair, and Ship Native Programs

Most programming languages were designed for humans who read error messages, interpret warnings, and manually trace through stack output to fix bugs.…

By AI Maestro May 17, 2026 7 min read
Vercel Labs Introduces Zero, a Systems Programming Language Designed So AI Agents Can Read, Repair, and Ship Native Programs

Most programming languages were designed for humans who read error messages, interpret warnings, and manually trace through stack output to fix bugs. AI agents do none of those things well. They work better with structured data: predictable tokens, stable codes, and machine-parseable repair hints. That gap is what Vercel Labs is trying to close by releasing Zero, an experimental systems language that is faster, smaller, and easier for agents to use and repair.

What is Zero Language

Zero is a systems programming language that sits in the same design space as C or Rust. It compiles to native executables, gives you explicit memory control, and targets low-level environments.

What separates Zero from existing systems languages is that its compiler output and toolchain were designed from day one to be consumed by AI agents, not just human engineers.

The Agent-First Toolchain

The core problem Zero addresses is how agents interact with compiler feedback. In a typical development loop involving a coding agent, the agent writes code, the compiler emits an error as unstructured text, and the agent has to parse that text to determine what went wrong and how to fix it. This is fragile — error message formats change, messages are written for human readers, and there’s no built-in concept of a ‘repair action.’

Zero’s CLI emits structured JSON diagnostics by default. When you run zero check --json, the output looks like:

{
  "ok": false,
  "diagnostics": [{
    "code": "NAM003",
    "message": "unknown identifier",
    "line": 3,
    "repair": { "id": "declare-missing-symbol" }
  }]
}

Each diagnostic carries a stable code (e.g., NAM003), a human-readable message, a line reference, and a repair object with a typed repair ID. Humans read the message. Agents read the code and repair. The same CLI command surfaces both — there is no separate mode or secondary tool to run.

The toolchain is unified into one binary: zero check, zero run, zero build, zero graph, zero size, zero routes, zero skills, zero explain, zero fix, and zero doctor are all subcommands of the same CLI. This matters for agentic workflows because agents don’t need to reason about which tool to invoke for which task.

Two subcommands are particularly relevant to the repair loop. zero explain <diagnostic-code> returns a detailed explanation of a given diagnostic code, so an agent can look up NAM003 without parsing prose documentation. zero fix --plan --json <file-or-package> emits a structured fix plan — a machine-readable description of what changes to make to resolve a diagnostic — rather than requiring the agent to infer the fix from the error message alone.

zero skills serves a different purpose: it provides version-matched agent guidance directly through the CLI. Running zero skills get zero --full returns focused workflows covering Zero syntax, diagnostics, builds, packages, standard library use, testing, and agent edit loops — all matched to the installed compiler version. This is notable because it means agents working with Zero don’t need to scrape external documentation that may be out of sync with the compiler they’re actually running.

Explicit Effects and Capability-Based I/O

One of Zero’s core design decisions is that effects are explicit in function signatures. If a function writes to standard output, accesses the filesystem, or makes a network call, it must declare that through a capability object.

The canonical entry point in Zero looks like this:

pub fun main(world: World) -> Void raises {
  check world.out.write("hello from zero\n")
}

The world: World parameter is the capability object that grants access to the outside world. A function that doesn’t receive World (or a capability derived from it) cannot perform I/O — the compiler enforces this at compile time, not at runtime. There is no hidden global process object.

The check keyword handles fallible operations. If world.out.write(...) can fail, check surfaces that failure along the call stack. The raises annotation on main signals that the function can propagate errors — making error paths visible in signatures rather than buried in runtime exceptions.

Getting Started

Installation requires one command:

curl -fsSL https://zerolang.ai/install.sh | bash
export PATH="$HOME/.zero/bin:$PATH"
zero --version

The installer downloads the latest binary from the GitHub release and places it in $HOME/.zero/bin/zero. Packages are defined with a zero.json manifest and source files under src/, initialized with zero new cli <name>.

A VS Code extension for .0 file syntax highlighting ships in the repository under extensions/vscode/.

Marktechpost’s Visual Explainer


Vercel Labs
01 / 09  ·  Overview
Zero
The Programming Language
for Agents
An experimental systems language that gives AI agents structured diagnostics,
typed repair metadata, and machine-readable docs — alongside sub-10 KiB native binaries.
Systems Language
Agent-Native
v0.1.1
Apache-2.0
Experimental
Released
May 15, 2026
Author
Chris Tate · Vercel Labs
Repo
vercel-labs/zero
File Extension
.0

Context
02 / 09  ·  Why Zero Exists
The Agent Repair Loop Problem
Most programming languages produce compiler output written for human readers — unstructured text that AI agents must parse to determine what failed and how to fix it. This creates a fragile loop.
  • Agent writes code — compiler emits an error as unstructured text
  • Agent parses text — error format can change between compiler versions
  • No repair hint — there’s no built-in concept of a “repair action”
  • Human steps in — the loop requires manual intervention to resolve errors
Zero was designed from day zero so agents can read the code, interpret the diagnostics, and repair the program — without human translation.

Core Feature
03 / 09  ·  JSON Diagnostics
Structured Compiler Output
Running zero check ——json emits machine-readable diagnostics instead of plain text. Every error includes a stable code, a human message, a line number, and a typed repair ID.
$ zero check --json
{
  "ok": false,
  "diagnostics": [{
    "code": "NAM003",
    "message": "unknown identifier",
    "line": 3,
    "repair": { "id": "declare-missing-symbol" }
  }]
}
  • code — stable identifier agents can match reliably (NAM003)
  • message — human-readable description of the error
  • repair — typed repair ID agents can act on without text parsing

Core Feature
04 / 09  ·  Repair Commands
zero explain & zero fix
Two CLI subcommands complete the agent repair loop without requiring agents to parse prose documentation.
zero explain

zero explain NAM003
Returns a structured explanation of any diagnostic code. Agents look up NAM003 directly — no doc scraping.

zero fix

zero fix --plan --json add.0
Emits a machine-readable fix plan describing exactly what changes to make — no inference required.

Together, zero explain and zero fix --plan --json let agents understand errors and act on them without human translation of compiler output.

Core Feature
05 / 09  ·  Agent Guidance
zero skills: Version-Matched Agent Guidance
Most tools require agents to scrape external documentation that may be out of sync with the installed compiler. Zero solves this with zero skills — guidance served directly from the CLI, matched to the installed version.
zero skills get zero --full
Returns focused workflows for:
  • Zero syntax — language fundamentals for the current version
  • Diagnostics — how to interpret and act on compiler output
  • Builds & packages — manifest structure, targets, and output
  • Testing & agent edit loops — validation and repair workflow patterns

Language Design
06 / 09  ·  Capability-Based I/O
Explicit Effects & Capability-Based I/O
In Zero, if a function touches the outside world, its signature says so. There is no hidden global process object, no implicit async, and no magic globals.
pub fun main(world: World) -> Void raises {
  check world.out.write("hello from zero\n")
}
  • world: World — capability object; grants access to I/O, filesystem, network
  • check — handles fallible operations; surfaces failure up the call stack
  • raises — marks that the function can propagate errors — visible in the signature
  • Compile-time enforcement — unavailable capabilities are rejected at compile time, not runtime

Language Design
07 / 09  ·  Memory & Size
Predictable Memory & Tiny Binaries
Zero targets environments where binary size and memory predictability matter. There is no hidden runtime tax.
Binary Target

< 10 KiB
Native executables via static dispatch, no mandatory GC, no mandatory event loop

Cross-Compilation

zero build --emit exe \
  --target linux-musl-x64 \
  add.0 --out .zero/out/add

  • zero size --json — reports artifact size before code generation when possible
  • No hidden allocator — allocation is explicit and visible in code
  • C ABI exports — target-aware interop metadata for C boundaries

Quick Start
08 / 09  ·  Getting Started
Install & Run Zero
Install the compiler with a single curl command:
curl -fsSL https://zerolang.ai/install.sh | bash
export PATH="$HOME/.zero/bin:$PATH"
zero --version
Check, run, and build your first program:
zero check examples/hello.0
zero run   examples/add.0
zero build --emit exe --target linux-musl-x64 \
  examples/add.0 --out .zero/out/add
Create a new package:
zero new cli hello
cd hello
zero check .  &&  zero test .  &&  zero run .

Status
09 / 09  ·  Current State
What’s Available & What’s Not
  • v0.1.1 (Experimental) — compiler, stdlib, and language spec are not stable yet
  • No package registry — ecosystem breadth is early-stage
  • Cross-compilation — limited to the documented target subset
  • VS Code extension — syntax highlighting for .0 files ships in the repo
  • Contributors — Chris Tate & Matt Van Horn (Vercel Labs)
Docs & Install

zerolang.ai

Source

github.com/vercel-labs/zero

License

Apache-2.0

Zero is a working experiment worth tracking for AI engineers interested in agent-native toolchain design — not yet a production dependency.


Originally published at marktechpost.com. Curated by AI Maestro.

Stay ahead of AI. Get the most important stories delivered to your inbox — no spam, no noise.

Name
Scroll to Top