Skip to content

Configuration Reference

Complete reference of all configuration keys available in Lango. Configuration is stored in encrypted profiles managed by lango config commands. Use lango onboard for guided setup or lango settings for the full interactive editor.

All configuration is managed through the lango settings TUI (interactive terminal editor) or by importing a JSON file with lango config import. Lango does not use YAML configuration files. The JSON examples below show the structure expected by lango config import and reflect what lango settings edits behind the scenes.

See Configuration Basics for an introduction to the configuration system.


Server

Gateway server settings for HTTP API and WebSocket connections.

Settings: lango settings → Server

{
  "server": {
    "host": "localhost",
    "port": 18789,
    "httpEnabled": true,
    "wsEnabled": true,
    "allowedOrigins": []
  }
}
Key Type Default Description
server.host string localhost Host address to bind to
server.port int 18789 Port to listen on
server.httpEnabled bool true Enable HTTP API endpoints
server.wsEnabled bool true Enable WebSocket server
server.allowedOrigins []string [] Allowed origins for CORS. Empty = same-origin only

Agent

LLM agent settings including model selection, prompt configuration, and timeouts.

Settings: lango settings → Agent

{
  "agent": {
    "provider": "anthropic",
    "model": "claude-sonnet-4-20250514",
    "fallbackProvider": "",
    "fallbackModel": "",
    "maxTokens": 4096,
    "temperature": 0.7,
    "systemPromptPath": "",
    "promptsDir": "",
    "requestTimeout": "5m",
    "toolTimeout": "2m",
    "multiAgent": false,
    "agentsDir": "",
    "autoExtendTimeout": false,
    "maxRequestTimeout": ""
  }
}
Key Type Default Description
agent.provider string anthropic Primary AI provider ID (references providers.<id>)
agent.model string Model ID to use (e.g., claude-sonnet-4-20250514)
agent.fallbackProvider string Fallback provider ID when primary fails
agent.fallbackModel string Fallback model ID
agent.maxTokens int 4096 Maximum tokens per response
agent.temperature float64 0.7 Sampling temperature (0.0 - 1.0)
agent.systemPromptPath string Path to a custom system prompt file
agent.promptsDir string Directory containing .md files for system prompts
agent.requestTimeout duration 5m Maximum duration for a single AI provider request
agent.toolTimeout duration 2m Maximum duration for a single tool call
agent.multiAgent bool false Enable multi-agent orchestration
agent.agentsDir string "" Directory containing user-defined AGENT.md agent definitions
agent.autoExtendTimeout bool false Auto-extend deadline when agent activity is detected
agent.maxRequestTimeout duration Absolute max when auto-extend enabled (default: 3× requestTimeout)

Agent Memory

Per-agent persistent memory for cross-session context retention.

Settings: lango settings → Agent Memory

{
  "agentMemory": {
    "enabled": false
  }
}
Key Type Default Description
agentMemory.enabled bool false Enable per-agent persistent memory for sub-agents

Providers

Named AI provider configurations. Referenced by other sections via provider ID.

Settings: lango settings → Providers

{
  "providers": {
    "my-anthropic": {
      "type": "anthropic",
      "apiKey": "${ANTHROPIC_API_KEY}"
    },
    "my-openai": {
      "type": "openai",
      "apiKey": "${OPENAI_API_KEY}",
      "baseUrl": "https://api.openai.com/v1"
    },
    "local-ollama": {
      "type": "ollama",
      "baseUrl": "http://localhost:11434/v1"
    }
  }
}
Key Type Default Description
providers.<id>.type string Provider type: anthropic, openai, google, gemini, ollama
providers.<id>.apiKey string API key (supports ${ENV_VAR} substitution)
providers.<id>.baseUrl string Base URL for OpenAI-compatible or self-hosted providers

Logging

Settings: lango settings → Logging

{
  "logging": {
    "level": "info",
    "format": "console"
  }
}
Key Type Default Description
logging.level string info Log level: debug, info, warn, error
logging.format string console Output format: console, json

