<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Local-First AI Writing Tool on RockB</title><link>https://baeseokjae.github.io/tags/local-first-ai-writing-tool/</link><description>Recent content in Local-First AI Writing Tool on RockB</description><image><title>RockB</title><url>https://baeseokjae.github.io/images/og-default.png</url><link>https://baeseokjae.github.io/images/og-default.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 01 Oct 2026 02:57:24 +0000</lastBuildDate><atom:link href="https://baeseokjae.github.io/tags/local-first-ai-writing-tool/index.xml" rel="self" type="application/rss+xml"/><item><title>1667 Review: A Terminal UI for Writing Fiction With LLMs</title><link>https://baeseokjae.github.io/posts/1667-terminal-ui-fiction-language-models/</link><pubDate>Thu, 01 Oct 2026 02:57:24 +0000</pubDate><guid>https://baeseokjae.github.io/posts/1667-terminal-ui-fiction-language-models/</guid><description>1667 is a free, local-first terminal UI for writing fiction with LLMs that keeps every generated take on a branching story tree instead of overwriting it.</description><content:encoded><![CDATA[<p>1667 is a free, open-source terminal UI for writing fiction with language models. Every paragraph the model generates is kept as a sibling &ldquo;take&rdquo; on a branching story tree you navigate with the arrow keys, so rejected drafts are never overwritten. It is local-first and works with OpenAI, Anthropic, Ollama or any compatible endpoint.</p>
<h2 id="what-is-1667-the-terminal-ui-for-writing-fiction-with-llms">What Is 1667, the Terminal UI for Writing Fiction With LLMs?</h2>
<p>1667 is a full-screen, keyboard-driven terminal environment purpose-built for drafting fiction with large language models. Its <a href="https://github.com/1667-ai/1667">GitHub description</a> says it plainly: &ldquo;A full-screen terminal environment for writing fiction with language models.&rdquo; There is no browser tab, no Electron shell and no web editor — the entire program runs in your terminal. The vendor&rsquo;s own documentation lives at <a href="https://1667.ai/">1667.ai</a>.</p>
<p>The name is the product thesis. 1,667 words per day multiplied by 30 days equals roughly 50,000 words, the classic pace that finishes a first draft in a month. The tool is built around that cadence rather than around one-click generation: the model writes one passage, stops, and waits for you to decide what happens next.</p>
<p>Three design decisions define it:</p>
<ul>
<li><strong>The take tree.</strong> Regenerating does not discard the previous paragraph. Each generation becomes a sibling branch you can return to later.</li>
<li><strong>One paragraph at a time.</strong> Space continues, Enter supplies a direction, and the model produces a single take and then waits. There is no &ldquo;generate my whole novel&rdquo; button.</li>
<li><strong>Local-first storage.</strong> Stories live in a project folder you choose; API keys sit in a private file outside that folder.</li>
</ul>
<p>As verified on 2026-10-01, the project is Apache-2.0, was created on GitHub 2026-08-04, and shows 26 stars, 0 forks and 7 open issues against a last push of 2026-09-29. The npm CLI package <code>@1667-ai/cli</code> has 105 published versions going back to 2026-07-26, with <code>latest</code> at 0.10.9 and <code>beta</code> at 0.11.0-beta.5.</p>
<h2 id="how-does-the-take-tree-change-the-drafting-workflow">How Does the Take Tree Change the Drafting Workflow?</h2>
<p>The take tree is the real product, and it is the feature that separates 1667 from nearly every other AI writing tool on the market. When you ask for a continuation, the model does not hand you one paragraph and overwrite your draft — it creates a take, and that take becomes a node on a tree.</p>
<p>Left and Right flip between sibling takes at the same point in the story. Pressing D deletes a take you do not want. Regenerating adds another sibling rather than destroying the previous one. The practical consequence is that rejection becomes reversible: if you cut a scene in chapter three and decide two weeks later that the earlier version was better, it is still there.</p>
<p>Most competitors implement the opposite model. A chat interface is a linear stream — you type, the model replies, and the earlier reply is either buried in scrollback or gone entirely. Even purpose-built fiction tools generally regenerate in place, which forces the writer to make a keep-or-discard decision before they have enough context to make it well.</p>
<p>The map view (<code>m</code>) is what makes a tree of takes legible. It cycles through three lenses:</p>
<table>
  <thead>
      <tr>
          <th>Map lens</th>
          <th>What it shows</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Path</td>
          <td>Only the currently selected story line, i.e. the manuscript as it stands</td>
      </tr>
      <tr>
          <td>Tree</td>
          <td>Every branch, including takes you have not selected</td>
      </tr>
      <tr>
          <td>Mass</td>
          <td>Word-count bars per line, so you can see structural weight at a glance</td>
      </tr>
  </tbody>
