Skip to content
HN On Hacker News ↗

1667 · write your novel in the terminal

▲ 37 points 94 comments by refsab 1w ago HN discussion ↗

Pangram verdict · v3.3

We believe this text is mainly AI, with some human-written content.

93 %

AI likelihood · overall

AI
4% human-written 96% AI-generated
SEGMENTS · HUMAN 0 of 1
SEGMENTS · AI 1 of 1
WORD COUNT 1,626
PEAK AI % 95% · §1
Analyzed
Aug 17
backend: pangram/v3.3
Segments scanned
1 windows
avg 1626 words each
Distribution
4 / 96%
human / AI fraction
Verdict
AI
Pangram v3.3

Article text · 1,626 words · 1 segments analyzed

Human AI-generated
§1 AI · 95%

newthe tree: every take you wrote, still there1667 asks a model for the next paragraph, then keeps every take it gives you side by side on a tree you can walk back through. Your keys, your endpoint, your files on your disk. No analytics, no telemetry, no account anywhere in the source.curl -fsSL https://1667.ai/install.sh | shInstalls 1667 0.9.8. Supports macOS arm64/x64 and glibc 2.17+ Linux arm64/x64. Run 1667 upgrade for later managed releases.verify the installer firstThis optional path needs GitHub CLI. It verifies version 0.9.8 before it runs the local file.d=$(mktemp -d) && (trap 'rm -rf "$d"' EXIT && cd "$d" && gh release download v0.9.8 --repo github.com/1667-ai/1667 --pattern install-stable.sh && gh attestation verify install-stable.sh --hostname github.com --repo 1667-ai/1667 --signer-workflow 1667-ai/1667/.github/workflows/release-npm.yml --source-ref refs/tags/v0.9.8 --source-digest 5548e0565fd424725d1c86493060566e01667c62 --deny-self-hosted-runners && sh install-stable.sh)$d=Join-Path ([IO.Path]::GetTempPath()) ([Guid]::NewGuid()); New-Item -ItemType Directory -Path $d | Out-Null; try { gh release download v0.9.8 --repo 1667-ai/1667 --pattern install-stable.ps1 --dir $d; if ($LASTEXITCODE -ne 0) { throw 'GitHub release download failed.' }; gh attestation verify (Join-Path $d 'install-stable.ps1') --hostname github.com --repo 1667-ai/1667 --signer-workflow 1667-ai/1667/.github/workflows/release-npm.yml --source-ref refs/tags/v0.9.8 --source-digest 5548e0565fd424725d1c86493060566e01667c62 --deny-self-hosted-runners; if ($LASTEXITCODE -ne 0) { throw 'GitHub attestation verification failed.' }; powershell -ExecutionPolicy Bypass -File (Join-Path $d 'install-stable.ps1'); if ($LASTEXITCODE -ne 0) { throw '1667 install failed.' } } finally { Remove-Item -LiteralPath $d -Recurse -Force }macOS · Linux · Windowsno accountno telemetryApache-2.01667 · demothe lantern keeper1667 homepage demo The opening write view shows “The lantern keeper,” chapter three, parts 11 through 13. Part 12 is on take 3 of 5: “He did not move toward the stairs. Instead he set the brass compass on the bar between them, and its needle went around twice, slow, like a dog deciding whether to lie down, and stopped pointing at Maren. ‘Has the cliff road ever been walked at night without a light?’ he asked. ‘Not by anyone who came back,’ she said. The needle shivered and held.” Compose: Enter opens the composer. The direction “let the unlit lantern answer” is typed and submitted. The generated next part reads: “The lantern flame bent toward the compass, though no door had opened.” The program then waits. Compare takes: Up moves back through story parts to the five-take passage. Left and Right compare sibling takes without removing any of them. Explore the path map: M opens one row per story part. Circles show sibling takes, the selected take is highlighted, and word counts sit at the right. Arrow keys move through parts and takes before Escape returns to the story. Every key in one place: Question mark opens this complete reference, then Page Down shows the remaining commands: 1667 key reference MOVE — read and navigate ↑ ↓: previous or next row ← →: flip between takes Shift+↑ Shift+↓: nudge the page a line Page Up or Control+U: page up Page Down or Control+D: page down G or Shift+G: first or last part [ ]: previous or next chapter U: undo a chapter break addition or removal WRITE — make the next part Space: continue this part Enter or I: type what happens next R: retake with the same prompt Shift+R: retake and edit the prompt W: write a take yourself E: edit prose and prompt Y or Shift+Y: copy the part or whole line Control+↑ Control+↓: previous prompts in Direct N: start a new story OPEN — panels and views M: map of the whole story F: facts kept for context O: switch story or open the library Colon or Control+P: command palette Comma: generation settings Control+G: wide context details Question mark: this key reference Escape: close what is open Q: quit 1667 SHAPE — arrange what exists D: delete this take and everything below it on the current line T: tag the line here C or Shift+C: chapters or end one here X: actions for this part P: show or hide directions Z: typewriter mode Shift+F: facts rail, automatic or off MAP — while the map is open M: cycle path, tree, and mass A: all takes or sketches Enter: reroute a node or sketch L: follow a tree line or open a mass line S: tree to mass, or cycle mass sorts D or T: prune, tag, or change the path Chapter rows differ; the line below the story explains the active row. Drag selects, Control+C copies, and Escape closes.how it worksPress Enter to open the composer, type what happens next, and press Enter again to generate the next story part.What it isIt drafts. You decide what stays.You move through a manuscript, and the model writes a paragraph when you ask it to. Then it stops and waits for you.Ask again, keep bothAsk for another version of a paragraph and the one you were reading stays where it is. The new take sits beside it, and ← and → flip between them. Every take you generate stays on the tree, and d is the only thing that removes one.The shape is a treeA story is a tree of parts and takes. The story line is the path you have selected through it. Branches you walked away from are still there, and still yours to come back to.It lives in a folderStories sit in a directory you chose. Export writes Markdown next to them. There is no server to sign in to and nothing to migrate off later.The treeEvery draft you didn't keep, still there.Ask for another take and the one you were reading does not go anywhere. It becomes a sibling. Press m and the shape of the whole thing opens up: the line you are on, the forks you made, and the paragraphs you wrote once and walked away from.Three views, cycled with the same key. Nothing is archived, nothing is pruned on your behalf, and d is the only thing that removes a take.pathThe story line as it reads now. One row per part, sibling takes as rings beside it, word counts down the right.Start a story →1667 · mapmap · pathPath map for “The lantern keeper.” Depth 1 through 13; 23 parts across 4 story lines. One row represents each selected story part. Circles beside rows 3, 5, 8, 11, and 12 show sibling takes. Part 12 is selected at take 3 of 5; part 13 carries the canon-storm tag. The clip moves to adjacent parts, returns to part 12, compares its sibling takes, then returns to take 3. Controls: Up and Down move by depth; Left and Right change take; Escape closes.No tracking. At all.Nothing in here is watching you write.Every line below describes code that does not exist. Go and check.analyticsno library, no endpoint, no eventstelemetrynothing is measured and sentcrash reportererrors go to a local log you can readinstall idnothing identifies your machineaccountthere is nothing to sign in toEvery request the program makes goes to the endpoint you configured. Nothing comes to us, because there is no server of ours to send it to.One exception: an optional update check, which ships off. Turned on, it reads a version number and tells you. It downloads nothing and replaces nothing.No account, ever. Nothing to create, nothing to delete.We never see your prose. It goes to the provider you chose, and their policy is the one that governs it.Apache-2.0 source. Every claim on this page is one you can check.Read the source →1667 · settingswhere prose goes1667 generation settings Theme: lantern Compose focus: off Provider: dry-run Base URL: not set Insecure HTTP to a machine you own: off Stored key: not set Profile: Default Model: not set Temperature: 0.7 Maximum tokens: 2,048 Sampling: default Context window: 32,768 Effort: default Cache policy: off; no controls; no time to live Alternate token-probability count: off Default route: Default profile Prose route: same as default Controls: Up and Down move; Left and Right choose; Enter advances; S saves; C checks; Escape closes.Every destination the program knows about is on this panel, and you put it there. Captured in demo mode, so the connection reads dry-run.ModelsYour keys. Your prose style. Your machine.1667 includes no model and rents you nothing. Point it at a provider you already pay, or at a model running on your own computer. The request goes straight there.generationtemperature0.8max output tokens2,048context window32,768cache policyoffdefaults, editable behind ,OpenAIAnthropicOpenRouterOllamaLM Studiollama.cppKoboldCppCustom endpointYour stories stay in plain text files on your computer. Your key goes in a private file that only you can read, never into the story folder.KeysLearn six. The rest find you.These eight cover a whole writing session. There are about 40 in total and ? shows you the rest, but nothing below this line is needed to finish a chapter.continueWrite the next part from heredirectSay what happens next, then continueflip takesMove between siblings of this partmovePrevious and next partretakeAnother take on the same promptwriteAdd a take in your own wordseditOpen the part in the full-screen editormapCycle path, tree, and mass and the program shows you the rest1667 · keysevery key1667 key reference MOVE — read and navigate ↑ ↓: previous or next row ← →: flip between takes Shift+↑ Shift+↓: nudge the page a line Page Up or Control+U: page up Page Down or Control+D: page down G or Shift+G: first or last part [ ]: previous or next chapter U: undo a chapter break addition or removal WRITE — make the next part Space: continue this part Enter or I: type what happens next R: retake with the same prompt Shift+R: retake and edit the prompt W: write a take yourself E: edit prose and prompt Y or Shift+Y: copy the part or whole line Control+↑ Control+↓: previous prompts in Direct N: start a new story OPEN — panels and views M: map of the whole story F: facts kept for context O: switch story or open the library Colon or Control+P: command palette Comma: generation settings Control+G: wide context details