Session

Session storage and lifecycle settings.

Settings: lango settings → Session

{
  "session": {
    "databasePath": "~/.lango/data.db",
    "ttl": "24h",
    "maxHistoryTurns": 100
  }
}
Key Type Default Description
session.databasePath string ~/.lango/data.db Path to the SQLite session database
session.ttl duration Session time-to-live before expiration (empty = no expiration)
session.maxHistoryTurns int 50 Maximum conversation turns to retain per session

Security

Signer

Key Type Default Description
security.signer.provider string local Signer provider (local)

Interceptor

The security interceptor controls tool execution approval and PII protection. See Tool Approval and PII Redaction.

Settings: lango settings → Security

{
  "security": {
    "interceptor": {
      "enabled": true,
      "redactPii": false,
      "approvalPolicy": "dangerous",
      "approvalTimeoutSec": 30,
      "notifyChannel": "",
      "sensitiveTools": [],
      "exemptTools": []
    }
  }
}
Key Type Default Description
security.interceptor.enabled bool true Enable the security interceptor
security.interceptor.redactPii bool false Enable PII redaction in messages
security.interceptor.approvalPolicy string dangerous Tool approval policy: always, dangerous, never
security.interceptor.approvalTimeoutSec int 30 Timeout for approval requests (seconds)
security.interceptor.notifyChannel string Channel to send approval notifications
security.interceptor.sensitiveTools []string Tools that always require approval
security.interceptor.exemptTools []string Tools exempt from approval regardless of policy

PII Detection

Settings: lango settings → Security

{
  "security": {
    "interceptor": {
      "piiRegexPatterns": [],
      "piiDisabledPatterns": [],
      "piiCustomPatterns": []
    }
  }
}
Key Type Default Description
security.interceptor.piiRegexPatterns []string Built-in PII regex pattern names to enable
security.interceptor.piiDisabledPatterns []string Built-in PII patterns to disable
security.interceptor.piiCustomPatterns []object Custom PII regex patterns (name + regex pairs)

Presidio Integration

Settings: lango settings → Security

{
  "security": {
    "interceptor": {
      "presidio": {
        "enabled": false,
        "url": "http://localhost:5002",
        "scoreThreshold": 0.7,
        "language": "en"
      }
    }
  }
}
Key Type Default Description
security.interceptor.presidio.enabled bool false Enable Microsoft Presidio for advanced PII detection
security.interceptor.presidio.url string http://localhost:5002 Presidio analyzer service URL
security.interceptor.presidio.scoreThreshold float64 0.7 Minimum confidence score (0.0 - 1.0)
security.interceptor.presidio.language string en Language for PII analysis

Auth

Configure OAuth2/OIDC authentication providers for the gateway API.

Settings: lango settings → Auth

{
  "auth": {
    "providers": {
      "google": {
        "issuerUrl": "https://accounts.google.com",
        "clientId": "${GOOGLE_CLIENT_ID}",
        "clientSecret": "${GOOGLE_CLIENT_SECRET}",
        "redirectUrl": "http://localhost:18789/auth/callback",
        "scopes": ["openid", "email", "profile"]
      }
    }
  }
}
Key Type Default Description
auth.providers.<id>.issuerUrl string OIDC issuer URL
auth.providers.<id>.clientId string OAuth2 client ID
auth.providers.<id>.clientSecret string OAuth2 client secret
auth.providers.<id>.redirectUrl string OAuth2 redirect URL
auth.providers.<id>.scopes []string OAuth2 scopes to request

Channels

Communication channel configurations.

Telegram

Key Type Default Description
channels.telegram.enabled bool false Enable Telegram channel
channels.telegram.botToken string Bot token from BotFather
channels.telegram.allowlist []int64 [] Allowed user/group IDs (empty = allow all)

Discord

Key Type Default Description
channels.discord.enabled bool false Enable Discord channel
channels.discord.botToken string Bot token from Discord Developer Portal
channels.discord.applicationId string Application ID for slash commands
channels.discord.allowedGuilds []string [] Allowed guild IDs (empty = allow all)

