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
/savewrites the chat to a file (JSON or Markdown), andsekka -rpicks 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.jsonbeside 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
/knowledgeturns 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+3rolls fromos.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./oocandctrl+ohandle talking to the table rather than the character.- The same screen, in a browser
sekka serveruns a real terminal session behind a local web page (default127.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./exportgives a player their own transcript as a browser download, without ever touching your filesystem.sekka serve --serve-readonlyis 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
/notepins 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
/undoremoves the last exchange,/edithands your last line back to fix and resend,/regenasks for a different reply and keeps the old one, and/swipecycles 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+xstops 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+tshows 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.