High-performance, Rust-native cross-platform Service Orchestrator for local AI binaries
Rust
3
1,421 commits
updated Aug 30, 2026
A local AI server with automatic backend management, text-to-speech, and a web-based control plane
Overview • Quick Start • Web UI • Configuration • Architecture

Tama is a local AI server written in Rust that provides an OpenAI-compatible API on a single port. It automatically manages backend lifecycles — starting models on demand, routing requests, and unloading idle models to save resources.
Key features:
/v1/audio/* endpointsLinux (Debian/Ubuntu):
sudo dpkg -i tama_*.deb
Linux (Fedora/RHEL):
sudo rpm -i tama-*.rpm
Tama runs as a system service with a web-based control plane:
tama service install
tama service start
Then open http://localhost:11435 to access the web UI.
[!TIP] On Linux, Tama creates a systemd user unit.
Tama includes a web-based control plane for managing models, viewing logs, and editing configuration from your browser.
The web server starts automatically alongside the proxy when using tama service start.
For development or manual startup:
cargo run --package tama
Open http://localhost:11435 to access the dashboard.
[!NOTE] The web UI proxies all
/tama/v1/requests to the running Tama proxy (defaulthttp://127.0.0.1:11434).
Tama auto-generates a config on first run:
~/.config/tama/config.toml[backends.llama_cpp]
path = "/path/to/llama-server"
health_check_url = "http://localhost:8080/health"
[supervisor]
restart_policy = "always"
max_restarts = 10
restart_delay_ms = 3000
health_check_interval_ms = 5000
[proxy]
host = "0.0.0.0"
port = 11434
idle_timeout_secs = 300
startup_timeout_secs = 120
[max_loaded_models]
enabled = false
max = 5 # Maximum number of models loaded simultaneously (LRU eviction)
[!NOTE] On first run after upgrading from kronk, Tama automatically migrates
~/.config/kronkto~/.config/tama. Model configs are now stored in the SQLite database (tama.db) rather thanconfig.toml— a migration runs automatically on upgrade.
~/.config/tama/
├── config.toml Main configuration (backends, proxy, supervisor)
├── tama.db SQLite database (models, backends, pulls, benchmarks)
├── configs/ Model cards with quant info and sampling presets
│ └── bartowski--OmniCoder-8B.toml
├── models/ GGUF model files
│ └── bartowski/OmniCoder-8B/*.gguf
├── backends/ llama.cpp and ik_llama binaries (versioned)
├── tts/ TTS backend installations (Kokoro-FastAPI)
└── logs/ Service logs
The installer detects your GPU and offers these acceleration options:
tama/
├── crates/
│ ├── tama-core/ # Config, process supervisor, proxy, platform abstraction
│ ├── tama-mock/ # Mock LLM backend for testing
│ └── tama/ # Main binary with web control plane (WASM + SSR)
├── config/ # Configuration templates
└── docs/ # Documentation
tama service start launches the OpenAI-compatible API server on port 11434 alongside the web UI on port 11435"model": "my-model", tama looks up the config from the databaseidle_timeout_secs of inactivity, the backend is shut downThe proxy exposes OpenAI-compatible API endpoints:
/tama/v1/chat/completions — Chat completions (streaming & non-streaming)/tama/v1/completions — Legacy completions/tama/v1/models — Model listing/tama/v1/audio/* — TTS endpoints (/v1/audio/speech, /v1/audio/models)/tama/v1/embeddings — EmbeddingsAll other non-tama paths are forwarded to the active backend via wildcard forwarding.
git clone https://github.com/danielcherubini/tama.git
cd tama
cargo build --release
The binary is at target/release/tama.
For development with the web UI:
# Install trunk for frontend builds
cargo install trunk
# Run in dev mode (proxy + web UI)
make run
# Or run the Leptos frontend dev server with hot reload
make dev
1,421 commits
Rust
97.8%
CSS
1.3%
High-performance, Rust-native cross-platform Service Orchestrator for local AI binaries
Rust
3
1,421 commits
updated Aug 30, 2026
A local AI server with automatic backend management, text-to-speech, and a web-based control plane
Overview • Quick Start • Web UI • Configuration • Architecture

Tama is a local AI server written in Rust that provides an OpenAI-compatible API on a single port. It automatically manages backend lifecycles — starting models on demand, routing requests, and unloading idle models to save resources.
Key features:
/v1/audio/* endpointsLinux (Debian/Ubuntu):
sudo dpkg -i tama_*.deb
Linux (Fedora/RHEL):
sudo rpm -i tama-*.rpm
Tama runs as a system service with a web-based control plane:
tama service install
tama service start
Then open http://localhost:11435 to access the web UI.
[!TIP] On Linux, Tama creates a systemd user unit.
Tama includes a web-based control plane for managing models, viewing logs, and editing configuration from your browser.
The web server starts automatically alongside the proxy when using tama service start.
For development or manual startup:
cargo run --package tama
Open http://localhost:11435 to access the dashboard.
[!NOTE] The web UI proxies all
/tama/v1/requests to the running Tama proxy (defaulthttp://127.0.0.1:11434).
Tama auto-generates a config on first run:
~/.config/tama/config.toml[backends.llama_cpp]
path = "/path/to/llama-server"
health_check_url = "http://localhost:8080/health"
[supervisor]
restart_policy = "always"
max_restarts = 10
restart_delay_ms = 3000
health_check_interval_ms = 5000
[proxy]
host = "0.0.0.0"
port = 11434
idle_timeout_secs = 300
startup_timeout_secs = 120
[max_loaded_models]
enabled = false
max = 5 # Maximum number of models loaded simultaneously (LRU eviction)
[!NOTE] On first run after upgrading from kronk, Tama automatically migrates
~/.config/kronkto~/.config/tama. Model configs are now stored in the SQLite database (tama.db) rather thanconfig.toml— a migration runs automatically on upgrade.
~/.config/tama/
├── config.toml Main configuration (backends, proxy, supervisor)
├── tama.db SQLite database (models, backends, pulls, benchmarks)
├── configs/ Model cards with quant info and sampling presets
│ └── bartowski--OmniCoder-8B.toml
├── models/ GGUF model files
│ └── bartowski/OmniCoder-8B/*.gguf
├── backends/ llama.cpp and ik_llama binaries (versioned)
├── tts/ TTS backend installations (Kokoro-FastAPI)
└── logs/ Service logs
The installer detects your GPU and offers these acceleration options:
tama/
├── crates/
│ ├── tama-core/ # Config, process supervisor, proxy, platform abstraction
│ ├── tama-mock/ # Mock LLM backend for testing
│ └── tama/ # Main binary with web control plane (WASM + SSR)
├── config/ # Configuration templates
└── docs/ # Documentation
tama service start launches the OpenAI-compatible API server on port 11434 alongside the web UI on port 11435"model": "my-model", tama looks up the config from the databaseidle_timeout_secs of inactivity, the backend is shut downThe proxy exposes OpenAI-compatible API endpoints:
/tama/v1/chat/completions — Chat completions (streaming & non-streaming)/tama/v1/completions — Legacy completions/tama/v1/models — Model listing/tama/v1/audio/* — TTS endpoints (/v1/audio/speech, /v1/audio/models)/tama/v1/embeddings — EmbeddingsAll other non-tama paths are forwarded to the active backend via wildcard forwarding.
git clone https://github.com/danielcherubini/tama.git
cd tama
cargo build --release
The binary is at target/release/tama.
For development with the web UI:
# Install trunk for frontend builds
cargo install trunk
# Run in dev mode (proxy + web UI)
make run
# Or run the Leptos frontend dev server with hot reload
make dev
1,421 commits
Rust
97.8%
CSS
1.3%