X:0000 Y:0000
   [ TRACE ] · [ STEP ] · [ EMIT ] · [ SYNC ] · [ FORK ] · [ AWAIT ] · [ PIPE ] · [ CALL ] · [ READ ] · [ WRITE ] · [ MONITOR ] · [ OBSERVE ] · [ NODE ] · [ RUN ] · [ FAULT ] · [ RESOLVE ] · [ DISPATCH ] · [ CAPTURE ]    [ TRACE ] · [ STEP ] · [ EMIT ] · [ SYNC ] · [ FORK ] · [ AWAIT ] · [ PIPE ] · [ CALL ] · [ READ ] · [ WRITE ] · [ MONITOR ] · [ OBSERVE ] · [ NODE ] · [ RUN ] · [ FAULT ] · [ RESOLVE ] · [ DISPATCH ] · [ CAPTURE ]
Features How it works Instrument Demo Join Waitlist →

// Instrumentation Layer · v0.1.0-alpha

M.O.L.A.

Monitor & Observe Live Application Traces

A real-time debugger that lives inside your codebase.
Instrument async functions with two markers. Watch every node, every step, and every failure as it happens.

See how it works
scroll
// ── what is mola ─────────────────────────────────────────────────
01 ──
Instrument in minutes
Add two comment markers and two wrapper calls to any async function. The AST parser extracts your step structure automatically — no config files, no schemas.
02 ──
See every execution
A local dev server buffers 500 events per node. Every run, step outcome, duration, and thrown error is visible in the UI — even if the tab wasn't open.
03 ──
Debug without guessing
Select any node or step and see its source context, last return value, and fault paths. Time-travel to any past run and compare states.
// ── features ──────────────────────────────────────────────────────

Built for the
way you actually debug

Every detail of Mola is designed around how async code fails in production — not how it looks on a diagram.

UI ●
Live Node Graph
Pan and zoom a real-time graph of all instrumented nodes. Edges are inferred automatically from async call chains via AsyncLocalStorage context. Animated packets travel active edges.
UI ◌
Step Pipeline
Expand any node to see its full step execution timeline — each step labeled, timed, and color-coded. Fault paths render below failing steps with exact error messages.
UI ●
Inspector Panel
Click any node or step to see source location, description, last return value, ASCII progress bar, and complete fault path list in a clean sidebar.
Runtime ○
Time-Travel Snapshots
Click any past run in the diagnostic console to replay system state at that exact moment. Step through executions, compare runs, return to live with one click.
Runtime ●
Edge Inference
No manual graph wiring. Parent node context propagates automatically through AsyncLocalStorage — call a traced function from inside another traced function and the edge appears.
UI ✕
Deep Dive Terminal
Launch a full xterm.js terminal session from any node or step in one click. Saved sessions persist as Markdown. Debug in context without switching windows.
// ── how it works ───────────────────────────────────────────────────
01
Instrument
Add @mola-node and @mola-step markers to any async function alongside matching traceNode() and traceStep() wrappers. One import, two patterns.
npm install @mola5/tracer
02
Start the server
Run npx mola start alongside your application. The dev server parses your source files, registers node manifests, and opens a WebSocket for live events.
npx mola start → localhost:4242
03
Observe
Open the Mola UI. Every function invocation streams in live — nodes light up, steps progress, errors surface with full context. Click anything to inspect it.
localhost:5173 → live dashboard
// ── instrumentation ────────────────────────────────────────────────
src/orders/processor.ts TypeScript
1import { traceNode, traceStep } from '@mola5/tracer';
2
3// @mola-node: order-processor
4export const processOrder = traceNode('order-processor', async (orderId: string) => {
5 let cart, payment;
6
7 // @mola-step: 1_validate_cart
8 cart = await traceStep('1_validate_cart', async () => {
9 const c = await db.getCart(orderId);
10 if (!c.isValid) {
11 // @mola-error: cart_expired
12 throw new Error('Cart contains expired items');
13 }
14 return c;
15 });
16
17 // @mola-step: 2_charge_payment
18 payment = await traceStep('2_charge_payment', async () => {
19 return await stripe.charge(cart.total, cart.paymentMethod);
20 });
21
22 // @mola-step: 3_fulfill_order
23 await traceStep('3_fulfill_order', async () => {
24 await fulfillment.ship({ orderId, payment });
25 });
26
27});
// ── live dashboard ─────────────────────────────────────────────────
$ diagnostic_console
◈ node graph

// early access

Be first in.

Mola is in private alpha. Join the waitlist
and we'll reach out when access opens.

No spam. Unsubscribe any time.