Configuration Reference
This reference covers all Tevis configuration options, environment variables, and file formats.
Configuration Files​
Global Configuration​
Location: ~/.tevis/config.yaml
Main configuration file for Tevis settings.
# ~/.tevis/config.yaml
# Version (required)
version: "1.0"
# Default account
default_account: personal
# Accounts configuration
accounts:
personal:
name: "Personal"
projects: {}
work:
name: "Work"
projects: {}
# Service ports
ports:
core: 8081 # Tevis Core API
local: 8082 # Tevis Local API
mission_control: 8083 # Mission Control UI
ground_control: 8084 # Internal admin UI (staff only)
docs: 8086 # Documentation site
# Local service settings
local:
host: localhost
port: 8082
auth:
enabled: false
token: null
# Execution settings
execution:
max_parallel_tpus: 4 # Max concurrent TPU containers
timeout_minutes: 30 # Default task timeout
auto_retry: true # Retry failed tasks
retry_count: 2 # Number of retries
workspace_root: ~/.tevis-runtime
# Docker settings
docker:
network: tevis-network
image: tevis/tpu:latest
pull_policy: if-not-present # always, never, if-not-present
resource_limits:
memory: 4g
cpus: 2
# LPU (AI) settings
lpu:
model: claude-sonnet-4-20250514
context:
max_tokens: 100000
include_memory: true
include_planning: true
memory_limit: 50
min_relevance: 0.3
instructions: |
# Custom instructions for all LPU calls
- Prefer TypeScript over JavaScript
- Use functional patterns where appropriate
# Memory system settings
memory:
auto_extract: true # Automatically extract memories
min_confidence: 0.5 # Minimum confidence to store
decay_rate: 0.02 # Monthly confidence decay
max_memories: 1000 # Max memories per project
# Git settings
git:
default_remote: origin
auto_push: false # Auto-push after commit
commit_format: "[Tevis {nanocycle}] {task}: {message}"
# Logging
logging:
level: info # debug, info, warn, error
format: text # text, json
file: ~/.tevis/logs/tevis.log
Project Configuration​
Location: ~/.tevis/accounts/{account}/projects/{project}/config.yaml
Project-specific configuration.
# Project configuration
name: My SaaS App
slug: my-saas-app
description: A SaaS application
# Repository
repository:
url: git@github.com:user/repo.git
default_branch: main
protected_branches:
- main
- production
# Technology stack (helps LPU)
stack:
language: typescript
framework: nextjs
database: postgresql
testing: jest
# Code conventions
conventions:
style_guide: airbnb
formatter: prettier
linter: eslint
# Custom LPU instructions for this project
lpu:
instructions: |
- This is a Next.js 14 app router project
- Use server components by default
- API routes in app/api/
# Project-specific memory settings
memory:
min_confidence: 0.6 # Higher threshold for this project
Environment Variables​
Tevis Core​
| Variable | Description | Default |
|---|---|---|
TEVIS_CORE_URL | Core API URL | https://api.tevis.ai |
TEVIS_API_KEY | API authentication key | - |
TEVIS_JWT_SECRET | JWT signing secret | - |
DATABASE_URL | PostgreSQL connection string | - |
REDIS_URL | Redis connection string | - |
Tevis Local​
| Variable | Description | Default |
|---|---|---|
TEVIS_LOCAL_PORT | Local API port | 8082 |
TEVIS_LOCAL_HOST | Local API host | localhost |
TEVIS_RUNTIME_DIR | Runtime directory | ~/.tevis-runtime |
TEVIS_CONFIG_PATH | Config file path | ~/.tevis/config.yaml |
TPU Containers​
| Variable | Description | Default |
|---|---|---|
CLAUDE_CREDENTIALS_JSON | Claude OAuth credentials | - |
WORKSPACE_PATH | Workspace mount path | /workspace |
TASK_TIMEOUT | Task timeout in seconds | 1800 |
Mission Control​
| Variable | Description | Default |
|---|---|---|
VITE_API_URL | Tevis Core API URL | http://localhost:8081 |
VITE_LOCAL_URL | Tevis Local API URL | http://localhost:8082 |
File Formats​
cycle.json​
Machine-readable nanocycle definition.
{
"nanocycle_id": "NC-007",
"title": "User Authentication",
"status": "ready",
"created_at": "2026-02-06T10:00:00Z",
"features": [
{
"name": "auth-backend",
"slug": "auth-backend",
"tasks": [
{
"id": "T001",
"subject": "Create User model",
"description": "Define User SQLAlchemy model",
"status": "pending",
"depends_on": []
},
{
"id": "T002",
"subject": "Add password hashing",
"description": "Implement bcrypt password hashing",
"status": "pending",
"depends_on": ["T001"]
}
]
}
],
"constraints": [
"Use bcrypt for password hashing",
"JWT tokens with 15-minute expiry"
]
}
PLAN.md​
Human-readable nanocycle plan.
# NC-007: User Authentication
## Overview
Add user authentication with email/password login and JWT tokens.
## Features
### Feature 1: auth-backend
Backend authentication logic.
**Tasks:**
- T001: Create User model
- T002: Add password hashing
- T003: Implement login endpoint
- T004: Implement JWT token generation
### Feature 2: auth-frontend
Frontend authentication UI.
**Tasks:**
- T005: Create login page
- T006: Add form validation
- T007: Handle auth state
## Constraints
- Use bcrypt for password hashing
- JWT access tokens: 15 minutes
- JWT refresh tokens: 7 days
## Dependencies
- bcrypt
- pyjwt
progress.txt​
Task execution progress log.
--- Session Start: 2026-02-06 10:00:00 ---
[10:00:15] TASK_STARTED T001
[10:00:18] Creating User model in src/models/user.py
[10:00:25] Adding fields: id, email, password_hash, created_at
[10:00:32] Model created and registered
[10:00:35] TASK_COMPLETE T001 | Duration: 20s
[10:00:40] TASK_STARTED T002
[10:00:45] Implementing bcrypt password hashing
[10:01:02] Added hash_password and verify_password utilities
[10:01:10] TASK_COMPLETE T002 | Duration: 30s
[10:01:15] FEATURE_COMPLETE auth-backend | Total Duration: 1m 15s
memories.json​
Memory storage format.
{
"memories": [
{
"id": "mem_abc123",
"type": "decision",
"content": "Use JWT tokens for authentication",
"context": "Architecture decision during NC-003",
"rationale": "Stateless, scalable, industry standard",
"confidence": 0.95,
"created_at": "2026-01-15T10:00:00Z",
"last_used": "2026-02-06T10:00:00Z",
"references": ["NC-003", "NC-007"]
}
]
}
Configuration Precedence​
Configuration is loaded in this order (later overrides earlier):
- Built-in defaults — Sensible defaults in code
- Global config —
~/.tevis/config.yaml - Project config —
~/.tevis/accounts/{acct}/projects/{proj}/config.yaml - Environment variables —
TEVIS_*env vars - Command-line flags —
--port,--config, etc.
Example:
# Global config says port 8082
# ENV says TEVIS_LOCAL_PORT=8092
# CLI flag says --port 8099
# Result: port 8099 (CLI wins)
tevis-local serve --port 8099
CLI Configuration​
View Configuration​
# Show all config
tevis config show
# Show specific key
tevis config get execution.max_parallel_tpus
# Show effective config (merged from all sources)
tevis config show --effective
Set Configuration​
# Set global config
tevis config set execution.max_parallel_tpus 6
# Set project config
tevis config set --project my-project lpu.model claude-opus-4-5-20251101
# Unset (use default)
tevis config unset execution.timeout_minutes
Configuration Validation​
# Validate config file
tevis config validate
# Validate specific file
tevis config validate ~/.tevis/config.yaml
Profiles​
Define named configuration profiles for different scenarios.
# ~/.tevis/profiles.yaml
profiles:
development:
execution:
max_parallel_tpus: 2
timeout_minutes: 15
lpu:
model: claude-sonnet-4-20250514
production:
execution:
max_parallel_tpus: 8
timeout_minutes: 60
lpu:
model: claude-opus-4-5-20251101
minimal:
execution:
max_parallel_tpus: 1
docker:
resource_limits:
memory: 2g
cpus: 1
Use profiles:
# Use specific profile
tevis --profile development nanocycle create ...
# Or set default
tevis config set default_profile development
Troubleshooting Configuration​
Config Not Loading​
# Check config path
echo $TEVIS_CONFIG_PATH
# Validate config syntax
tevis config validate
# Show loaded config sources
tevis config show --sources
Environment Not Applied​
# List environment variables
env | grep TEVIS
# Check if overridden by config file
tevis config show --effective | grep your_setting
Reset to Defaults​
# Backup current config
cp ~/.tevis/config.yaml ~/.tevis/config.yaml.backup
# Reset to defaults
tevis config reset
# Or delete and recreate
rm ~/.tevis/config.yaml
tevis init