- TODO Demo
- Try it for yourself
- Latest updates
- Source code
- caching
- sqlite storage
- infinite loops (disallow recursive transcludes after x recursions?)
- cli
- narrow down file format/directory names.
.monumentfor ai? Is intermediate.txtneeded? customizable? - interactive repl. creates a new md document
- narrow down file format/directory names.
- actions
- actions from markdown links
- hypertext
- support iframe transclusion for html
- actions from links/forms/buttons (ala. htmx)
- how to run local http server to expose system state? (filesystem, contacts etc.) how can this be extensible? MCP?
- UI
- vscode plugin?
- obsidian plugin?
- readme
- more examples for programming environment vs IDE
- more comparisons (Observable, Jupyter, WebApplets, MCP)
- make relationship between documents and programs clearer
- examples of what you can actually build
- time zone converter
- evals
- writing prompts
- explanation of
.txtand.ai.txtextensions - include most of my obsidian notes
- screenshots/videos
- architecture
- diagram
- how does the reactive processing work?
- what's the relationship between markdown files and execution
- how do the various commands work together
- define transclusion
- support http resources
- utc time from chislloyd.net/utc.md
- Tick clock when building
- Fix race condition
- Use Loader
- Add AbortSignal to build
- Figure out types for "Resolved Model Context" vs. "Model Context"
- lazily depend on files that haven't been created yet (i.e. files in output dirs)
- markdown
- ignore html comments
- output chatgpt message format
- include image context
- split at transclusions to give the model an extra hint as to sections
- Async queuing - fast resource events can prevent AsyncComputed from ever running
Monument reimagines the programming environment. Modern operating systems restrict user agency by hiding data in binary files and concealing state in processes. AI enables us to rethink how we store and interact with data.
What makes a "programming environment"? It goes beyond tools like VSCode. It draws inspiration from LISP machines, the Canon Cat, Hypercard, and Dynamicland. A programming environment unifies program editing and execution, creating a live, malleable system.
Monument takes the first step toward this vision by reactively processing documents through Claude (Anthropic's LLM). Documents connect through transclusion to form large, dynamic knowledge graphs. You can reuse and abstract programs through transclusion. Like a spreadsheet, the reactive document system maintains efficiency and stays current.
I welcome you to learn from both the successes and challenges of this project. Please be kind ✌️
TODO
(In random order)
- Non-deterministic output. Even fully deterministic models are very sensitive[CITE] to small changes in prompts, so the output feels non-deterministic. Monument instead strives for semantic stability. For example, these two outputs are roughly the same despite subtle differences in input:
The weather today is 19c.
19c
-
Results need verification. Models excel in many areas but can make mistakes. I plan to add the ability to do evals, but this represents a fundamental shift in computing. It's much more like talking to a person than a calculator.
-
High-level. Monument may help you meal-plan but it probably won't let you write kernel device drivers. I'm building this for muggles, not wizzards. Computer-industry professionals already have excellent tools and entrenched practices whereas regular people are chronically underserved.
-
Efficiency. A key principle to Monument is live-ness. As you make changes, results should be reflected immediately. That means lots of calls to models. There exists opportunites to optimize this, but for as long as this remains a research prototype it'll cost quite a bit of energy/money.
-
Privacy. I'm using remote models, specifically Anthropic's Claude, because they are really high-quality, fast and it's relatively easy. This means all your data is transmitted to Anthropic. This isn't ideal, but the engineering work making local models work reliably feels significant but mechanistic. There isn't much to learn by changing this but is a requirement that will obviously change as this gets closer to shipping.
bun run bin/monument.ts --directory examples --output-directory examples/outTODO
Monument extends the semantic meaning of Markdown by remapping the image syntax to mean "transclusion":
-
Inline transclusions using
:The current time is 
-
Block transclusions using
on a single line:
TODO
- Propagator networks / signals
- call convension
- handwritten prompts (unlike https://spiral.computer, vscode /test)
Tools like Cursor and Copilot enhance text editors but don't address their fundamental limitation: they lack liveness (as explained in this talk). These tools facilitate a model-to-code-to-execution workflow. Monument asks: why not communicate directly with the program?
This project embraces experimentation. Given its exploratory nature, I prioritize rapid iteration over traditional software engineering practices. This means minimal CI, limited testing, and JavaScript implementation. A more suitable language may power future versions once the project's direction solidifies.
-
Clone the repository
jj git clone https://github.com/chrislloyd/monument
-
Install dependencies:
bun install
-
Run tests:
bun test
- bin Command-line binary
- docs - Markdown project documentation
- examples - Markdown samples to illustrate what you can use this for
- src - Core source files with colocated unit tests
TODO
- Transclusion
- LLM
- Reactive processing
- Hypertext
- Knowledge graphs
- Programming environment
- Live environemnt
TODO