Skip to content

Releases: lamplit-app/lamplit

Release list

0.2.1

Choose a tag to compare

@github-actions github-actions released this 11 Sep 11:57

0.2.1

A long chapter stops costing full price on every turn. Every request carries the whole prompt —
that is deliberate, and it is what makes edit, regenerate and replay work — but almost every
provider will charge a fraction for the leading bytes of a prompt it has already read, if those
bytes stop changing. Two things in the way were ours, and both are gone:

  • Lore that fires on a keyword now goes last, in a short system message after your own line,
    instead of into the block near the front. An entry firing when its word is mentioned and falling
    silent four messages later used to rewrite the prompt from its very first byte, and re-price the
    whole chapter behind it, several times a chapter. Entries marked always on have not moved:
    they cannot change mid-chapter, so they stay where you put them. What the model sees draws
    the block where it now goes.
  • A chapter over budget gives up its oldest turns in blocks, not one message per turn. The
    window it settles on then stays put for many turns, where before every single turn dropped one
    more message off the front and no two requests in a row ever began the same way. What is dropped
    is still said out loud under the composer, and nothing about which messages survive has changed
    beyond the size of the step.

And you can now see whether it is working. With Show token counts on, the footer under a
reply reads 8.0k in · 240 out · 7.6k cached when the provider says how much of the prompt it had
already read. Lamplit reads that count in all three of the shapes providers report it in, so it
turns up on OpenAI, DeepSeek, OpenRouter, NanoGPT and most aggregators. Nothing is shown for an
endpoint that does not report one, which is every local server.

Claude models through an aggregator are sent the two cache markers those models need — one at
the end of the system message, one at the end of the history. Other models on the same connection
are sent exactly what they were sent before, and an endpoint that refuses the markers is sent the
same turn again without them. OpenAI and OpenRouter are also told which chapter a request
belongs to, so consecutive turns land where the warm copy is.

Two things worth knowing: Anthropic's own endpoint cannot cache at all — api.anthropic.com/v1
is their OpenAI compatibility layer, and prompt caching is one of the things it does not support —
so reach a Claude model through NanoGPT or OpenRouter if you want this. And caching pays for itself
over two requests on one prefix, not one; it is worth most on a long chapter.

A paired phone gets the story instead of a blank page. Scanning the code loaded the boot screen
and then nothing: a grey page with the app's background and nothing on it. A phone reaches Lamplit
at a plain http://192.168… address, and browsers withhold a handful of APIs from a page served
that way — among them the one the app used to make an id for a new story, chapter or message. The
desktop never saw it, because a browser trusts its own machine. Ids are now made either way, and
Copy on a message or in What the model sees works on the phone too, by the older route the
clipboard API replaced.

0.1.0

Choose a tag to compare

@github-actions github-actions released this 03 Sep 21:12

0.1.0 — the first release

The first version anyone can install without a terminal.

Lamplit writes a story with you, in chapters, with a language model of your
choosing. It runs on your machine, keeps every story as a plain JSON file you can
copy or back up yourself, and sends your API key straight to your provider and
nowhere else — there is no account, no server of ours, and nothing to sign up for.

What is in it

  • Chapters. A story is written in chapters. Each opens on a scene you write,
    and closing one folds it into the story so far, so a long story stays a
    reasonable size to send.
  • Narrator or role-play. Tell the story in third person, or play one person
    in it and let the model play the rest.
  • A world that remembers. A persona, a cast, and lore entries that reach the
    model when the writing mentions them.
  • The whole prompt, visible. What the model sees shows exactly what is
    about to be sent, block by block, before it goes.
  • Twenty-two providers, from OpenAI, Anthropic and Google to OpenRouter and
    NanoGPT, or anything else that speaks OpenAI's chat completions — including a
    model running on your own machine through Ollama or LM Studio.

Getting it

  • Windows — the installer, or the portable .exe if you would rather it
    installed nothing. Windows will warn you about an unfamiliar app the first
    time; the download page shows the two clicks past it.
  • Linux — the AppImage runs with no install at all, or take the .deb.
  • macOS — not built, for want of an Apple developer licence. The download
    page says what to do instead.
  • Any machine with Node.js — the zip runs from one call and is a megabyte.

Your stories live in your profile (File → Open data folder finds it) and are
left alone when you uninstall.