Slack

Key Type Default Description
channels.slack.enabled bool false Enable Slack channel
channels.slack.botToken string Bot OAuth token
channels.slack.appToken string App-level token for Socket Mode
channels.slack.signingSecret string Signing secret for request verification

Tools

Exec Tool

Key Type Default Description
tools.exec.defaultTimeout duration 30s Default timeout for shell command execution
tools.exec.allowBackground bool true Allow background command execution
tools.exec.workDir string Working directory for command execution

Filesystem Tool

Key Type Default Description
tools.filesystem.maxReadSize int 10485760 Maximum file read size in bytes (10 MB)
tools.filesystem.allowedPaths []string Allowed filesystem paths (empty = all)

Browser Tool

Key Type Default Description
tools.browser.enabled bool false Enable browser automation tool
tools.browser.headless bool true Run browser in headless mode
tools.browser.sessionTimeout duration 5m Browser session timeout

Output Manager

Token-based tiered compression for large tool outputs. Applied as middleware to all tools.

Key Type Default Description
tools.outputManager.tokenBudget int 2000 Maximum tokens before output is compressed
tools.outputManager.headRatio float 0.7 Fraction of budget allocated to output head
tools.outputManager.tailRatio float 0.3 Fraction of budget allocated to output tail

Hooks

Tool execution hooks for security filtering, access control, and event publishing.

Settings: lango settings → Hooks

{
  "hooks": {
    "enabled": false,
    "securityFilter": false,
    "accessControl": false,
    "eventPublishing": false,
    "knowledgeSave": false,
    "blockedCommands": []
  }
}
Key Type Default Description
hooks.enabled bool false Enable the tool execution hook system
hooks.securityFilter bool false Block dangerous commands via security filter hook
hooks.accessControl bool false Enable per-agent tool access control
hooks.eventPublishing bool false Publish tool execution events to the event bus
hooks.knowledgeSave bool false Auto-save knowledge extracted from tool results
hooks.blockedCommands []string [] Command patterns to block when security filter is active

Knowledge

Key Type Default Description
knowledge.enabled bool false Enable the knowledge system
knowledge.maxContextPerLayer int 5 Maximum context items per knowledge layer

Skill

Key Type Default Description
skill.enabled bool false Enable the skill system
skill.skillsDir string ~/.lango/skills Directory for skill files
skill.allowImport bool false Allow importing skills from external sources
skill.maxBulkImport int 50 Maximum skills per bulk import
skill.importConcurrency int 5 Concurrent import workers
skill.importTimeout duration 2m Timeout per skill import

Observational Memory

Settings: lango settings → Observational Memory

{
  "observationalMemory": {
    "enabled": false,
    "provider": "",
    "model": "",
    "messageTokenThreshold": 1000,
    "observationTokenThreshold": 2000,
    "maxMessageTokenBudget": 8000,
    "maxReflectionsInContext": 5,
    "maxObservationsInContext": 20
  }
}
Key Type Default Description
observationalMemory.enabled bool false Enable observational memory
observationalMemory.provider string AI provider for memory extraction (empty = agent default)
observationalMemory.model string Model for memory extraction (empty = agent default)
observationalMemory.messageTokenThreshold int 1000 Minimum tokens in recent messages before triggering observation
observationalMemory.observationTokenThreshold int 2000 Token threshold to trigger reflection
observationalMemory.maxMessageTokenBudget int 8000 Max tokens to include from message history
observationalMemory.maxReflectionsInContext int 5 Max reflections injected into LLM context
observationalMemory.maxObservationsInContext int 20 Max observations injected into LLM context

Embedding & RAG

Settings: lango settings → Embedding & RAG

