Typeaway

is a desktop application in which the source of a program is prose. You open a workspace, write in the language you already use to explain the work, and press . What comes out is a real codebase: an of everything the pages named, and that give those things behaviour.

This page is written the way a page in that application is written, and it is being shown to you by the same reading. The colours and the underlines are not styling: they are what made of these sentences, and each one says on hover what it was read as.

is a folder you already have. It holds , and it holds a .work folder that writes and you never edit.

Nothing else is asked of it. There is no project file to configure, no schema to declare first, and nothing is generated outside .work, so a workspace opened in is a workspace you can still open in anything else.

is the source: one markdown document per page, and no second language underneath. Headings are structure. The @ sigil is how a page names something.

A page never states a kind. A thing that has members is a category, and the application derives that from the shape of what you wrote — which is why an edit stays legible to the person who made it a month later.

is anything a page names with @. A thing is defined where a page first says what it is, and it is cited back to that sentence ever after, so every part of the built program can answer the question "which sentence asked for this?".

  • is the reading: for each sentence, what it does and what it names.
  • is the one verb that turns that reading into code.
  • is the store of every thing, with its kind, its fields and its citation.
  • is the library that gives those things behaviour.

is a parser and a small local model, not a chat. It runs on your own machine while you type, and it is deterministic: the same words read the same way twice.

That is what the marks on this page are. A value it recognises — a count, a limit, a date, a duration — is marked in the text, and a word too vague to build from is marked as something to settle rather than as a mistake. The reading is fast, and it never leaves the machine.

is the one verb. It takes the map and derives two outputs, and only two: the and the . There is no file per thing and no hidden state; delete .work, press it again, and the same program comes back — the same things, the same shape, the same citations. What moves between two builds of an unchanged page is the model's own wording inside them, and nothing else.

A language model is asked once per changed page: it reads the page whole and returns the things that page says, each cited to the sentence that says it, and the middle of any script a thing needs. Everything it writes is checked against the page, compiled and sandboxed before it is kept; an entry whose citation does not hold is handed back with the error rather than landed. is the one door to every model and every credential, so a key is never in a page and never on your disk.

is the surface that opens beside a page when you click anything the page named. It shows what the page said a thing is, the sentence that said it, and what it belongs to: the documentation of the program, written by writing the program.

is the way in, and it has three doors:

  • signs you in with GitHub, through .
  • asks for an account; today that door opens by invitation.
  • fetches the desktop build for macOS once one has shipped.

What happens when a page changes? reads the changed sentences again and leaves the rest alone, so an edit moves only what it touched.

What happens when two pages name the same thing? The name resolves while it is unique, and the completion shows both parents when it is not.

What happens to the code you already have? It stays code. derives a program from prose; it does not ask you to rewrite one you already trust.