Configuration¶
This page shows where Tabby's configuration lives and how to attach a completion, chat or embedding model so the server does real work.
Where configuration lives¶
| Path | What it is |
|---|---|
/var/lib/tabby/config.toml |
The live Tabby configuration, written on first boot. Owned by tabby:tabby, mode 0640. |
/etc/tabby/tabby.env |
Environment for tabby.service. Sets TABBY_ROOT=/var/lib/tabby. |
/var/lib/tabby |
Tabby's state directory, tabby:tabby, mode 0700. Local models download to /var/lib/tabby/models. |
/opt/sushi/etc/tabby/customer-model.example.toml |
Commented examples for attaching models. |
/opt/sushi/etc/tabby/config.toml.tmpl |
The template first boot starts from. |
First boot writes config.toml and tabby.env only if they do not exist yet.
Your edits are kept across reboots. The ubuntu user cannot read
/var/lib/tabby, so use sudo to view or edit the configuration.
The default configuration¶
The default config.toml attaches no completion or chat model. It points
Tabby's embedding model at the loopback stub on port 18080, so Tabby can start
without downloading anything:
[model.embedding.http]
kind = "openai/embedding"
api_endpoint = "http://127.0.0.1:18080/v1"
model_name = "sushi-demo-embed"
The stub returns a fixed placeholder vector. It is only there so the server starts. Replace it with a real embedding backend when you need features that rely on embeddings.
Attach a model¶
-
Look at the examples:
-
Edit the live configuration and add the blocks you need:
-
Restart Tabby:
-
Check that it came back:
After you attach a completion model, try /v1/completions yourself, for
example from an IDE extension. The image's checks do not test model quality.
Local completion model¶
A model ID from the Tabby registry makes Tabby download weights into
/var/lib/tabby/models the first time it starts. That needs outbound HTTPS and
more RAM and disk than the server alone, so resize the instance and volume
first. From the example file:
Remote chat backend¶
To use an OpenAI-compatible chat endpoint you run or subscribe to, without local weights:
[model.chat.http]
kind = "openai/chat"
api_endpoint = "https://<your-endpoint>/v1"
model_name = "<chat-model>"
api_key = "<your-key>"
Real embedding backend¶
Replace the stub block with your own endpoint:
[model.embedding.http]
kind = "openai/embedding"
api_endpoint = "https://<your-endpoint>/v1"
model_name = "<embedding-model>"
api_key = "<your-key>"
Keep keys on the instance
config.toml is readable only by tabby and root. Do not copy keys into
EC2 user data, git, tickets or screen recordings.
See the Tabby documentation for the model IDs and backend kinds Tabby supports.
Keep Tabby private¶
Tabby runs with --host 127.0.0.1 --port 8080 and has no authentication in
front of it on this image. Use Session Manager port forwarding for your own
access. Before you let IDEs reach it over a network, put your own reverse
proxy with authentication and TLS in front of it, and open only that proxy's
port in the security group. Never open port 8080 or 18080.
Last updated October 13, 2026 · Suggest an improvement