{
  "embedding": {
    "providerID": "my-openai",
    "provider": "",
    "model": "text-embedding-3-small",
    "dimensions": 1536,
    "local": {
      "baseUrl": "http://localhost:11434/v1",
      "model": ""
    },
    "rag": {
      "enabled": false,
      "maxResults": 5,
      "collections": []
    }
  }
}
Key Type Default Description
embedding.providerID string References a key in the providers map
embedding.provider string Embedding provider type (set to local for Ollama)
embedding.model string Embedding model identifier
embedding.dimensions int Embedding vector dimensionality
embedding.local.baseUrl string Local embedding service URL (e.g., Ollama)
embedding.local.model string Model override for local provider
embedding.rag.enabled bool false Enable RAG retrieval
embedding.rag.maxResults int Maximum results per RAG query
embedding.rag.collections []string Collection names to search (empty = all)

Graph

Settings: lango settings → Graph Store

{
  "graph": {
    "enabled": false,
    "backend": "bolt",
    "databasePath": "~/.lango/graph.db",
    "maxTraversalDepth": 2,
    "maxExpansionResults": 10
  }
}
Key Type Default Description
graph.enabled bool false Enable the knowledge graph
graph.backend string bolt Graph storage backend (bolt)
graph.databasePath string Path to the graph database file
graph.maxTraversalDepth int 2 Max depth for graph traversal in Graph RAG
graph.maxExpansionResults int 10 Max results from graph expansion

A2A Protocol

Experimental

The A2A protocol is experimental. See A2A Protocol.

Settings: lango settings → A2A Protocol

{
  "a2a": {
    "enabled": false,
    "baseUrl": "",
    "agentName": "",
    "agentDescription": "",
    "remoteAgents": [
      {
        "name": "code-reviewer",
        "agentCardUrl": "https://reviewer.example.com/.well-known/agent.json"
      }
    ]
  }
}
Key Type Default Description
a2a.enabled bool false Enable A2A protocol support
a2a.baseUrl string External URL where this agent is reachable
a2a.agentName string Name advertised in the Agent Card
a2a.agentDescription string Description in the Agent Card
a2a.remoteAgents []object List of remote agents to connect to

Each remote agent entry:

Key Type Description
a2a.remoteAgents[].name string Display name for the remote agent
a2a.remoteAgents[].agentCardUrl string URL to the remote agent's agent card

Payment

Experimental

The payment system is experimental. See Payments.

Settings: lango settings → Payment

{
  "payment": {
    "enabled": false,
    "walletProvider": "local",
    "network": {
      "chainId": 84532,
      "rpcUrl": "https://sepolia.base.org",
      "usdcContract": "0x036CbD53842c5426634e7929541eC2318f3dCF7e"
    },
    "limits": {
      "maxPerTx": "1.00",
      "maxDaily": "10.00",
      "autoApproveBelow": ""
    },
    "x402": {
      "autoIntercept": false,
      "maxAutoPayAmount": ""
    }
  }
}
Key Type Default Description
payment.enabled bool false Enable blockchain payment features
payment.walletProvider string local Wallet backend: local, rpc, composite
payment.network.chainId int 84532 EVM chain ID (84532 = Base Sepolia)
payment.network.rpcUrl string JSON-RPC endpoint for the blockchain network
payment.network.usdcContract string USDC token contract address
payment.limits.maxPerTx string 1.00 Maximum USDC per transaction
payment.limits.maxDaily string 10.00 Maximum daily USDC spending
payment.limits.autoApproveBelow string Auto-approve payments below this amount
payment.x402.autoIntercept bool false Enable X402 auto-interception for paid APIs
payment.x402.maxAutoPayAmount string Maximum auto-pay amount for X402 requests

P2P Network

Experimental

The P2P networking system is experimental. See P2P Network.

Settings: lango settings → P2P Network

