Ravel
  • Get started
  • Guides
    • Cookbook
    • Markdown fences
    • Pipes and directives
    • Provenance maps
  • Reference
    • Public API
    • 0.1 contracts
    • Ravel Map schema
    • Chunk syntax
  • Playground
  1. Ravel
  • Start here
    • Five-minute getting started
    • Ravel cookbook
    • Migrating FizzBuzz-era Ravel material
  • Language
    • Markdown fenced-block profile
    • Ravel embedded chunk syntax guide
    • Ravel pipes and directives reference
  • Reference
    • 0.1 contracts and configuration
    • Public JavaScript API
    • Ravel Map schema guide
    • Generated-output provenance maps
    • Filesystem safety and trust boundaries
    • Runtime support and testing policy
  • Design and history
    • Ravel design plan
    • First graph and chunk-processing proof of concept
    • Ravel Explorer design
    • History and starting point
    • 0.1 release checklist

Ravel

Assemble named code pieces into artifacts while retaining a source-linked dependency graph.

Ravel — weave the story, keep the thread

Ravel. Weave the story. Keep the thread. Source threads connect a literate document to generated code.

Ravel assembles named code pieces into finished artifacts while preserving the dependency graph and provenance that explain exactly where every generated range came from.

Static by design · Browser-safe core · Source-linked diagnostics

Open the live playground Get started

01

Write in narrative order

Name fenced code chunks where they make sense in the explanation. Assembly order stays explicit and independent.

02

Generate deterministically

The portable graph evaluator composes, transforms, and emits artifacts without executing document JavaScript or shell commands.

03

Trace every range

Versioned provenance maps connect generated offsets back to exact or honestly coarse source locations and derivation steps.

Five minutes to a woven file

Small surface. Explicit composition.

Ravel 0.1 focuses on dependable static weaving: Markdown fences become a portable Ravel Map, the core resolves a graph, and hosts decide where artifacts may be written.

Read the five-minute guide or experiment without installing anything in the browser playground.

greeting.md
---
ravel:
  document: greeting
---

```javascript {.ravel #message}
const message = "Hello from Ravel";
```

```javascript {.ravel #main}
_"message.javascript"
console.log(message);
```

```ravel
out("dist/greeting.js", _"main.javascript")
```

Ravel 0.1 · MIT licensed

 
  • Report an issue
  • GitHub

  • Playground