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.
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.
| Package | What 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 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.
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:
| Renderer | renders / sec |
|---|---|
| markdown (this package) | 6,775 |
| markdown-it | 2,020 |
| marked | 1,064 |
About 3.4× faster than markdown-it and 6.4× faster than marked on the same document.
One package per directory, statically typed, tested, current-language features only, with an entry in the catalog. See CONTRIBUTING in the std-contrib repository.