{
  "p2p": {
    "enabled": false,
    "listenAddrs": ["/ip4/0.0.0.0/tcp/9000"],
    "bootstrapPeers": [],
    "keyDir": "~/.lango/p2p",
    "enableRelay": false,
    "enableMdns": true,
    "maxPeers": 50,
    "handshakeTimeout": "30s",
    "sessionTokenTtl": "1h",
    "autoApproveKnownPeers": false,
    "requireSignedChallenge": false,
    "firewallRules": [],
    "gossipInterval": "30s",
    "zkHandshake": false,
    "zkAttestation": false,
    "zkp": {
      "proofCacheDir": "~/.lango/zkp",
      "provingScheme": "plonk",
      "srsMode": "unsafe",
      "srsPath": "",
      "maxCredentialAge": "24h"
    },
    "toolIsolation": {
      "enabled": false,
      "timeoutPerTool": "30s",
      "maxMemoryMB": 512,
      "container": {
        "enabled": false,
        "runtime": "auto",
        "image": "lango-sandbox:latest",
        "networkMode": "none",
        "readOnlyRootfs": true,
        "poolSize": 0,
        "poolIdleTimeout": "5m"
      }
    }
  }
}
Key Type Default Description
p2p.enabled bool false Enable P2P networking
p2p.listenAddrs []string ["/ip4/0.0.0.0/tcp/9000"] Multiaddrs to listen on
p2p.bootstrapPeers []string [] Initial peers for DHT bootstrapping
p2p.keyDir string ~/.lango/p2p Directory for node key persistence
p2p.enableRelay bool true Act as relay for NAT traversal
p2p.enableMdns bool true Enable mDNS for LAN discovery
p2p.maxPeers int 50 Maximum connected peers
p2p.handshakeTimeout duration 30s Maximum handshake duration
p2p.sessionTokenTtl duration 1h Session token lifetime
p2p.autoApproveKnownPeers bool false Skip approval for known peers
p2p.firewallRules []object [] Static firewall ACL rules
p2p.gossipInterval duration 30s Agent card gossip interval
p2p.zkHandshake bool false Enable ZK-enhanced handshake
p2p.zkAttestation bool false Enable ZK attestation on responses
p2p.requireSignedChallenge bool false Reject unsigned (v1.0) challenges; require v1.1 signed challenges
p2p.zkp.proofCacheDir string ~/.lango/zkp ZKP circuit cache directory
p2p.zkp.provingScheme string plonk ZKP proving scheme: plonk or groth16
p2p.zkp.srsMode string unsafe SRS generation mode: unsafe (deterministic) or file (trusted ceremony)
p2p.zkp.srsPath string Path to SRS file (when srsMode = "file")
p2p.zkp.maxCredentialAge string 24h Maximum age for ZK credentials before rejection

Each firewall rule entry:

Key Type Description
firewallRules[].peerDid string Peer DID ("*" for all peers)
firewallRules[].action string "allow" or "deny"
firewallRules[].tools []string Tool name patterns (empty = all)
firewallRules[].rateLimit int Max requests/min (0 = unlimited)

P2P Pricing

Key Type Default Description
p2p.pricing.enabled bool false Enable paid P2P tool invocations
p2p.pricing.perQuery string Default price per query in USDC (e.g., "0.10")
p2p.pricing.toolPrices map[string]string Map of tool names to specific prices in USDC
p2p.pricing.trustThresholds.postPayMinScore float64 0.8 Minimum reputation score for post-pay pricing tier

P2P Settlement

Key Type Default Description
p2p.pricing.settlement.receiptTimeout duration 2m Maximum wait for on-chain receipt confirmation
p2p.pricing.settlement.maxRetries int 3 Maximum transaction submission retries

P2P Owner Protection

Key Type Default Description
p2p.ownerProtection.ownerName string Owner name to block from P2P responses
p2p.ownerProtection.ownerEmail string Owner email to block from P2P responses
p2p.ownerProtection.ownerPhone string Owner phone to block from P2P responses
p2p.ownerProtection.extraTerms []string Additional terms to block from P2P responses
p2p.ownerProtection.blockConversations bool true Block conversation data in P2P responses

P2P Reputation

Key Type Default Description
p2p.minTrustScore float64 0.3 Minimum trust score to accept P2P requests (0.0 - 1.0)

P2P Tool Isolation