</table>
<p>That third lens is the interesting one. Word-count bars turn the story tree into something closer to a project dashboard — you can see which subplot has run long and which chapter is thin without reading a word.</p>
<h2 id="why-does-local-first-privacy-matter-for-ai-fiction-writing">Why Does Local-First Privacy Matter for AI Fiction Writing?</h2>
<p>Fiction is unusually sensitive material. Unpublished manuscripts are the writer&rsquo;s competitive asset, and cloud drafting tools necessarily hold a copy. 1667&rsquo;s answer is structural rather than a policy promise: the software has no account system to log into and no server to phone home to.</p>
<p>According to the vendor&rsquo;s own documentation, 1667 ships with <strong>no account, no analytics, no telemetry, no crash reporter and no install ID</strong>. Stories are stored in a project folder you pick, and API keys live in a private file outside that folder. An update check is enabled by default and can be disabled in settings.</p>
<p>That is the direct inverse of the cloud SaaS model. Sudowrite is a browser-based service positioned as &ldquo;the non-judgemental AI writing partner,&rdquo; with an account, a credit balance and bundled proprietary models — Muse 1.5 and Ballad — alongside 30-plus industry models, and no bring-your-own-key option on the lower tiers. Novelcrafter is a web platform organised around a Codex story bible, with bring-your-own-key AI unlocking only from the Hobbyist tier upward.</p>
<p>To be precise about what local-first does and does not mean here: the <em>software</em> is local, but the <em>model</em> may not be. If you point 1667 at OpenAI, your prose still leaves the machine. The privacy claim only becomes complete when you pair it with a local endpoint.</p>
<h2 id="which-models-does-1667-work-with--cloud-local-or-both">Which Models Does 1667 Work With — Cloud, Local, or Both?</h2>
<p>1667 is model-agnostic by design. The settings screen exposes presets for OpenAI, Anthropic, OpenRouter, Ollama, LM Studio, llama.cpp and KoboldCpp, plus a custom endpoint option. A local model needs no API key at all.</p>
<p>The documented starting defaults are:</p>
<table>
  <thead>
      <tr>
          <th>Setting</th>
          <th>Default value</th>
          <th>Range</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Temperature</td>
          <td>0.8</td>
          <td>Adjustable</td>
      </tr>
      <tr>
          <td>Max output tokens</td>
          <td>2,048</td>
          <td>Adjustable</td>
      </tr>
      <tr>
          <td>Context window</td>
          <td>32,768</td>
          <td>1 to 1,000k</td>
      </tr>
      <tr>
          <td>Cache policy</td>
          <td>off</td>
          <td>—</td>
      </tr>
      <tr>
          <td>Update check</td>
          <td>on</td>
          <td>Disableable</td>
      </tr>
  </tbody>
