Hyades
LaTeX math as pure Unicode text. For terminals, code comments, emails, and everywhere rich formatting isn't a thing.
What Is This?
Hyades takes standard LaTeX math like this:
and renders it as multi-line Unicode text:
or plain ASCII if you ask it to:
It's a native CLI binary written in pure C. As such it is extremely fast and doesn't require any additional dependencies.
Linux, MacOS, and Windows, and Web (WASM) are all supported out of the box.
Try it in your browser → -- interactive WASM playground with tutorials and a full syntax reference. No installation required.
Features
Math -- 95% LaTeX compatible
Fractions, roots, integrals, summations, products, limits, matrices, piecewise functions, aligned equations, Greek letters, auto-scaling delimiters, overbrace/underbrace, accents, primes, binomial coefficients, extensible arrows, equation tags, you name it... Paste your existing LaTeX and it just renders.
Full math feature list
Beyond math
- Tables --
\table with \row/\col, 6 frame styles (single, double, bold, rounded, dotted, none), padding, alignment, column spans
- Lists --
\fancylist builds a list using Markdown syntax
- Layout -- Flex-like
hbox/vbox containers with auto/intrinsic/fixed-width children, horizontal and vertical alignment
- Text formatting --
\textbf, \textit, \texttt, \verb|...|
- Paragraph layout -- Justified text with novel monospace-optimal line breaking, or just vanilla left aligned; hyphenation
- Rules --
\hrule/\vrule with auto-sizing and smart automatic junction intersection
- Macros -- User-defined with parameters and variable scoping
- Computation -- Variables, arrays, loops, conditionals, lambdas -- a complete programming language with a stack-based instruction machine
- ASCII mode -- Full ASCII fallback for environments without Unicode
- Syntax highlighting -- For vscode, Helix, and Neovim
- Inline error diagnostics -- For vscode, Helix, and Neovim
Installation
Pre-built binaries
Download from Releases (macOS, Linux, Windows), then run the install script:
The script will:
- Install hyades, cassilda, hyades-cmp, and add to PATH
- Unix:
$HOME/.local/bin
- Windows:
$env:USERPROFILE\bin
- Integrate into Helix and Neovim if installed
- Render documentation files at
- Unix:
$HOME/.local/share/hyades/docs
- Windows:
$env:USERPROFILE\AppData\Local\hyades
- Typeset something to verify the installation
This adds hyades, cassilda, and hyades-mcp to your PATH and integrates the tree-sitter grammar and LSP server into Helix and/or Neovim if installed.
Build from source
Usage
The two binaries
MCP server
An MCP server lets AI assistants render math expressions on the fly.
Remote -- no install, Cloudflare Worker:
Local -- offline, native binary (included in releases):
Example: Reason with Claude about math in the terminal
Editor support
The install script automatically configures any installed editors. Manual setup is also possible -- config files are in editor-configs/ within the release.
Helix and Neovim get full integration out of the box:
- Syntax highlighting via tree-sitter (
.hy and .cld files)
- Error diagnostics -- inline and in the gutter
- Go-to-definition -- jump to macro and label definitions
- Hover -- documentation pop-ups for commands and macros
- Completions -- context-aware suggestions
- References -- find all usages of a symbol
A VS Code extension is also available. (I'm yet to polish and publish it, should be a matter of days.)
Beyond all this
Hyades has an bytecode compiler and a stack-based VM (called Subnivean), which allows you to write
pretty much any computational code to support your macros and rendering. Two fun examples are included
in the release package. The first is the Matrix code effect for the terminal
And the second one is interactive Game of Life
Which is also a direct proof of Hyades' Turing-completeness.
AI Disclosure
I started this project before the era of AI, so about half of it was made without it, and later Claude helped
me greatly to implement features that would take me weeks on my own, especially with a small baby to take care
of, and to bring this project to completion.