Key Type Default Description
p2p.toolIsolation.enabled bool false Enable subprocess isolation for remote peer tool invocations
p2p.toolIsolation.timeoutPerTool duration 30s Maximum duration for a single tool execution
p2p.toolIsolation.maxMemoryMB int 256 Soft memory limit per subprocess in megabytes
p2p.toolIsolation.container.enabled bool false Use container-based sandbox instead of subprocess
p2p.toolIsolation.container.runtime string auto Container runtime: auto, docker, gvisor, native
p2p.toolIsolation.container.image string lango-sandbox:latest Docker image for sandbox container
p2p.toolIsolation.container.networkMode string none Docker network mode for sandbox containers
p2p.toolIsolation.container.readOnlyRootfs bool true Mount container root filesystem as read-only
p2p.toolIsolation.container.cpuQuotaUs int 0 Docker CPU quota in microseconds (0 = unlimited)
p2p.toolIsolation.container.poolSize int 0 Pre-warmed containers in pool (0 = disabled)
p2p.toolIsolation.container.poolIdleTimeout duration 5m Idle timeout before pool containers are recycled

Economy

Experimental

The P2P economy layer is experimental. See P2P Economy.

Settings: lango settings → Economy

{
  "economy": {
    "enabled": false,
    "budget": {
      "defaultMax": "10.00",
      "alertThresholds": [0.5, 0.8, 0.95],
      "hardLimit": true
    },
    "risk": {
      "escrowThreshold": "5.00",
      "highTrustScore": 0.8,
      "mediumTrustScore": 0.5
    },
    "negotiate": {
      "enabled": false,
      "maxRounds": 5,
      "timeout": "5m",
      "autoNegotiate": false,
      "maxDiscount": 0.2
    },
    "escrow": {
      "enabled": false,
      "defaultTimeout": "24h",
      "maxMilestones": 10,
      "autoRelease": false,
      "disputeWindow": "1h",
      "settlement": {
        "receiptTimeout": "2m",
        "maxRetries": 3
      },
      "onChain": {
        "enabled": false,
        "mode": "hub",
        "hubAddress": "",
        "vaultFactoryAddress": "",
        "vaultImplementation": "",
        "arbitratorAddress": "",
        "tokenAddress": "",
        "pollInterval": "15s"
      }
    },
    "pricing": {
      "enabled": false,
      "trustDiscount": 0.1,
      "volumeDiscount": 0.05,
      "minPrice": "0.01"
    }
  }
}
Key Type Default Description
economy.enabled bool false Enable the P2P economy layer
economy.budget.defaultMax string 10.00 Default maximum budget per task in USDC
economy.budget.alertThresholds []float64 [0.5, 0.8, 0.95] Budget usage percentages that trigger alerts
economy.budget.hardLimit bool true Enforce budget as a hard cap (reject overspend)
economy.risk.escrowThreshold string 5.00 USDC amount above which escrow is forced
economy.risk.highTrustScore float64 0.8 Minimum trust score for DirectPay strategy
economy.risk.mediumTrustScore float64 0.5 Minimum trust score for non-ZK strategies
economy.negotiate.enabled bool false Enable P2P negotiation protocol
economy.negotiate.maxRounds int 5 Maximum counter-offers per negotiation
economy.negotiate.timeout duration 5m Negotiation session timeout
economy.negotiate.autoNegotiate bool false Auto-generate counter-offers
economy.negotiate.maxDiscount float64 0.2 Maximum discount for auto-negotiation (0-1)
economy.escrow.enabled bool false Enable milestone-based escrow
economy.escrow.defaultTimeout duration 24h Escrow expiration timeout
economy.escrow.maxMilestones int 10 Maximum milestones per escrow
economy.escrow.autoRelease bool false Auto-release funds when all milestones met
economy.escrow.disputeWindow duration 1h Time window for disputes after completion
economy.escrow.settlement.receiptTimeout duration 2m Max wait for on-chain receipt confirmation
economy.escrow.settlement.maxRetries int 3 Max transaction submission retries
economy.escrow.onChain.enabled bool false Enable on-chain escrow mode
economy.escrow.onChain.mode string hub On-chain escrow pattern: hub or vault
economy.escrow.onChain.hubAddress string Deployed LangoEscrowHub contract address
economy.escrow.onChain.vaultFactoryAddress string Deployed LangoVaultFactory contract address
economy.escrow.onChain.vaultImplementation string LangoVault implementation address for cloning
economy.escrow.onChain.arbitratorAddress string Dispute arbitrator address
economy.escrow.onChain.tokenAddress string ERC-20 token (USDC) contract address
economy.escrow.onChain.pollInterval duration 15s Event monitor polling interval
economy.pricing.enabled bool false Enable dynamic pricing adjustments
economy.pricing.trustDiscount float64 0.1 Max discount for high-trust peers (0-1)
economy.pricing.volumeDiscount float64 0.05 Max discount for high-volume peers (0-1)
economy.pricing.minPrice string 0.01 Minimum price floor in USDC