</table>
<p>The 32,768-token default context window is the number to watch. A novel-length project will outgrow it, and the adjustable ceiling of 1,000k tokens means the practical limit is your model&rsquo;s own context length, not the tool&rsquo;s. Temperature 0.8 is a sensible default for prose — high enough to produce varied takes, not so high that the model stops making sense, which matters when the whole workflow depends on generating <em>several</em> candidates and choosing between them.</p>
<p>The local-model path is where the combination gets interesting. Ollama, LM Studio, llama.cpp and KoboldCpp all run on your own hardware, which means an offline drafting loop with no key, no account and no per-token cost. Generation is slower and the prose quality depends entirely on which model you load — see our <a href="/posts/best-local-llm-models-2026/">best local LLM models guide</a> for what is actually viable on consumer hardware in 2026, and our <a href="/posts/aider-ollama-local-coding-2026/">Aider plus Ollama setup guide</a> for the general shape of wiring a local endpoint into a tool.</p>
<h2 id="how-do-you-install-1667-and-write-the-first-paragraph">How Do You Install 1667 and Write the First Paragraph?</h2>
<p>1667 ships four installation paths, which is unusually broad for a pre-1.0 project:</p>
<table>
  <thead>
      <tr>
          <th>Install method</th>
          <th>Command / requirement</th>
          <th>Platform</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Shell script</td>
          <td><code>curl</code> installer from 1667.ai</td>
          <td>macOS arm64/x64, glibc 2.17+ Linux</td>
      </tr>
      <tr>
          <td>PowerShell</td>
          <td>Windows installer script</td>
          <td>Windows x64</td>
      </tr>
      <tr>
          <td>npm</td>
          <td><code>@1667-ai/cli</code> (Node 22)</td>
          <td>Cross-platform</td>
      </tr>
      <tr>
          <td>Source</td>
          <td>Bun 1.3.14 + Node 22</td>
          <td>All supported</td>
      </tr>
  </tbody>
</table>
<p>The npm route installs the <a href="https://www.npmjs.com/package/@1667-ai/cli"><code>@1667-ai/cli</code> package</a> on Node 22. Once installed, the onboarding story is deliberately small. The starter key set is documented as eight keys, and the full command reference runs to roughly 40 commands — a scope that fits on a reference card rather than requiring a manual.</p>
<p>The workflow itself is three keys:</p>
<ol>
<li><strong>Space</strong> continues the current line of prose. The model writes one take and stops.</li>
<li><strong>Enter</strong> supplies a <em>direction</em> — a nudge about what should happen next — and again produces a single take.</li>
<li><strong>Left/Right</strong> flips between sibling takes at the current point so you can compare them before keeping one.</li>
</ol>
<p>For writers migrating from other tools, 1667 provides importers for SillyTavern (chats, swipes, character cards, World Info) and NovelAI (stories, scenarios, Lorebooks, retry history). That matters more than it looks: it means a writer with years of accumulated character cards and lore is not starting from an empty project folder.</p>
<h2 id="1667-vs-sudowrite-vs-novelcrafter-which-fits-your-workflow">1667 vs Sudowrite vs Novelcrafter: Which Fits Your Workflow?</h2>
<p>These three tools do different jobs, and the pricing structures encode the difference. 1667 is free software that you pay your model provider for, or nothing at all with a local model. The other two are subscriptions.</p>
<table>
  <thead>
      <tr>
          <th>Dimension</th>
          <th>1667</th>
          <th>Sudowrite</th>
          <th>Novelcrafter</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Price</td>
          <td>Free (Apache-2.0)</td>
          <td>$10–$44/mo</td>
          <td>$4–$20/mo</td>
      </tr>
      <tr>
          <td>Billing unit</td>
          <td>None — you pay your endpoint</td>
          <td>Credits (225k–2M/mo)</td>
          <td>Flat monthly</td>
      </tr>
      <tr>
          <td>Interface</td>
          <td>Terminal, keyboard-only</td>
          <td>Browser</td>
          <td>Browser</td>
      </tr>
      <tr>
          <td>Model access</td>
          <td>BYOK — any endpoint, presets for 8 providers</td>
          <td>Bundled proprietary (Muse 1.5, Ballad) + 30+ models</td>
          <td>BYOK, unlocks from Hobbyist tier</td>
      </tr>
      <tr>
          <td>Local model support</td>
          <td>Yes (Ollama, LM Studio, llama.cpp, KoboldCpp)</td>
          <td>No</td>
          <td>No</td>
      </tr>
      <tr>
          <td>Account required</td>
          <td>No</td>
          <td>Yes</td>
          <td>Yes</td>
      </tr>
      <tr>
          <td>Drafting model</td>
          <td>Branching take tree</td>
          <td>300-word continuations with options</td>
          <td>Codex-first scene beats</td>
      </tr>
      <tr>
          <td>Whole-novel generation</td>
          <td>No</td>
          <td>Yes (Story Engine)</td>
          <td>No</td>
      </tr>
      <tr>
          <td>Organisation layer</td>
          <td>Story tree + word-count map</td>
          <td>Story Bible</td>
          <td>Codex wiki with character/location tracking</td>
      </tr>
      <tr>
          <td>Migrations</td>
          <td>SillyTavern, NovelAI importers</td>
          <td>—</td>
          <td>—</td>
      </tr>
  </tbody>
