latest installer:
https://github.com/0gsd/enough/releases/download/v0.6.0/enough_0.6.0_aarch64.dmg
the installation process is simple: copy the application from the dmg to the Applications folder, then run it. the first run will walk you through setup and model downloads.
i’m including detailed release notes for 0.6.0, because it’s helpful to see just how much enough has developed from its humble origins.
note though, that they are from claude. so they are wordy, and cringey at times. it’s interesting how that subtly shifts when it is talking about constructing a new sort of metalanguage. feels a bit less cringey, to me at least.
0.6.0 notes:
Decompiling a text, as prose or as verse. decompile now opens a small card that asks how to read the text: as prose, for narrative and non-fiction, which makes a fabulan, or as verse, for poetry, metered verse and song lyrics, which makes a fabulap with the poem’s lines, metre and rhymes. enough suggests one from how the text looks and marks it as a suggestion; the choice is yours. The twin is named for its text and for how it was read, notes.md.fabulan.cosm or rain.md.fabulap.cosm, and where the reading was unsure it now holds questions for the author (section 12.4).
Where the model runs. Every card that starts a job of its own, whether a decompile, a fabulac’s build or compile, settling answers, a Thym run or a short, has a line saying where its model runs. It starts on here, this machine’s model, every time. The cloud is offered only while the cloud slot is open, and choosing it sends that one job there and no other. A job that names no place runs here even while your conversation is on the cloud; with no model running here it works by rules or says it needs a model, and it never turns to the cloud by itself. What a job made says where it ran (section 16.6).
A folder’s fabulac. Option-click a folder of Python and choose build its fabulac…. The fabulac is the program’s specification: its files and the ways in, what it depends on and the settings it reads, how it came to be (read from the clone’s own log and tags, with nothing fetched), what each file does, what the whole is for and for whom, and questions for the people who made it. It’s built in five stages, the first two by rules. Each stage lands whole or not at all, and a build you cancel, or that stops partway, is taken up again after the last stage that landed. With no model running you still get an outline: the files, their ways in, the history and the licence. In this edition it reads pure Python a person could read in an afternoon, up to sixty files and six thousand lines (section 12.7).
cshorts and catems, and why enough never runs one. A fabulac compiles two ways. A cshort is the source written again from the fabulac alone, file by file, with a CSHORT.md that says which part of the fabulac each file came from. A catem says what a user can do with the program, at depth line, overview or manual. A cshort opens as text, one file at a time, and enough never runs it: nothing in a folder is run, imported or installed while its fabulac is built, and no run button, terminal or download-to-run is offered for a cshort anywhere. Set a cshort beside the original, and what the fabulac missed is what the cshort gets wrong (section 12.8).
The questions. Any volume can now say what it doesn’t know. The questions card puts them to you one or two at a time, each saying what it asks, why, and whom it’s for, with an answer field shaped to the question, and I don’t know, I’d rather not say and skip for now beside every one. Answers are kept as a sitting and sent together, then settled into the volume. Your readvisor can put the same questions to you in the conversation, and writes down your words exactly as you said them (section 13.7).
A holograph. A holograph, Ascribe’s description of one person with no name in it, is now filled in by answering its questions, under Ascribe’s rules: only its holder answers, an answer that reads like personal data is refused, and nothing of it goes to a model. Its public face, the isograph, is made by rules from a program of your own, and the release is recorded in the holograph before the isograph is written (section 13.8).
Thym 1, and writing programs in the page. Thym gains a second grammar, thym 1: a folder as an input, loops that collect, contracts of your own that a move keeps, a move that calls itself under a stated depth, editing moves that change only the lines they name, several outputs from one program, and the moves that ask and settle questions. A thym 0 program compiles and runs unchanged. Open a .thym file in the editor and the compiler’s verdict sits above the text as you type, with F8 to the line it refused. the moves… lists every move a program may call, with its signature and an example, and put it in writes one at the cursor. Nine programs come with enough, and any of them can be copied into your project to change. run with… has a field for every input, a list included, and reads its plan to you as sentences before anything runs (sections 13.4 to 13.6).
The manual, in six languages. Seven new sections, and every section the round rewrote, are in English, French, Spanish, German, Chinese and Japanese, with the same numbers in each, and six new help bubbles point at them.
The test of a fabulac. Before this release, three small open-source Python libraries were decompiled, and each was written again from its fabulac alone by a model that never saw the source. Each rebuild passes the original’s own test suite, every test, the same count as the original’s code. Read that with its limits: a fabulac holds what the original’s tests check, by design; and the reading and the rebuilding were done by large models, so this is what the method can reach, not what a small model on your machine will reach every time.
The dictionary. FEED gains the round’s own words (fabulac, fabulan, fabulap, cshort and catem among them) and five file-name words the specifications use (pyi, pyproject, toml, readme, utf). It holds 116,911 headwords, and is now kept at that count: a word that comes in is matched by a headword folded into the word it is a form of, where it is still found.
What changed in names. EMF is now the fabula, and the word EMF is gone from the app and the manual. Twins made before read exactly as they did. The old names Cacheawl and EML, kept in the code for one release since 0.4.3, are gone from it; your Canon and your settings are untouched.
For developers
- The specifications bundled in
docs/are the texts published at cosmoes.org, at edition 0.6.0, with a new shape. MacroCOSM OES is an OES with a core: five built-in formats (cosm,canon,fabula,doc,thym) and two MiniCOSMs, Comprise OES and Ascribe, each with a specification of its own. The fabula,oes: fabula/1, has three flavours (fabulan,fabulap,fabulac) and four new modules (I Inspiration, N Intent, C Construction, R Production);oes: emf/1reads forever as its old spelling and is never written. The dialectic is the core’s module D, which every format inherits. enough writes grammar version 0.6.0, and files that say 0.5.4, 0.0.2 or 0.0.1 read unchanged. thym 1is specified in Thym’s sections 4.9 and 20 to 23. One compiler reads both grammars; a refusal names the statement as written and its line. On the command line a run chooses its model with--model local|cloud|cloud:<id>and bounds it with--calls; a list input is given once per member (xs=a.md xs=b.md).python -m enough.thym conform: 119 passed.- Routes and tools renamed for the fabula:
/api/fabula/twin,/api/fabula/deriveand/api/fabula/compile, and the toolfabula_derive. The old/api/canon/emf,/api/canon/derive,/api/canon/compile,what: emfandemf_deriveare still served by the same code through 0.6 and go in 0.7. - New:
/api/fabula/buildwith/api/fabula/resumeand/api/fabula/cancel; the cshort and catem views;/api/fabula/suggestand/api/fabula/models;/api/dialectic/…;/api/ascribe/isograph;/api/thym/moves. The readvisor’s tools gainfabulac,dialecticandthym_moves, andcosm_lint(with/api/cosm/lint) now runs a fabula’s own checks and a holograph’s. - Removed:
/api/cacheawl/*(use/api/canon/*), thecacheawl:path prefix, theENOUGH_CACHEAWL_ROOTfallback,GET /api/canon/emlandwhat: "eml". - Python 3.11 held. A string in Thym’s runtime that only Python 3.12 and later could read is written plainly again, and a test asks a
python3.11, where one is installed, to read every module.
0.5.4 notes:
MacroCOSM OES doc updates and version sync to 0.5.4 for enough app, Comprise app, and all the OES specs
- the specifications come from cosmoes.org, all four of them, and are kept current at launch
- the grammar version is synced to 0.5.4
- export gains --no-marks and --reference
0.5.1 notes:
Pele for merirmaid diagram rendering; upgraded icons for readvisors and composure; Ascribe and Thym specs in the docs viewer plus DocOES export
0.5.0 notes:
initial release with Thym and Ascribe functionality baked directly into enough.
you can read the documentation if you want to understand how these new OES additions work, while i figure out a way to describe it all without sounding like a wacky goof-off. a work in progress.
also, better icons for composure and readvisor stuff.
0.4.4 notes:
the docs viewer, so you can behold MacroCOSM OES in all its spec-tacular glory.
and agent-free mode: a toggleable mode with all LLM-powered functionality turned off.
0.4.3 notes:
a lot of stuff.
cacheawl becomes Canon (our first capitalized module!) though it is roughly the same as cacheawl has “awlways” been, for now.
MacroCOSM OES is born, including its three level approach to information transmission: EMF aka fabula, SHORT aka short, and atem sometimes called a breath.
stay tuned!
0.4.2 notes:
just a dictionary update – 20,000 more headwords! – and the ability to set a custom composure file as the launch default for a project folder.
0.4.1 notes:
with version 0.4.1, enough has an entirely new set of capabilities! In brief:
- the home layer is now called “composure” and it is a multi-functional text planning and editing workspace. on launch, you’ll get a blank document, just like word processors of old. but there are also templates, and the readvisor can easily generate a plan or scaffolding composure for your project. there is also a multi-readvisor discussion composure template, where you have several readvisors duke it out (verbally) to deliver you a specified end result.
- what the heck is a readvisor? it’s the new name for what used to be called an “agent” as well as what used to be called “roles.” the default is named Ed as in Editor, but you can rename it to whatever you like. instead of a chat pill or the agent discussion layer, there is a persistent right-side panel you can show or hide at any time, or take full-screen to focus on a back-and-forth session. you can also make your own readvisors with the readvisory skill, and have multiple active at one time.
- the first-party enough english dictionary, or FEED, version 1.1. it’s the first version in enough, but i’m keeping the official version numbering scheme, as it has its own separate development path. it has 95,000 “headwords” and 175,000 words total, and that is expected to grow over time. you get a lovely interface to browse the words, and you can look up any word from view/edit mode. this is something really special, and it could become really valuable if alternative word-meaning authorities degrade. let’s hope that doesn’t happen!
- tweaks and polish all around, maybe some other cool stuff i haven’t highlighted … it’s all in the up-to-date help center!

please let me know here or however is convenient if you run into any issues.