sekka雪華

A chat client for the language model running on your own machine, or on anything else that speaks the OpenAI API: vLLM, llama.cpp's server, Ollama, LM Studio. Point it at an endpoint and start typing.

What a session looks like: your messages, the model's replies, how long each reply took, and how much of the context window you've used.

start

pipx install git+https://github.com/evulnet/sekka.git
pipx inject sekka textual-serve        # optional: browser mode (sekka serve)
sekka --endpoint http://my-gpu-box:8000/v1

If you don't name a model, Sekka asks the endpoint which ones it serves and lets you pick (or just uses it, if there's only one). Settings can come from flags, environment variables or a small JSON file, and /config edits them from inside the app. It needs Python 3.10 or newer, and nothing heavier than Textual and Requests: the endpoint does the real work.

what's in it

A timing line on every reply
Seconds and tokens per second, in a dim line under each answer. Useful when you're comparing models, quantisations or server settings.
Sessions you can come back to
/save writes the chat to a file (JSON or Markdown), and sekka -r picks a saved session and carries on where it ended. Nothing is written unless you ask, or switch on autosave.
Campaigns: a whole scenario in a folder
A campaign.json beside your config holds the system prompt, role names, lore files, the opening scene and your character. Copy the folder, run Sekka in it, and you are playing; saved sessions remember their campaign and resume as themselves.
Knowledge files as tools
/knowledge turns documents you choose (character sheets, world notes, a procedure manual) into read-only tools the model can look things up in, instead of stuffing everything into the system prompt. It needs a model that supports tool calling, and the model can only open the files you listed.
Dice you can point at
/roll 2d6+3 rolls from os.urandom, shows the individual dice, and puts the result into the model's context - so it can narrate the failure but cannot quietly fudge the number. /ooc and ctrl+o handle talking to the table rather than the character.
The same screen, in a browser
sekka serve runs a real terminal session behind a local web page (default 127.0.0.1:8484) - each browser tab gets its own chat, and the rendering is the terminal's own, so nothing is missing. Handy on a machine where you would rather not open a terminal, or for showing someone else their scenario. Loopback-only unless you say otherwise, because there is no auth. /export gives a player their own transcript as a browser download, without ever touching your filesystem. sekka serve --serve-readonly is the version you hand to other people: the whole roleplaying loop works, settings are locked, nothing is written to disk.
A running state that survives the long game
/note pins a short block - inventory, injuries, promises, the state of the door - into every request, so it outlives summarising and it is saved with your campaign and your sessions.
Take-backs, because scenes go sideways
/undo removes the last exchange, /edit hands your last line back to fix and resend, /regen asks for a different reply and keeps the old one, and /swipe cycles through the versions you generated.
A context meter, and a plan for when it fills
The corner of the input box shows tokens used against the window. When it's full, Sekka can stop and tell you, roll the oldest turns off, or have the model compact them into a summary.
Replies as they are written
Answers stream in token by token, so a long reply is readable while it is still being generated. ctrl+x stops a reply mid-stream and keeps what arrived. Endpoints that won't stream just show the reply whole.
Thinking, when you want it
For reasoning models, ctrl+t shows the model's thinking and tool calls. They start hidden.

Colours, labels and key bindings are all configurable.

examples

The repository ships two starting points, both entirely made up. One is a tabletop game where character cards and setting notes are tools the model consults as it narrates. The other is a front-desk assistant for a fictional clinic that looks up check-in, insurance and refill procedures step by step. Install the game with sekka pack install and play it with --pack, or copy either one, run Sekka inside it, and change the files to suit.

the name

雪華 (sekka) is a snow crystal. A conversation builds up the same way, one exchange at a time.