Smart Account

Experimental

Smart Account support is experimental. See Smart Accounts.

Settings: lango settings → Smart Account / SA Session Keys / SA Paymaster / SA Modules

{
  "smartAccount": {
    "enabled": false,
    "factoryAddress": "",
    "entryPointAddress": "",
    "safe7579Address": "",
    "fallbackHandler": "",
    "bundlerURL": "",
    "session": {
      "maxDuration": "24h",
      "defaultGasLimit": 500000,
      "maxActiveKeys": 10
    },
    "paymaster": {
      "enabled": false,
      "provider": "circle",
      "rpcURL": "",
      "tokenAddress": "",
      "paymasterAddress": "",
      "policyId": "",
      "fallbackMode": "abort"
    },
    "modules": {
      "sessionValidatorAddress": "",
      "spendingHookAddress": "",
      "escrowExecutorAddress": ""
    }
  }
}
Key Type Default Description
smartAccount.enabled bool false Enable ERC-7579 smart account subsystem
smartAccount.factoryAddress string Safe factory contract address
smartAccount.entryPointAddress string ERC-4337 EntryPoint contract address
smartAccount.safe7579Address string Safe7579 adapter contract address
smartAccount.fallbackHandler string Safe fallback handler contract address
smartAccount.bundlerURL string ERC-4337 bundler RPC endpoint URL
smartAccount.session.maxDuration duration 24h Maximum allowed session key duration
smartAccount.session.defaultGasLimit uint64 500000 Default gas limit for session key operations
smartAccount.session.maxActiveKeys int 10 Maximum number of active session keys
smartAccount.paymaster.enabled bool false Enable paymaster for gasless transactions
smartAccount.paymaster.provider string circle Paymaster provider (circle, pimlico, alchemy)
smartAccount.paymaster.mode string rpc Paymaster mode: rpc (API-based) or permit (on-chain EIP-2612)
smartAccount.paymaster.rpcURL string Paymaster provider RPC endpoint (required for rpc mode)
smartAccount.paymaster.tokenAddress string USDC token contract address
smartAccount.paymaster.paymasterAddress string Paymaster contract address
smartAccount.paymaster.policyId string Provider-specific policy ID (optional)
smartAccount.paymaster.fallbackMode string abort Behavior when paymaster fails (abort, direct)
smartAccount.modules.sessionValidatorAddress string LangoSessionValidator module contract address
smartAccount.modules.spendingHookAddress string LangoSpendingHook module contract address
smartAccount.modules.escrowExecutorAddress string LangoEscrowExecutor module contract address

Observability

Experimental

The observability system is experimental. See Observability.

Settings: lango settings → Observability

