Software engineer building developer tools, rendering systems and framework infrastructure in Rust and TypeScript.
Five layers sit between a description and the machine running it: the interface you write against, what compiles it, what runs it, the engine doing the work, and the surface it lands on. I have shipped something at every one of them.
Rust forms the core of the current work. TypeScript is the surface people use. That work covers React composition and its compiler, a scene renderer over a Canvas 2D rasteriser, a decorator framework for Discord bots, and an MCP server giving coding agents one memory across machines.
meo-canvas: declarative scenes to pixels
A Rust renderer with a Node.js surface. It resolves CSS flexbox, grid and block layout with Taffy, shapes text, paints through Skia, and exports raster, vector, animated and multi-page formats. Layout, text shaping, painting and encoding all happen in Rust; the Node surface describes a scene and asks for pixels.
await Root({ children: Text('Generated server-side, no browser') })meo-skia-canvas: Canvas 2D below the browser
A Skia-backed HTML Canvas 2D API for Rust and Node with parallel rendering, PDF and SVG vector export, wide-gamut colour, HDR output, and prebuilt platform binaries. The Rust crate lets other renderers link it directly, which is how meo-canvas paints.
The project began as a fork of Christian Swinehart's skia-canvas. The original design and lineage remain explicit in the repository.
MeoNode: React composition without JSX
@meonode/ui replaces JSX with typed function
composition while retaining React context, Server Components and opt-in
per-node memoization. Its optional companion,
@meonode/compiler, is an
experimental Rust/SWC plugin that lowers call sites at build time.
@meonode/mui puts MUI components
behind the same factories.
Div({ padding: 24, children: H1('Hello World') })MeoCord: structured Discord applications
A TypeScript framework that brings controllers, services, guards, dependency injection, a CLI and testing utilities to discord.js.
@Command()
class HelloCommand {}user-memory: one memory for every agent
Claude Code, Codex and any MCP client read and write the same store, so a rule you state once holds in every session, on every machine. Rust over SQLite, speaking MCP, with a server for the machines that share one store.
curl -fsSL https://github.com/l7aromeo/user-memory/releases/latest/download/install.sh | shChu Tao is a deployed multi-service Discord bot for Genshin Impact, Honkai: Star Rail, Zenless Zone Zero and Neverness to Everness. It consists of a MeoCord bot, a Rust REST API on axum and SeaORM, and a Next.js portal for OAuth and account linking. Its cards are rendered in-process by meo-canvas, without a browser.
Rust · TypeScript · Skia · Taffy · SWC · WebAssembly · MCP · Node.js · React · axum · PostgreSQL · SQLite · Redis · RabbitMQ · Elasticsearch · Docker
If these packages are useful to you, a coffee helps cover their infrastructure and the time that goes into maintaining them.