</table>
<p>Sudowrite&rsquo;s <a href="https://www.sudowrite.com/pricing">pricing page</a> lists Hobby &amp; Student at $10/month for 225,000 credits, Professional at $22/month for 450,000 credits (1,000,000 listed), and Max at $44/month for 2,000,000 credits, with unused credits rolling over for 12 months. Novelcrafter&rsquo;s <a href="https://www.novelcrafter.com/pricing">pricing page</a> lists Scribe at $4, Hobbyist at $8, Artisan at $14 and Specialist at $20 per month, with AI as bring-your-own-key and available only from Hobbyist upward; the platform also claims a community of 220,000-plus authors on a 21-day free trial.</p>
<p>The credit-versus-flat distinction matters for budgeting. Sudowrite bills in credits, so heavy regeneration spends real money and the cheapest way to economise is to generate fewer takes — which is precisely the behaviour a divergence-based drafting tool wants to encourage. 1667 has the opposite incentive structure: with a local model, generating ten takes costs the same as generating one, and the tree is designed to hold all of them. If you want the wider landscape of paid tools, our <a href="/posts/best-ai-content-writing-tools-2026/">best AI content writing tools</a> roundup covers that side of the market.</p>
<h2 id="why-did-1667s-launch-trigger-94-hacker-news-comments">Why Did 1667&rsquo;s Launch Trigger 94 Hacker News Comments?</h2>
<p>The <a href="https://news.ycombinator.com/item?id=49330604">Show HN post for 1667</a> landed on 2026-08-17 and reached 37 points with 94 comments — and the thread was strongly polarised. This is worth reading as evidence about the market, not just about the tool.</p>
<p>The author, refsab, later said in the thread that the launch post &ldquo;marketed it the wrong way&rdquo; and that he had started receiving a lot of hate mail. His counter-framing is unusual and worth quoting for what it reveals about intent: he positions 1667 as &ldquo;a form of low tech holodeck&rdquo; and as &ldquo;choose your own adventure,&rdquo; explicitly not as a machine for producing slop books.</p>
<p>That distinction is the whole argument. A tool marketed as <em>generate my novel</em> invites the objection that it removes the writer. A tool marketed as <em>generate options, and I choose</em> is a different proposition — closer to an instrument than an author. The take tree is the architectural expression of that second framing: the software is structurally biased toward the human making decisions, because the model&rsquo;s output is never committed to the manuscript automatically.</p>
<p>The counter-position in the same thread came from writers who reject generation entirely — the &ldquo;assist, do not generate&rdquo; school, represented by tools that plan storylines and give structural feedback instead of producing prose. That is a coherent rival philosophy, and it is the sharpest criticism of 1667&rsquo;s core premise: if the value of drafting is the struggle, handing the struggle to a model is the wrong trade no matter how many branches the tree holds.</p>
<p>For a wider view of how LLM-assisted writing is being received, our <a href="/posts/chatgpt-vs-claude-vs-gemini-writing-2026/">ChatGPT vs Claude vs Gemini writing comparison</a> looks at the underlying model differences that drive prose quality.</p>
<h2 id="is-1667-worth-using-and-what-are-its-limits">Is 1667 Worth Using, and What Are Its Limits?</h2>
<p>The honest verdict is that 1667 is a genuinely novel UX wrapped around young, small-scale software — and the maturity question deserves a straight answer.</p>
<p><strong>Where it is strong:</strong></p>
<ul>
<li>The take tree is not a marketing gimmick. It is a real workflow change that no major competitor replicates, and it produces a reviewable history of every decision you made.</li>
<li>Local-first design removes an entire category of concern for unpublished work — there is no account, no telemetry stream and no install ID.</li>
<li>Bring-your-own-endpoint plus four local-model integrations means the marginal cost of drafting can be genuinely zero.</li>
<li>Apache-2.0 with no paid tier and no upsell means no feature is withheld behind a subscription.</li>
</ul>
<p><strong>Where it is limited:</strong></p>
<ul>
<li>It is pre-1.0 software. Stable is 0.10.9 with 0.11.0-beta.5 in prerelease, and the version history shows an actively shifting codebase.</li>
<li>The project is small. 26 stars, 0 forks and 7 open issues as of 2026-10-01 is an early-stage repository, and the bus factor is real.</li>
<li>It is text-only. There is no graphics, video or publishing pipeline — it is a drafting environment, not a content platform, and a <a href="https://kompozy.io/reviews/1667">third-party review from 2026-08-17</a> scored it 4.0/5 while making exactly this point.</li>
<li>It does not organise your manuscript. Sudowrite&rsquo;s Story Bible and Novelcrafter&rsquo;s Codex exist because novel-length projects need character and continuity tracking; 1667&rsquo;s tree is a drafting structure, not a story bible.</li>
<li>The terminal is a filter. If you do not already live in a terminal, the keyboard-first UX is a cost, not a feature.</li>
</ul>
<p><strong>Who it is for:</strong> writers who already work in a terminal, fiction writers who want to run a local model for privacy or cost reasons, and anyone frustrated by regenerating in place and losing the version they actually wanted.</p>
<p><strong>Who it is not for:</strong> authors who want a single generated draft, writers who need story-bible continuity management, and anyone who needs support guarantees from a funded vendor.</p>
<p>The broader context is that AI writing tools are a large and growing category. Third-party industry trackers put the AI writing tools market at roughly $4.2B in 2026 heading toward about $12B by 2030, with the AI novel-writing segment around $450M in 2025 moving toward roughly $1.6B by 2032 at about 19.9% CAGR. Treat those as directional estimates rather than measured figures. What matters for the review is the shape of the competition: 1667 is betting that a subset of that market wants <em>less</em> — fewer features, less cloud, more control over the branch point.</p>
<h2 id="faq">FAQ</h2>
<h3 id="what-is-1667-and-what-does-it-do">What is 1667 and what does it do?</h3>
<p>1667 is a free, open-source, full-screen terminal application for writing fiction with large language models. It generates one passage at a time and stores every generated take as a sibling branch on a navigable story tree, so rejected drafts are preserved rather than overwritten. It is local-first and works with cloud or local model endpoints.</p>
<h3 id="is-1667-really-free">Is 1667 really free?</h3>
<p>Yes. 1667 is Apache-2.0 licensed with no paid tier and no account. You pay only your model provider — or nothing at all if you point it at a local endpoint such as Ollama, LM Studio, llama.cpp or KoboldCpp, which requires no API key.</p>
<h3 id="can-i-use-1667-with-a-local-model-like-ollama">Can I use 1667 with a local model like Ollama?</h3>
<p>Yes. 1667 ships presets for Ollama, LM Studio, llama.cpp, KoboldCpp and custom endpoints alongside OpenAI, Anthropic and OpenRouter. Running a local model gives you an offline drafting loop with no key, no account and no per-token cost, though generation speed and prose quality depend on the model you load.</p>
<h3 id="how-is-1667-different-from-sudowrite-or-novelcrafter">How is 1667 different from Sudowrite or Novelcrafter?</h3>
<p>1667 is free, terminal-based and bring-your-own-model, while Sudowrite and Novelcrafter are paid browser subscriptions. Sudowrite bills $10–$44/month in credits and bundles its own fiction-tuned models; Novelcrafter runs $4–$20/month with bring-your-own-key AI from the Hobbyist tier. 1667&rsquo;s distinguishing feature is the take tree, which keeps every generated branch instead of regenerating in place.</p>
<h3 id="is-1667-private-and-does-it-send-my-writing-anywhere">Is 1667 private, and does it send my writing anywhere?</h3>
<p>The software itself keeps no account, no analytics, no telemetry, no crash reporter and no install ID, and stores stories in a project folder you choose with API keys in a separate private file. However, if you configure a cloud endpoint, your prose is sent to that provider. Privacy is only complete when you pair 1667 with a local model.</p>
]]></content:encoded></item></channel></rss>