228 lines
6.0 KiB
Plaintext
228 lines
6.0 KiB
Plaintext
# Honcho Configuration File
|
|
# This file demonstrates all available configuration options.
|
|
# Copy this to config.toml and modify as needed.
|
|
# Environment variables will override these values.
|
|
|
|
# Application-level settings
|
|
[app]
|
|
LOG_LEVEL = "INFO"
|
|
SESSION_OBSERVERS_LIMIT = 10
|
|
GET_CONTEXT_MAX_TOKENS = 100000
|
|
MAX_FILE_SIZE = 5242880 # 5MB
|
|
MAX_MESSAGE_SIZE = 25000 # Characters
|
|
EMBED_MESSAGES = true
|
|
MAX_EMBEDDING_TOKENS = 8192
|
|
MAX_EMBEDDING_TOKENS_PER_REQUEST = 300000
|
|
# LANGFUSE_HOST = "https://api.langfuse.com"
|
|
# LANGFUSE_PUBLIC_KEY = "your-public-key-here"
|
|
# COLLECT_METRICS_LOCAL = false
|
|
# LOCAL_METRICS_FILE = "metrics.jsonl"
|
|
# REASONING_TRACES_FILE = "traces.jsonl" # Path to JSONL file for reasoning traces
|
|
NAMESPACE = "honcho"
|
|
|
|
# Database settings
|
|
[db]
|
|
CONNECTION_URI = "postgresql+psycopg://postgres:postgres@localhost:5432/postgres"
|
|
SCHEMA = "public"
|
|
POOL_CLASS = "default"
|
|
POOL_PRE_PING = true
|
|
POOL_SIZE = 10
|
|
MAX_OVERFLOW = 20
|
|
POOL_TIMEOUT = 30 # seconds
|
|
POOL_RECYCLE = 300 # seconds
|
|
POOL_USE_LIFO = true
|
|
SQL_DEBUG = false
|
|
TRACING = false
|
|
|
|
# Authentication settings
|
|
[auth]
|
|
USE_AUTH = false
|
|
JWT_SECRET = "your-secret-key-here" # Must be set if USE_AUTH is true
|
|
|
|
# Sentry settings
|
|
[sentry]
|
|
ENABLED = false
|
|
DSN = ""
|
|
RELEASE = ""
|
|
ENVIRONMENT = "development"
|
|
TRACES_SAMPLE_RATE = 0.1
|
|
PROFILES_SAMPLE_RATE = 0.1
|
|
|
|
# LLM settings
|
|
[llm]
|
|
DEFAULT_MAX_TOKENS = 2500
|
|
EMBEDDING_PROVIDER = "openai"
|
|
MAX_TOOL_OUTPUT_CHARS = 30000 # Max chars for tool output (~7500 tokens)
|
|
MAX_MESSAGE_CONTENT_CHARS = 2000 # Max chars per message in tool results
|
|
|
|
# API Keys for LLM providers
|
|
# ANTHROPIC_API_KEY = "your-api-key"
|
|
# OPENAI_API_KEY = "your-api-key"
|
|
# OPENAI_COMPATIBLE_API_KEY = "your-api-key"
|
|
# GEMINI_API_KEY = "your-api-key"
|
|
# GROQ_API_KEY = "your-api-key"
|
|
# OPENAI_COMPATIBLE_BASE_URL = "your-base-url"
|
|
|
|
# Separate vLLM endpoint (for local models)
|
|
# VLLM_API_KEY = "your-api-key"
|
|
# VLLM_BASE_URL = "your-base-url"
|
|
|
|
# Deriver settings
|
|
[deriver]
|
|
ENABLED = true
|
|
WORKERS = 1
|
|
POLLING_SLEEP_INTERVAL_SECONDS = 1.0
|
|
STALE_SESSION_TIMEOUT_MINUTES = 5
|
|
# QUEUE_ERROR_RETENTION_SECONDS = 2592000 # 30 days
|
|
PROVIDER = "google"
|
|
MODEL = "gemini-2.5-flash-lite"
|
|
# TEMPERATURE = 0.0
|
|
# BACKUP_PROVIDER = "anthropic"
|
|
# BACKUP_MODEL = "claude-haiku-4-5"
|
|
DEDUPLICATE = true
|
|
MAX_OUTPUT_TOKENS = 4096
|
|
THINKING_BUDGET_TOKENS = 1024
|
|
LOG_OBSERVATIONS = false
|
|
MAX_INPUT_TOKENS = 23000
|
|
WORKING_REPRESENTATION_MAX_OBSERVATIONS = 100
|
|
REPRESENTATION_BATCH_MAX_TOKENS = 1024
|
|
|
|
# Peer card settings
|
|
[peer_card]
|
|
ENABLED = true
|
|
|
|
# Dialectic settings
|
|
[dialectic]
|
|
MAX_OUTPUT_TOKENS = 8192
|
|
MAX_INPUT_TOKENS = 100000
|
|
HISTORY_TOKEN_LIMIT = 8192
|
|
SESSION_HISTORY_MAX_TOKENS = 16384
|
|
|
|
# Per-level settings for reasoning levels
|
|
[dialectic.levels.minimal]
|
|
PROVIDER = "google"
|
|
MODEL = "gemini-2.5-flash-lite"
|
|
THINKING_BUDGET_TOKENS = 0
|
|
MAX_TOOL_ITERATIONS = 5
|
|
TOOL_CHOICE = "any"
|
|
|
|
[dialectic.levels.low]
|
|
PROVIDER = "google"
|
|
MODEL = "gemini-3-flash-preview"
|
|
THINKING_BUDGET_TOKENS = 0
|
|
MAX_TOOL_ITERATIONS = 5
|
|
TOOL_CHOICE = "any"
|
|
|
|
[dialectic.levels.medium]
|
|
PROVIDER = "anthropic"
|
|
MODEL = "claude-haiku-4-5"
|
|
THINKING_BUDGET_TOKENS = 1024
|
|
MAX_TOOL_ITERATIONS = 4
|
|
# TOOL_CHOICE = "any" # Optional: None/auto lets model decide
|
|
|
|
[dialectic.levels.high]
|
|
PROVIDER = "anthropic"
|
|
MODEL = "claude-opus-4-5"
|
|
THINKING_BUDGET_TOKENS = 0
|
|
MAX_TOOL_ITERATIONS = 4
|
|
|
|
[dialectic.levels.max]
|
|
PROVIDER = "anthropic"
|
|
MODEL = "claude-opus-4-5"
|
|
THINKING_BUDGET_TOKENS = 2048
|
|
MAX_TOOL_ITERATIONS = 10
|
|
# Backup provider example (optional, must set both or neither):
|
|
# BACKUP_PROVIDER = "google"
|
|
# BACKUP_MODEL = "gemini-2.5-pro"
|
|
|
|
# Summary settings
|
|
[summary]
|
|
ENABLED = true
|
|
MESSAGES_PER_SHORT_SUMMARY = 20
|
|
MESSAGES_PER_LONG_SUMMARY = 60
|
|
PROVIDER = "google"
|
|
MODEL = "gemini-2.5-flash"
|
|
MAX_TOKENS_SHORT = 1000
|
|
MAX_TOKENS_LONG = 4000
|
|
THINKING_BUDGET_TOKENS = 512
|
|
# BACKUP_PROVIDER = "google"
|
|
# BACKUP_MODEL = "gemini-2.5-flash"
|
|
|
|
# Dream settings
|
|
[dream]
|
|
ENABLED = true
|
|
DOCUMENT_THRESHOLD = 50
|
|
IDLE_TIMEOUT_MINUTES = 60
|
|
MIN_HOURS_BETWEEN_DREAMS = 8
|
|
ENABLED_TYPES = ["omni"]
|
|
PROVIDER = "anthropic"
|
|
MODEL = "claude-sonnet-4-20250514"
|
|
MAX_OUTPUT_TOKENS = 16384
|
|
THINKING_BUDGET_TOKENS = 8192
|
|
MAX_TOOL_ITERATIONS = 20
|
|
HISTORY_TOKEN_LIMIT = 16384
|
|
# BACKUP_PROVIDER = "google"
|
|
# BACKUP_MODEL = "gemini-2.5-flash"
|
|
|
|
# Specialist models (use same provider as main model)
|
|
DEDUCTION_MODEL = "claude-haiku-4-5"
|
|
INDUCTION_MODEL = "claude-haiku-4-5"
|
|
|
|
# Surprisal-based sampling subsystem
|
|
[dream.surprisal]
|
|
ENABLED = false
|
|
TREE_TYPE = "kdtree" # Options: kdtree, balltree, rptree, covertree, lsh, graph, prototype
|
|
TREE_K = 5 # k for kNN-based trees
|
|
SAMPLING_STRATEGY = "recent" # Options: recent, random, all
|
|
SAMPLE_SIZE = 200
|
|
TOP_PERCENT_SURPRISAL = 0.10 # Top 10% of observations
|
|
MIN_HIGH_SURPRISAL_FOR_REPLACE = 10
|
|
INCLUDE_LEVELS = ["explicit", "deductive"]
|
|
|
|
# Webhook settings
|
|
[webhook]
|
|
SECRET = ""
|
|
MAX_WORKSPACE_LIMIT = 10
|
|
|
|
# OpenTelemetry settings (push-based metrics via OTLP)
|
|
[otel]
|
|
ENABLED = false
|
|
# ENDPOINT = "https://mimir.example.com/otlp/v1/metrics"
|
|
# HEADERS = '{"X-Scope-OrgID": "honcho"}' # JSON string for auth headers
|
|
EXPORT_INTERVAL_MILLIS = 60000
|
|
SERVICE_NAME = "honcho"
|
|
# SERVICE_NAMESPACE = "honcho" # Inherits from app.NAMESPACE if not set
|
|
|
|
# CloudEvents telemetry settings (analytics events)
|
|
[telemetry]
|
|
ENABLED = false
|
|
# ENDPOINT = "https://telemetry.honcho.dev/v1/events"
|
|
# HEADERS = '{"Authorization": "Bearer your-token"}' # JSON string for auth headers
|
|
BATCH_SIZE = 100
|
|
FLUSH_INTERVAL_SECONDS = 1.0
|
|
FLUSH_THRESHOLD = 50
|
|
MAX_RETRIES = 3
|
|
MAX_BUFFER_SIZE = 10000
|
|
# NAMESPACE = "honcho" # Inherits from app.NAMESPACE if not set
|
|
|
|
# Cache settings
|
|
[cache]
|
|
ENABLED = false
|
|
URL = "redis://localhost:6379/0?suppress=true"
|
|
# NAMESPACE = "honcho" # Inherits from app.NAMESPACE if not set
|
|
DEFAULT_TTL_SECONDS = 300
|
|
DEFAULT_LOCK_TTL_SECONDS = 5
|
|
|
|
# Vector store settings
|
|
[vector_store]
|
|
# Vector store type: "pgvector", "turbopuffer", or "lancedb"
|
|
TYPE = "pgvector"
|
|
# Migration flag: set to true when migration from pgvector is complete
|
|
MIGRATED = false
|
|
NAMESPACE = "honcho"
|
|
DIMENSIONS = 1536
|
|
# TURBOPUFFER_API_KEY = "your-turbopuffer-api-key"
|
|
# TURBOPUFFER_REGION = "us-east-1"
|
|
LANCEDB_PATH = "./lancedb_data"
|
|
RECONCILIATION_INTERVAL_SECONDS = 300
|