pi-provider-tama
Pi agent extension for tama local AI server auto-discovery and model configuration
Package details
Install pi-provider-tama from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-provider-tama- Package
pi-provider-tama- Version
0.13.0- Published
- Jul 21, 2026
- Downloads
- 201/mo · 165/wk
- Author
- danmademe
- License
- MIT
- Types
- extension
- Size
- 24.6 KB
- Dependencies
- 0 dependencies · 2 peers
Pi manifest JSON
{
"extensions": [
"./src/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-provider-tama
Pi agent extension that auto-discovers models from a local tama server and registers them as a provider.
What it does
When pi starts (or on /reload), this extension:
- Auto-detects tama on ports
11434or8080 - Fetches available models from tama's API
- Registers a
tamaprovider in pi with all discovered models - Refreshes models on
/reload(pi's built-in model store persists across sessions)
Models appear in /model immediately — no manual models.json editing needed.
Installation
Option A: npm (recommended)
pi install npm:pi-provider-tama
Option B: git
pi install git:github.com/danielcherubini/pi-provider-tama
Use -l to install to project scope (.pi/settings.json) instead of global:
pi install -l npm:pi-provider-tama
Option C: Local development
git clone https://github.com/danielcherubini/pi-provider-tama.git
cd pi-provider-tama
npm install
# Install from local path
pi install ./pi-provider-tama
Configuration
By default, the extension auto-detects tama on 127.0.0.1:11434 and 127.0.0.1:8080.
No configuration is needed if tama is running locally on the default port.
Remote tama server
Add the tama URL to ~/.pi/agent/settings.json:
{
"packages": ["npm:pi-provider-tama"],
"pi-provider-tama": {
"url": "http://myserver:11434"
}
}
Or use the TAMA_URL environment variable (takes priority over settings.json):
export TAMA_URL=http://myserver:11434
Priority order: TAMA_URL env var → settings.json → auto-detect localhost
Authentication
Interactive login (primary)
Run /login tama in the pi chat. You'll be prompted to choose a token source:
- Enter token — type or paste your tama API token interactively
- Use TAMA_TOKEN env var — delegates to the fallback path below
The stored credential is cached and reused on every provider registration until you run /login tama again.
Fallback sources (env var / settings.json)
If you prefer not to use interactive login, or as a backup when tama requires auth but no token was stored:
TAMA_TOKENenvironment variable (highest priority):export TAMA_TOKEN=your-token-heretokenfield in~/.pi/agent/settings.json:{ "packages": ["npm:pi-provider-tama"], "pi-provider-tama": { "url": "https://tama.example.com", "token": "your-token-here" } }
The token is sent as Authorization: Bearer <token> on both model discovery and inference requests. When unset, no auth header is sent (fine for localhost).
Priority order: stored credential → TAMA_TOKEN env var → settings.json token → fallback "tama"
New in v0.81.0
Interactive auth via /login tama
The extension now supports interactive login through pi's auth system. Run /login tama to securely enter your API token without exposing it in environment variables or config files. The credential is stored and automatically resolved on every provider registration cycle.
See the Authentication section above for full details on the dual-path auth flow.
Backend-aware per-model compatibility
Each tama model now carries compatibility flags derived from its upstream backend metadata (llama.cpp, ONNX, etc.). The extension maps backends to the right compat settings automatically — for example, llama.cpp backends get maxTokensField: "max_tokens" and requiresToolResultName: false, while unknown backends receive sensible defaults.
No manual configuration needed; the flags are applied per-model at registration time.
Context overflow auto-compaction
pi v0.81.0 includes built-in context overflow detection (isContextOverflow()), which handles common overflow patterns from llama.cpp, Ollama, LM Studio, and other local backends. The extension no longer needs custom overflow handling — pi auto-compacts when the context exceeds available space.
Official package dependencies
This extension now depends on @earendil-works/pi-coding-agent (v0.81.0+) and @earendil-works/pi-ai (v0.81.0+), replacing the previous @mariozechner/pi-coding-agent fork. The migration brings native createProvider() support, cleaner auth wiring, and up-to-date type definitions.
How it works
The extension is an async factory: pi awaits it before resolving which models are available, so every tama model is registered before pi decides what's selectable.
On startup the factory:
- Resolves the tama URL/token (env →
settings.json→ auto-detect localhost). - Fetches the live model list from
/v1/opencode/models. - Creates a
createProvider()-based provider and registers it with pi.
On /reload it re-fetches models from tama, so newly added models are picked up.
Pi's built-in model store persists models across sessions. A new session ID is
generated on each registration for Langfuse tracing.
Requires pi ≥ v0.81.0 with async-factory and
createProvider()support (pi-mono ≥ Jan 2026). If tama is offline when pi boots, no tama models register — bring tama up and run/reload.
Discovered models are mapped to pi's provider format:
| Tama field | Pi field | Fallback |
|---|---|---|
id (lowercased HF repo) |
model id |
— |
name (pretty display) |
model name |
id |
context_length or limit.context |
contextWindow |
128000 |
limit.output |
maxTokens |
contextWindow / 16 or 8192 |
modalities.input |
input |
["text"] |
All models are registered with:
api: "openai-completions"(OpenAI-compatible)reasoning: falsecost: { input: 0, output: 0, ... }(local = free)compat:merged from default + backend-specific overrides (see Backend-aware compat)provider: "tama",api: "openai-completions"for pi's internal routing
Migrating from pi-tama
This package was previously published as pi-tama. To migrate:
- Reinstall:
pi install npm:pi-provider-tama - Rename the settings key in
~/.pi/agent/settings.jsonfrom"pi-tama"to"pi-provider-tama" - Uninstall the old package
Development
npm install
npm test # Run tests in watch mode
npm run test:run # Run tests once
npm run typecheck # Type check
Requirements
- tama running locally with
tama serve - pi ≥ v0.81.0 (with async-factory and
createProvider()support) - Peer dependency:
@earendil-works/pi-coding-agent^0.81.0,@earendil-works/pi-ai^0.81.0
License
MIT