13 KiB
Configuration Files
Pre-configured settings for each typedialog backend and environment.
Overview
Configuration files are organized by backend (CLI, TUI, Web, AI, Agent, Prov-gen) and environment (default, dev, production).
config/
├── cli/
│ ├── default.toml # Standard CLI settings
│ ├── dev.toml # Development (debugging enabled)
│ └── production.toml # Production (optimized, hardened)
├── tui/
│ ├── default.toml # Standard TUI settings
│ ├── dev.toml # Development features enabled
│ └── production.toml # Optimized for deployment
├── web/
│ ├── default.toml # Standard web server settings
│ ├── dev.toml # Development (hot reload)
│ └── production.toml # Hardened for production
├── ai/
│ ├── default.toml # Standard AI/RAG settings
│ ├── dev.toml # Development RAG pipeline
│ └── production.toml # Optimized AI inference
├── ag/
│ ├── default.toml # Standard Agent settings
│ ├── dev.toml # Development (local Ollama)
│ └── production.toml # Production (Claude Sonnet)
└── prov-gen/
├── default.toml # Standard provisioning settings
├── dev.toml # Development (Hetzner/LXD)
└── production.toml # Production (AWS/GCP)
Backend Configurations
CLI Backend
command-line interface - Simple text-based forms for scripts and automation.
| Config | Purpose | Debug | Colors | Timeout |
|---|---|---|---|---|
| default | Standard | No | Yes | 300s |
| dev | Development | Yes | Yes | 300s |
| production | Production | No | Yes | 3600s |
Usage:
typedialog --config config/cli/production.toml form.toml
Features:
- Inline validation
- Optional mouse support
- Placeholder text display
- Help text display
TUI Backend
terminal user interface - Interactive multi-panel forms with navigation.
| Config | Purpose | Borders | Animations | Render |
|---|---|---|---|---|
| default | Standard | Rounded | Enabled | Auto |
| dev | Development | Double | Enabled | Debug |
| production | Production | Rounded | Disabled | Optimized |
Usage:
typedialog-tui --config config/tui/production.toml form.toml
Features:
- 3-panel layout (fields, input, buttons)
- Mouse support
- Keyboard navigation
- Real-time field updates
Web Backend
HTTP server - Browser-based forms with REST API.
| Config | Purpose | CORS | HTTPS | Rate Limit |
|---|---|---|---|---|
| default | Standard | Localhost | No | Unlimited |
| dev | Development | Enabled | No | Unlimited |
| production | Production | Restricted | Required | 100/min |
Usage:
typedialog-web --config config/web/production.toml
# Server starts on http://localhost:8080
Features:
- HTML/CSS rendering
- CSRF protection
- Response caching
- Gzip compression
AI Backend
RAG and embeddings - AI-powered form assistance and knowledge retrieval.
| Config | Purpose | Provider | Embeddings | Cache |
|---|---|---|---|---|
| default | Standard | OpenAI | text-embedding-3-small | Memory |
| dev | Development | Ollama | nomic-embed-text | Memory |
| production | Production | OpenAI | text-embedding-3-large | Redis |
Usage:
typedialog-ai --config config/ai/production.toml --query "user question"
Features:
- RAG pipeline for context retrieval
- Vector embeddings
- Knowledge graph generation
- Multi-provider support (OpenAI, Ollama)
Agent Backend (typedialog-ag)
LLM agent execution - Run AI agents from markdown files.
| Config | Purpose | Provider | Model | Streaming |
|---|---|---|---|---|
| default | Standard | Claude | haiku | Yes |
| dev | Development | Ollama | llama2 | Yes |
| production | Production | Claude | sonnet | Yes |
Usage:
typedialog-ag --config config/ag/production.toml task.agent.mdx
Features:
- Multi-provider (Claude, OpenAI, Gemini, Ollama)
- Tera template engine (Jinja2-compatible)
- Streaming responses
- Variable substitution
Provisioning Generator (typedialog-prov-gen)
Infrastructure as Code - Generate provisioning configurations.
| Config | Purpose | Providers | AI | Validation |
|---|---|---|---|---|
| default | Standard | AWS, Hetzner | Disabled | Enabled |
| dev | Development | Hetzner, LXD | Ollama | Strict |
| production | Production | AWS, GCP | Claude | Strict + Security |
Usage:
typedialog-prov-gen --config config/prov-gen/production.toml --name myproject
Features:
- Multi-cloud support (AWS, GCP, Hetzner, UpCloud, LXD)
- Nickel-based validation
- AI-assisted generation
- Template fragments
Configuration by Environment
Development Configuration
Enabled features for development and debugging:
# CLI Dev
debug_output = true
log_level = "debug"
show_field_types = true
# TUI Dev
show_field_indices = true
trace_rendering = false
# Web Dev
hot_reload = true
debug = true
logs = "/tmp/typedialog-web.log"
# AI Dev
provider = "ollama"
embedding_model = "nomic-embed-text"
log_level = "debug"
# Agent Dev
default_provider = "ollama"
log_level = "debug"
temperature = 0.7
# Prov-gen Dev
default_providers = ["hetzner", "lxd"]
verbose = true
log_level = "debug"
Usage:
typedialog --config config/cli/dev.toml form.toml
typedialog-tui --config config/tui/dev.toml form.toml
typedialog-web --config config/web/dev.toml
typedialog-ai --config config/ai/dev.toml --query "question"
typedialog-ag --config config/ag/dev.toml task.agent.mdx
typedialog-prov-gen --config config/prov-gen/dev.toml --name project
Production Configuration
Hardened settings optimized for deployment:
# CLI Production
debug_output = false
log_level = "error"
show_placeholders = false
timeout = 3600
# TUI Production
enable_animations = false
render_throttle = 16ms
max_fps = 60
# Web Production
require_https = true
csrf_enabled = true
rate_limit = 100
cache_ttl = 3600
# AI Production
provider = "openai"
embedding_model = "text-embedding-3-large"
cache_type = "redis"
log_level = "warn"
# Agent Production
default_provider = "claude"
model = "claude-3-5-sonnet-20241022"
temperature = 0.3
rate_limit_enabled = true
# Prov-gen Production
default_providers = ["aws", "gcp"]
strict_validation = true
require_encryption = true
require_tests = true
Usage:
typedialog --config config/cli/production.toml form.toml
typedialog-tui --config config/tui/production.toml form.toml
typedialog-web --config config/web/production.toml
typedialog-ai --config config/ai/production.toml --query "question"
typedialog-ag --config config/ag/production.toml task.agent.mdx
typedialog-prov-gen --config config/prov-gen/production.toml --name project
Common Settings
Form Configuration
[form]
title = "Form Title"
description = "Optional description"
[form.validation]
validate_on_change = true
show_errors_inline = true
strict_validation = true
Output Configuration
[output]
format = "json" # json, yaml, toml, text
pretty_print = true
debug_output = false
Logging
[logging]
level = "info" # debug, info, warn, error
file = "/var/log/typedialog/app.log"
Custom Configuration
Creating Custom Configurations
Create a new TOML file based on an environment template:
# Copy production config as base
cp config/cli/production.toml config/cli/custom.toml
# Edit for your needs
nano config/cli/custom.toml
# Use it
typedialog --config config/cli/custom.toml form.toml
Override Specific Settings
Use environment variables to override config:
# CLI Backend
export TYPEDIALOG_DEBUG=1
export TYPEDIALOG_LOG_LEVEL=debug
typedialog --config config/cli/default.toml form.toml
# TUI Backend
export TYPEDIALOG_TUI_BORDER=double
typedialog-tui --config config/tui/default.toml form.toml
# Web Backend
export TYPEDIALOG_WEB_PORT=3000
export TYPEDIALOG_WEB_CORS_ORIGINS="localhost,example.com"
typedialog-web --config config/web/default.toml
CLI Backend Configuration Details
[terminal]
use_raw_mode = true # Enable raw terminal mode
enable_mouse = false # Mouse support
use_color = true # Colored output
[appearance]
theme = "default" # Color theme
show_help = true # Display field help
show_placeholders = true # Show placeholder text
[validation]
validate_on_change = true # Real-time validation
show_errors_inline = true # Inline error messages
[timeout]
max_duration = 3600 # Max form time (seconds)
input_timeout = 300 # Field input timeout
TUI Backend Configuration Details
[terminal]
use_raw_mode = true
enable_mouse = true
enable_scrolling = true
height = -1 # -1 = auto
width = -1 # -1 = auto
[ui]
show_borders = true
show_focus = true
highlight_on_hover = true
enable_animations = true
[appearance]
theme = "default"
border_style = "rounded" # rounded, double, simple
color_scheme = "default"
[keyboard]
vi_mode = false
emacs_mode = false
[performance]
render_throttle = 16 # milliseconds
max_fps = 60 # frames per second
Web Backend Configuration Details
[server]
host = "0.0.0.0"
port = 8080
workers = 4
[html]
css_framework = "none" # bootstrap, tailwind, none
inline_styles = false
responsive = true
dark_mode = true
[submission]
method = "post"
webhook_url = "https://api.example.com/forms"
redirect_on_success = true
redirect_url = "https://example.com/thank-you"
[security]
csrf_enabled = true
rate_limit = 100 # requests per minute
require_https = true
add_security_headers = true
[performance]
cache_static = true
cache_ttl = 3600
enable_compression = true
compression_threshold = 1024
AI Backend Configuration Details
[ai]
provider = "openai" # openai, ollama
embedding_model = "text-embedding-3-small"
[ai.rag]
enabled = true
chunk_size = 512
chunk_overlap = 50
top_k = 5 # Top results to return
[ai.vector_store]
type = "memory" # memory, redis
dimensions = 1536
[ai.cache]
enabled = true
ttl = 3600 # seconds
[ai.knowledge_graph]
enabled = false
max_depth = 3
Agent Backend Configuration Details
[agent]
default_provider = "claude" # claude, openai, gemini, ollama
[agent.models]
claude = "claude-3-5-haiku-20241022"
openai = "gpt-4o-mini"
gemini = "gemini-2.0-flash-exp"
ollama = "llama2"
[agent.defaults]
max_tokens = 4096
temperature = 0.7
streaming = true
[agent.template]
engine = "tera" # Jinja2-compatible
strict_variables = true # Error on undefined vars
[agent.validation]
enabled = true
strict = true
[agent.output]
format = "markdown"
color = true
timestamp = true
[agent.logging]
level = "info" # debug, info, warn, error
file = true
Provisioning Generator Configuration Details
[provisioning]
output_dir = "./provisioning"
default_providers = ["aws", "hetzner"]
[provisioning.generation]
overwrite = false # Require explicit --force
dry_run = false
verbose = false
[provisioning.templates]
base_path = "templates"
custom_path = null
[provisioning.infrastructure]
environment = "development" # development, staging, production
region = "us-east-1"
[provisioning.nickel]
validate_schemas = true
generate_defaults = true
use_constraints = true
[provisioning.ai]
enabled = false # AI-assisted generation
provider = "claude"
model = "claude-3-5-sonnet-20241022"
[provisioning.logging]
level = "info"
file = false
[provisioning.validation]
strict = false
require_tests = false
[provisioning.security]
require_encryption = false
scan_templates = false
Distribution Configurations
When creating release distributions, all configurations are included:
# Build and package
just distro::build-release
just distro::create-package
# Result includes all configs
distribution/typedialog-0.1.0/
├── config/
│ ├── cli/
│ ├── tui/
│ ├── web/
│ ├── ai/
│ ├── ag/
│ └── prov-gen/
└── ...
Users can then choose configs during installation:
# Extract distribution
tar -xzf typedialog-0.1.0.tar.gz
cd typedialog-0.1.0
# Install
bash installers/install.sh
# Use specific config
typedialog --config ~/.config/typedialog/cli/production.toml form.toml
Best Practices
Development
- Use
devconfigurations for local development - Enable debugging and verbose logging
- Use shorter timeouts for faster iteration
Testing
- Use
defaultconfigurations for testing - Run integration tests with all environments
Production
- Always use
productionconfigurations - Verify HTTPS is enabled (web backend)
- Set appropriate rate limits
- Configure logging to persistent location
- Test thoroughly in staging first
Related Documentation
- BUILD_AND_DISTRIBUTION.md - Build guide
- DISTRIBUTION_WORKFLOW.md - Release workflow
- README.md - Main documentation