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 dev configurations for local development
  • Enable debugging and verbose logging
  • Use shorter timeouts for faster iteration

Testing

  • Use default configurations for testing
  • Run integration tests with all environments

Production

  • Always use production configurations
  • Verify HTTPS is enabled (web backend)
  • Set appropriate rate limits
  • Configure logging to persistent location
  • Test thoroughly in staging first