About tabnas #
tabnas is an open source parsing engine. It is a project, not a product: nothing here is sold, there is no account to create, and the code runs on your machine rather than ours.
What it is #
tabnas represents a grammar as a table of rules and token alternates. Plugins extend those tables to add syntax. The JSONC plugin adds comments to JSON, and jsonic adds relaxed quoting and other syntax.
The rule table is a compile target for ABNF and a data format that agents can emit directly. Validate the grammar structure, then test its behaviour with sample inputs. Why tabnas explains the design and the parser algorithm.
What ships #
39 packages: the engine, the grammar tooling,
19 language and data-format grammars, a web component
that draws a chess game, the syntax plugins, the command-line tools,
and the agent distributions: Agent Skills, an
MCP server and the tabnas command-line
tool. 37 of them ship as a Go module as well as an npm package,
from one shared set of fixtures that both runtimes must pass.
Releases lists every one with its current
version; /versions.json is
the same answer for a program.
Everything is MIT licensed. The source is on GitHub under github.com/tabnas, and the packages are published to npm under the @tabnas scope.
Who builds it #
tabnas is written by Richard Rodger, who has been building parsers and open source Node.js libraries for a long time: the engine grew out of jsonic, a forgiving JSON parser, which is still one of the grammars here.
One maintainer is a real constraint and the site says so rather than implying a team. Contributions arrive through GitHub and are welcome, including ones written with an AI agent: community explains how that works and why the shared fixtures make it safe.
How it is funded #
Development of tabnas is sponsored by Voxgig. There is no commercial edition, no hosted plan to upgrade to, and no telemetry in any package. The one service the project operates is the hosted MCP endpoint, which exists for agent clients that cannot spawn a local process; it stores nothing, and the privacy policy is short because there is nothing to describe. Sponsors has the detail.
What state it is in #
Pre-1.0, and pinned exactly for that reason: the engine is at
0.12.11, and a caret range would silently accept the
next minor. The parser is deterministic, which means it does not
handle ambiguous grammars, and you supply the lexer's token
definitions.
Other parsers names the cases where ANTLR,
Peggy, Chevrotain, nearley or tree-sitter is the better answer, and
the FAQ has a scope section for the things this
project will not do.
Per-repository CI, release and compliance state is published at status, so the claim that both runtimes agree is one you can check rather than take.
Getting in touch #
Questions and bug reports go through GitHub; richard@ricebridge.com reaches the maintainer directly. Contact has the right channel for each kind of message.
Tábla na nAistrithe: Irish for "a table of translations", which is what a grammar is.