a notebook for code & prose
Write code like
it blooms.
Loopstack is the quiet page where your functions and your paragraphs live together — draft an essay, run the benchmark inside it, publish both. Type below; things blossom.
$ npx loopstack init garden# type above — the compiler is listeningbloom("morning") → returns morning, petal by petalbloom("loop") → compiles to a quiet field of loopbloom("garden") → waits under the soil of gardenbloom("light") → is pressed like a light between pages
every keystroke blooms · nothing is sent anywhere
Everything grows from one page
No tabs between your thinking and your running. A Loopstack page is prose, code, output, and publish button — rooted in the same soil.
Cells that stay warm
Code blocks re-run as you edit the prose around them, so your numbers never go stale mid-sentence. Change the input; watch the paragraph update itself.
Diffs you can read aloud
Every revision is stored as a story, not a hash. Roll back to "the draft before I panicked" instead of a3f9c21.
Publish is a keystroke
Cmd-Enter ships the page — prose rendered, code executable by readers, outputs pinned. Your blog and your repo stop being different places.
A page that runs
Scroll and watch the cells type themselves — the way a page feels when it remembers being written.
# The dawn benchmark I keep claiming the new parser is faster. Let the page decide: cell bench(runs=200) { old = parse_v1("corpus.txt") new = parse_v2("corpus.txt") compare(old, new) } → v2 is 3.1× faster (p < 0.01) ...and the sentence above updates itself every time I save.
# ship prose + proof together export page { title: "The Dawn Benchmark" cells: runnable theme: "night-garden" } → live at loop.st/dawn-benchmark → readers can re-run every cell
Plays well with your whole shed
Gardeners, so far
"I wrote my thesis and its entire results pipeline in one Loopstack page. My advisor re-ran chapter four from her browser."
"The readable diffs converted me. 'Removed the apology from the intro, sped up the loop' is my favorite commit ever."
"My blog posts now carry their own benchmarks. Readers argue with my code instead of my vibes. Huge upgrade."
A garden of saved blooms
Every page you publish presses a bloom into the archive. Tap one to replay the burst it made the day it shipped.
Your first page is already open
Free for personal gardens. One command, no account, and the tutorial is itself a runnable Loopstack page — of course it is.
MIT-licensed core · self-hostable · petals included