Neuralang · open language · v0.3.1 preview

A programming language you write with your hand.

Neuralang reads the muscle signals at your wrist and turns pinches, swipes and handwriting into a program your coding agent runs. No keyboard.

Apache-2.0 · works today with the Meta Neural Band · not affiliated with Meta
01 · SessionA function, written by hand

Watch a function get written.

Sixteen channels of surface EMG, a decoder, and the program assembling as the wearer writes it. Replay it, or perform the gestures yourself.

session · ship.nl band connected · 16 ch · 2 kHz · 4 ms
ch 01–16 · sEMG · µV
decoder · nld 0.3.100:00.0
    programtext form
    or perform it yourself:
    keys when the session is focused: F fn · [ ] braces · ↓ intent · ↑ verify · → allow · ← deny · R run · U undo · W write
    02 · Why a languageThe keyboard is the wrong size

    The keyboard was built for the person who writes the code. That is no longer the job.

    In 2026 the human in the loop emits a handful of tokens an hour: an intent, a constraint, a check, a yes. Neuralang is sized for exactly those tokens. Nine chords and a pen cover the whole grammar, so the band on your wrist is enough, and the agent does the typing.

    your handpinch · swipe · roll · write→ bandsurface EMG · 16 ch · 2 kHz→ nlddecoder on device · gesture events→ tokensfn { intent "…" verify … }→ nlccompiler · plan + checks→ agentClaude Code · Codex · any stdin

    Small on purpose

    Seven keywords. Every keyword is one gesture. You learn the whole language in an afternoon and never look at a cheat sheet again.

    Plain text underneath

    Every gesture stream serialises to a .nl file. Diff it, review it, commit it. The band is the input method, not the storage format.

    Agent-agnostic

    nlc compiles a program to a plan with its checks attached and hands it to Claude Code, Codex CLI, Cursor, Gemini CLI, or any process that reads stdin.

    03 · The alphabetNine chords and a pen

    Nine chords and a pen.

    Each structural token is a single gesture the band already recognises without calibration. Everything else, names and intents, you write on whatever surface is in front of you.

    tap.doublefnTwo quick index taps against the thumb. Opens a function; the next written word is its name.
    pinch.index{Index to thumb, release. Opens a block.
    pinch.middle}Middle to thumb, release. Closes the block.
    swipe.downintentThumb down across the side of the index finger. What you write next is the intent, as a string.
    swipe.upverifyThumb up. The next written name is a check the agent must pass before it reports done.
    swipe.rightallowGrants a capability for this function: net.read, fs.write, shell.
    swipe.leftdenyRemoves a capability. Deny wins over allow.
    roll.cwrunRoll the wrist clockwise. Compiles the named function and sends it to the agent.
    roll.ccwundoRoll anticlockwise. Removes the last token. Roll twice to remove a whole statement.
    writename · "string"Write with your index finger on a table, your leg, or the air. After intent it is a string; anywhere else it is a name. Decoded at roughly 21 words a minute today.
    04 · Text formEvery program is also a file

    Every program is also a file.

    A gesture stream is a poor thing to put in a repository, so nld writes every session out as plain text. The text form is the canonical one: it is what you review, what you diff, and what nlc compiles. Type it on a keyboard if you want to. The band is the point, not a requirement.

    The grammar fits on one screen. Functions hold statements; statements are intents, checks and capabilities; run sends a function to the agent. There are no expressions, no loops and no types, because the agent on the other end has all of those.

    Read the full grammar →

    ship.nltext form · 12 lines
    use band meta.neural-band
    use agent claude-code
    
    fn ship {
      intent "add retry with backoff to the upload client"
      intent "make no mistakes"
      verify tests.pass
      verify lint.clean
      deny net.write
    }
    
    run ship
    $ nlc ship.nl
    nlc 0.3.1 · ship.nl
    ✓ ship · 2 intents · 2 checks · 1 deny · compiled in 38 ms
    ✓ sent to claude-code (stdin) · waiting on checks…
    05 · HardwareAnything that sends gesture events

    Works with the band on your wrist.

    nld needs one thing from a device: discrete gesture events with a timestamp. Anything that can send those can write Neuralang.

    Meta Neural Band

    Ships with Meta Ray-Ban Display. Meta opened the glasses and the band to third-party developers in May 2026, and nld reads gesture events through the web-app path of the Meta Wearables Toolkit. Surface handwriting uses the band's own decoder.

    You need the glasses paired, because today the band only talks to them.

    status · supported · previewgestures · taps · thumb swipes · wrist rolls · handwritingpath · wearables toolkit · web app · local socket
    wrist cross-section · 16 electrode pairs · one differential channel per pair · gesture events out
    06 · ResearchWhy now

    Why now.

    In 2025 Reality Labs published a surface-EMG decoder that works across people without calibration, trained on data from thousands of participants. Neuralang stands on that floor: it needs ten things recognised reliably, and the band already recognises them.

    20.9words per minute, median handwriting speed on a surface with the generic model and no calibration.
    0.88gesture detections per second in the discrete-gesture task. Neuralang's nine chords are drawn from the same gesture set.
    +16%better handwriting decoding when the model is personalised to the wearer. nld keeps a per-wearer profile for exactly this.

    Figures from Kaifosh, Reardon et al., “A generic non-invasive neuromotor interface for human-computer interaction”, Nature 645, 702–711 (2025). Developer access: Meta's EMG wearable page and the Wearables Toolkit developer preview (May 2026).

    07 · QuestionsFrequently asked

    Frequently asked.

    Does it work with Claude Code?
    Yes. nlc hands the compiled plan to the agent over stdin and reads the check results back. Hooks for Claude Code and Codex CLI are in the repository; Cursor and Gemini CLI go through the generic stdin target.
    Do I need the glasses?
    Today, yes. The Meta Neural Band only pairs with Meta Ray-Ban Display, and gesture events reach nld through a web app running on the glasses. The Neuralang Band is how we remove that requirement.
    What happens to the code the agent writes?
    It is normal code in your normal repository. Neuralang only ever writes the intent and the checks. If the checks fail, nlc reports which one and the agent's attempt stays on a branch.
    Can I just type it?
    Yes. The text form is plain text with a .nl extension and a grammar you can read in five minutes. Many people write the first draft on a keyboard and use the band for the corrections.
    Who is this for?
    Anyone with a wrist. The band reads intended movement rather than movement, so it also works for people with limited hand mobility, and a language that needs no keyboard is a language for people who cannot use one. That is the work we care most about.
    Is Neuralang affiliated with Meta?
    No. Neuralang is an independent open project. Meta Neural Band and Meta Ray-Ban Display are trademarks of Meta Platforms, Inc., and are referred to here only to describe compatibility.
    08 · StartFifteen minutes

    Write your first function tonight.

    curl -fsSL https://neuralang.org/install | sh