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:
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.
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.
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
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
To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behaviour or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
Functional
Always active
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical purposes.The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.