1667write in the terminal
menu

Connection dossier

Local endpoints · 08 choices

Your server, your story

Write long-form fiction on your own model server.

1667 is a full-screen terminal environment for fiction. Each story part keeps its alternative takes in a tree. You select one path as the story line.

Model endpoint
the server you configure
1667 account
none
Story files
your project folder

00 · install

Install 1667

Install the client. Keep your model server running.

curl -fsSL https://1667.ai/install.sh | sh

Installs 1667 0.10.2. Supports macOS arm64/x64 and glibc 2.17+ Linux arm64/x64. Run 1667 upgrade for later managed releases.

verify the installer first

This optional path needs GitHub CLI. It verifies version 0.10.2 before it runs the local file.

d=$(mktemp -d) && (trap 'rm -rf "$d"' EXIT && cd "$d" && gh release download v0.10.2 --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.10.2 --source-digest 75006abd19884944df48b16bc2f1b4869d9f3c8a --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.10.2 --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.10.2 --source-digest 75006abd19884944df48b16bc2f1b4869d9f3c8a --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 }

01 · compatibility

Your server, exactly

Choose the row that matches the protocol you want. A server can offer more than one route.

ServerProvider choiceGeneration routeToken count
llama.cppllama.cppllama.cpp textChat, or native POST /completionNear-exact from POST /tokenize
KoboldCppKoboldCppKoboldCpp textChat, or native POST /api/extra/generate/streamNear-exact from POST /api/extra/tokencount
OllamaOllamaChatEstimate
LM StudioLM StudioChatEstimate
Any OpenAI-compatible serverOpenAI-compatibleOpenAI-compatible textChat, or POST /v1/completionsEstimate

Hosted providers are also supported. See the full provider list.

02 · protocol

Text Completions is a first-class route

Use a chat route, a standard POST /v1/completions route, or the native text route for llama.cpp or KoboldCpp.

Prompt format

  • rawjoins message content with one blank line
  • chatmladds minimal ChatML markers
  • server-templateasks llama.cpp to use the loaded model template

1667 does not infer a prompt format from a model name. You select the format that the model requires.

03 · context meter

The count shows its accuracy

Long stories press against the context window. The mark tells you where each number came from.

8.1k

Exact

A bundled tokenizer or exact count endpoint counts the next request.

≈8.1k

Model server

A local tokenize route gives a near-exact count before generation.

~8.1k

Estimate

1667 estimates one token for every four characters.

A local count carries because it comes from a second request to the model server. 1667 does not label that separate count as exact.

04 · inspection

See the request before it leaves

Open the next request plan with Ctrl+R. The plan has no credential, so the viewer cannot show one.

Request viewer

Review the routed model, context window, messages, and token grades.

Generation Record

Each model request that creates or changes a take adds a record to that take. The record keeps the provider, model, effective settings, and request pipeline.

Token probabilities

Inspect alternative tokens when the route supports them. Choose the count in Settings. The feature starts off.

05 · network boundary

What leaves the machine

A provider request goes to the endpoint you configured. With a local endpoint, it reaches that model server. 1667 has no account, cloud service, analytics, telemetry, or crash reporter.

  1. 011667builds the request
  2. 02Your endpointreceives the request
  3. 03Your modelstreams the take

Update check

The background update check reads public package metadata from registry.npmjs.org. It sends no story, prompt, account, or settings data. You can turn it off in Settings.

Local connection checks

On Linux, keyless loopback HTTP needs proof that your account owns the exact socket. On macOS and Windows, turn on insecure HTTP (LAN) for a plain HTTP loopback URL. The same opt-in covers private network HTTP. 1667 resolves a private host once and pins the verified address.

06 · no server needed

Try the full interface first

Demo mode uses fixed data in memory. It contacts no provider and makes no network request.

1667 --demo

07 · limits

Current limits

These limits apply before you choose a server or model.

  1. 01

    You run the model

    1667 is a client. It connects to a server that you already started.

  2. 02

    Token rules vary

    Phrase bias needs tokenizer support. Banned strings also need it, except KoboldCpp sends their literal text to its own field.

  3. 03

    Text routes have no reasoning view

    Reasoning controls and reasoning records apply to supported chat routes only.

  4. 04

    One writer per project

    A project lock prevents two 1667 processes from writing to the same project at once.

  5. 05

    The format can change

    1667 is pre-1.0. Read the release notes before you update an important project.

One useful question

Which server and model should we test?

Ask on GitHub