Table of contents
Installing
What you need
An OpenAI-compatible server that streams SSE — typically llama-server.
papote never talks to anything else, and never ships a default endpoint.
http:// and https:// both work. TLS goes through rustls with the platform
verifier, so the system trust store applies: a private CA works once it is
installed system-wide, and an expired or self-signed certificate is refused
with an error that says which. Endpoints behind a reverse proxy asking for
HTTP basic auth are supported.
Getting it
cargo install --git https://git.tforgione.fr/tforgione/papote
Or from a clone, cargo build --release, which leaves the binary in
target/release/papote.
The first run
Nothing is configured out of the box, so the first run asks:
┌ New provider ────────────────────────────────────────┐
│a name to refer to it by │
│ │
│name: remote │
└──────────────────────────────────────────────────────┘
It walks through a name, the base URL of the API, and — if you say the endpoint needs them — a username and a password, which is masked as you type it. Then it asks the endpoint what models it has and lets you pick one:
┌ Models on remote ────────────────────────────────────┐
│❯ gemma-4:26B-A4B:256K unloaded │
│ gemma-4:26B-A4B:32K loaded │
└──────────────────────────────────────────────────────┘
Both answers are written to Configuration and you land in the chat. Esc at any point ends the program without writing anything.
If the endpoint has no /v1/models — plenty do not — papote says so and asks
you to type the model name instead.
papote
Getting started
Using it
Under the hood