Spaces:
Runtime error
Runtime error
| # 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 | |
| # 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 | |
| MAX_TOOL_OUTPUT_CHARS = 10000 # Max chars for tool output (~2500 tokens) | |
| MAX_MESSAGE_CONTENT_CHARS = 2000 # Max chars per message in tool results | |
| # API Keys for LLM providers (set the ones you need) | |
| # Supported transports: openai, anthropic, gemini | |
| # Base URLs are set per-module via model_config.overrides.base_url | |
| # Built-in text-generation defaults use openai / gpt-5.4-mini. | |
| # Embeddings default to openai / text-embedding-3-small. | |
| OPENAI_API_KEY = "your-api-key-here" | |
| # ANTHROPIC_API_KEY = "your-api-key" | |
| # GEMINI_API_KEY = "your-api-key" | |
| # Embedding settings | |
| [embedding] | |
| VECTOR_DIMENSIONS = 1536 | |
| MAX_INPUT_TOKENS = 8192 | |
| MAX_TOKENS_PER_REQUEST = 300000 | |
| [embedding.model_config] | |
| transport = "openai" | |
| model = "text-embedding-3-small" | |
| # Optional module-level endpoint overrides | |
| # [embedding.model_config.overrides] | |
| # base_url = "https://embedding-proxy.internal.example/v1" | |
| # api_key_env = "EMBEDDING_CUSTOM_API_KEY" | |
| # 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 | |
| DEDUPLICATE = true | |
| LOG_OBSERVATIONS = false | |
| MAX_INPUT_TOKENS = 23000 | |
| WORKING_REPRESENTATION_MAX_OBSERVATIONS = 100 | |
| REPRESENTATION_BATCH_MAX_TOKENS = 1024 | |
| FLUSH_ENABLED = false # Bypass batch token threshold, process work immediately | |
| [deriver.model_config] | |
| transport = "openai" | |
| model = "gpt-5.4-mini" | |
| # temperature = 0.0 | |
| # thinking_effort = "minimal" | |
| # thinking_budget_tokens = 1024 | |
| # max_output_tokens = 4096 | |
| # Optional module-level endpoint overrides | |
| # transport = "openai" | |
| # model = "my-local-model" | |
| # [deriver.model_config.overrides] | |
| # base_url = "https://llm.internal.example/v1" | |
| # api_key_env = "DERIVER_CUSTOM_API_KEY" | |
| # Optional fallback model | |
| # [deriver.model_config.fallback] | |
| # transport = "anthropic" | |
| # model = "claude-haiku-4-5" | |
| # [deriver.model_config.fallback.overrides] | |
| # base_url = "https://llm-backup.internal.example/v1" | |
| # api_key_env = "DERIVER_CUSTOM_BACKUP_API_KEY" | |
| # [deriver.model_config.overrides.provider_params] | |
| # verbosity = "low" | |
| # 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 = 4096 | |
| # Per-level settings for reasoning levels | |
| # MAX_OUTPUT_TOKENS is optional per level; if not set, uses global MAX_OUTPUT_TOKENS | |
| [dialectic.levels.minimal] | |
| MAX_TOOL_ITERATIONS = 1 | |
| MAX_OUTPUT_TOKENS = 250 | |
| TOOL_CHOICE = "auto" | |
| [dialectic.levels.minimal.model_config] | |
| transport = "openai" | |
| model = "gpt-5.4-mini" | |
| [dialectic.levels.low] | |
| MAX_TOOL_ITERATIONS = 5 | |
| TOOL_CHOICE = "auto" | |
| [dialectic.levels.low.model_config] | |
| transport = "openai" | |
| model = "gpt-5.4-mini" | |
| [dialectic.levels.medium] | |
| MAX_TOOL_ITERATIONS = 2 | |
| [dialectic.levels.medium.model_config] | |
| transport = "openai" | |
| model = "gpt-5.4-mini" | |
| [dialectic.levels.high] | |
| MAX_TOOL_ITERATIONS = 4 | |
| [dialectic.levels.high.model_config] | |
| transport = "openai" | |
| model = "gpt-5.4-mini" | |
| [dialectic.levels.max] | |
| MAX_TOOL_ITERATIONS = 10 | |
| [dialectic.levels.max.model_config] | |
| transport = "openai" | |
| model = "gpt-5.4-mini" | |
| # [dialectic.levels.max.model_config.fallback] | |
| # transport = "gemini" | |
| # model = "gemini-2.5-pro" | |
| # Summary settings | |
| [summary] | |
| ENABLED = true | |
| MESSAGES_PER_SHORT_SUMMARY = 20 | |
| MESSAGES_PER_LONG_SUMMARY = 60 | |
| MAX_TOKENS_SHORT = 1000 | |
| MAX_TOKENS_LONG = 4000 | |
| [summary.model_config] | |
| transport = "openai" | |
| model = "gpt-5.4-mini" | |
| # thinking_effort = "minimal" | |
| # thinking_budget_tokens = 1024 | |
| # [summary.model_config.fallback] | |
| # transport = "anthropic" | |
| # model = "claude-haiku-4-5" | |
| # Dream settings | |
| [dream] | |
| ENABLED = true | |
| DOCUMENT_THRESHOLD = 50 | |
| IDLE_TIMEOUT_MINUTES = 60 | |
| MIN_HOURS_BETWEEN_DREAMS = 8 | |
| ENABLED_TYPES = ["omni"] | |
| MAX_TOOL_ITERATIONS = 20 | |
| HISTORY_TOKEN_LIMIT = 16384 | |
| [dream.deduction_model_config] | |
| transport = "openai" | |
| model = "gpt-5.4-mini" | |
| [dream.induction_model_config] | |
| transport = "openai" | |
| model = "gpt-5.4-mini" | |
| # 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 | |
| # Prometheus metrics settings (pull-based metrics) | |
| [metrics] | |
| ENABLED = false | |
| # 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" | |
| # This should match embedding.vector_dimensions. pgvector and dual-write mode | |
| # currently still require 1536 until a schema migration lands. | |
| DIMENSIONS = 1536 | |
| # TURBOPUFFER_API_KEY = "your-turbopuffer-api-key" | |
| # TURBOPUFFER_REGION = "us-east-1" | |
| LANCEDB_PATH = "./lancedb_data" | |
| RECONCILIATION_INTERVAL_SECONDS = 300 | |