Packages

Community packages live in the std-contrib catalog. A package is just a URL: it is fetched over HTTPS and inlined at compile time, no package manager, no install step, no lockfile. Every package is plain Lumen, statically typed, and tested.

Using a package

Import a package's export straight from its URL and build as usual.

import greet from "https://lumen-lang.org/package/std-contrib/hello/hello.ts";

console.log(greet("world"));   // Hello, world!

lumen-lang.org/package/std-contrib/<name>/<file>.ts redirects to the package's repository; the raw GitHub URL works too.

Catalog

PackageWhat it does
agents Agents, prompts, models, MCP links and sub-agents as database rows — run, evaluated and reconfigured over HTTP without a restart.
ai Typed AI helpers for OpenAI-compatible chat APIs: RAG, conversation memory with context compression, structured output, a live tool-calling agent loop, and an MCP client (HTTP, stdio, SSE).
args Command-line flag and option parsing (hasFlag, optionValue, positional).
code-index Codebase symbol index (cidx): map/find/refs/search/rank, persistent cache, 8 languages — AI navigation, no vector DB.
csv CSV parser/stringifier with quoted fields, CRLF, row helpers, and flat arrays.
dotenv .env parser for key/value config strings.
geo 2D point helpers: distanceSq, manhattan.
greeter Two-file package; demonstrates recursive URL-relative imports.
hello Minimal greet function; canonical URL-import example.
markdown Pure-Lumen Markdown -> HTML renderer (no FFI); render(md).
mathx Integer math helpers: gcd, lcm, ipow, isPrime, clampInt.
pdf PDF text and metadata via Poppler: layout mode, page ranges, document info.
pgvector Persistent vector store on PostgreSQL + pgvector via FFI: upsert, cosine search, distance bounds.
plume Typed data-mapper and migration tool over PostgreSQL, SQLite and MySQL via FFI: explicit field/column mapping, projections, relations, checksummed migrations, transactions.
quickjs Embed a QuickJS JavaScript sandbox via FFI; set/eval/get values across the boundary.
rest Router and HTTP server: decorated controllers, a route table checked at startup, JSON replies.
semver Semantic Versioning parser, comparator, incrementer, and range evaluator.
socketio A socket.io server the official browser client connects to: Engine.IO and Socket.IO framing over websocket.
sqlite Typed SQLite access via FFI; open/exec/query int and text over a C shim.
sse Server-sent events: one-way push over an HTTP response that never ends, with resumption.
token-gate Token-optimizing command proxy (tkg): per-command handlers for git/ls/find/du/grep/tables/linters/tests, savings ledger, Claude Code hook.
toml Practical TOML parser/stringifier for sections, dotted keys, typed values, and simple arrays.
tracing OpenTelemetry traces for AI runs over OTLP/HTTP: spans, generations, tools, token usage — six backends, Langfuse-compatible.
websocket RFC 6455 websockets: handshake, frames, server and client — a browser connects, exchanges and closes clean.

Each name links to the package's own page — what it does, its API, the decisions inside it, and how it is tested. quickjs, sqlite and pdf link native libraries through the C FFI, so they are built locally rather than fetched purely by URL; their pages document the build.

markdown is fast

The pure-Lumen markdown renderer outpaces the popular Node.js Markdown libraries. Rendering a typical ~3 KB document in a tight loop — renders per second, higher is better:

Rendererrenders / sec
markdown (this package)6,775
markdown-it2,020
marked1,064

About 3.4× faster than markdown-it and 6.4× faster than marked on the same document.

Contributing

One package per directory, statically typed, tested, current-language features only, with an entry in the catalog. See CONTRIBUTING in the std-contrib repository.