{
  "observability": {
    "enabled": false,
    "tokens": {
      "enabled": true,
      "persistHistory": false,
      "retentionDays": 30
    },
    "health": {
      "enabled": true,
      "interval": "30s"
    },
    "audit": {
      "enabled": false,
      "retentionDays": 90
    },
    "metrics": {
      "enabled": true,
      "format": "json"
    }
  }
}
Key Type Default Description
observability.enabled bool false Enable the observability subsystem
observability.tokens.enabled bool true Enable token usage tracking
observability.tokens.persistHistory bool false Persist token usage to database
observability.tokens.retentionDays int 30 Days to retain token usage records
observability.health.enabled bool true Enable health check monitoring
observability.health.interval duration 30s Health check probe interval
observability.audit.enabled bool false Enable audit logging
observability.audit.retentionDays int 90 Days to retain audit records
observability.metrics.enabled bool true Enable metrics export endpoint
observability.metrics.format string json Metrics export format (json, prometheus)

Cron

See Cron Scheduling for usage details and CLI reference.

Settings: lango settings → Cron Scheduler

{
  "cron": {
    "enabled": false,
    "timezone": "UTC",
    "maxConcurrentJobs": 5,
    "defaultSessionMode": "isolated",
    "historyRetention": "720h",
    "defaultDeliverTo": []
  }
}
Key Type Default Description
cron.enabled bool false Enable the cron scheduling system
cron.timezone string UTC Default timezone for cron expressions
cron.maxConcurrentJobs int 5 Maximum concurrently executing jobs
cron.defaultSessionMode string isolated Default session mode: isolated or main
cron.historyRetention duration 720h How long to retain execution history (30 days)
cron.defaultDeliverTo []string [] Default delivery channels for job results

Background

Experimental

Background tasks are experimental. See Background Tasks.

Settings: lango settings → Background Tasks

{
  "background": {
    "enabled": false,
    "yieldMs": 30000,
    "maxConcurrentTasks": 3,
    "defaultDeliverTo": []
  }
}
Key Type Default Description
background.enabled bool false Enable the background task system
background.yieldMs int 30000 Auto-yield threshold in milliseconds
background.maxConcurrentTasks int 3 Maximum concurrently running tasks
background.defaultDeliverTo []string [] Default delivery channels for task results

Workflow

Experimental

The workflow engine is experimental. See Workflow Engine and CLI reference.

Settings: lango settings → Workflow Engine

{
  "workflow": {
    "enabled": false,
    "maxConcurrentSteps": 4,
    "defaultTimeout": "10m",
    "stateDir": "~/.lango/workflows/",
    "defaultDeliverTo": []
  }
}
Key Type Default Description
workflow.enabled bool false Enable the workflow engine
workflow.maxConcurrentSteps int 4 Maximum steps running in parallel
workflow.defaultTimeout duration 10m Default timeout per workflow step
workflow.stateDir string ~/.lango/workflows/ Directory for workflow state files
workflow.defaultDeliverTo []string [] Default delivery channels for workflow results

Librarian

Experimental

The Proactive Librarian is experimental. See Proactive Librarian.

Settings: lango settings → Librarian

{
  "librarian": {
    "enabled": false,
    "observationThreshold": 2,
    "inquiryCooldownTurns": 3,
    "maxPendingInquiries": 2,
    "autoSaveConfidence": "high",
    "provider": "",
    "model": ""
  }
}
Key Type Default Description
librarian.enabled bool false Enable the Proactive Librarian
librarian.observationThreshold int 2 Observations needed before triggering inquiry
librarian.inquiryCooldownTurns int 3 Minimum turns between inquiries
librarian.maxPendingInquiries int 2 Maximum pending inquiries at once
librarian.autoSaveConfidence string high Confidence level for auto-saving: low, medium, high
librarian.provider string AI provider for librarian (empty = agent default)
librarian.model string Model for librarian (empty = agent default)

Environment Variable Substitution

String configuration values support ${ENV_VAR} syntax for environment variable substitution. This is useful for sensitive values like API keys and tokens:

{
  "providers": {
    "my-provider": {
      "type": "anthropic",
      "apiKey": "${ANTHROPIC_API_KEY}"
    }
  },
  "channels": {
    "telegram": {
      "botToken": "${TELEGRAM_BOT_TOKEN}"
    }
  }
}