How to Customize AgentsView Behavior: Complete Configuration Guide
Customize AgentsView by modifying the Config struct through CLI flags, environment variables, or a config.toml file, with settings merged in strict precedence from flags down to hardcoded defaults.
AgentsView is a Go-based agent session viewer that centralizes all runtime behavior—from HTTP server binding to TLS termination and database sync—in a single configuration object. To customize AgentsView behavior, you manipulate the Config struct defined in internal/config/config.go, which supports hierarchical overrides via command-line arguments, environment variables, and TOML configuration files. This guide provides concrete examples for the most common customization scenarios based on the actual source code implementation.
Configuration Hierarchy and Precedence
The Central Config Struct
All runtime-adjustable behavior in AgentsView flows through the Config struct located in internal/config/config.go. This struct aggregates settings for network binding, authentication, proxy management, terminal integration, database connections, and per-agent overrides. According to the AgentsView source code, every component—including the HTTP server, Caddy proxy, sync engine, and session parsers—reads its behavior from this central configuration object.
Configuration Loading Order
The configuration system merges values in the following order of precedence, where later sources override earlier ones:
- Hardcoded defaults defined in the
Configstruct initialization config.tomlorconfig.jsonfiles read byapplyConfigTOML(line 62 ininternal/config/config.go)- Environment variables parsed by
loadEnv(line 66 ininternal/config/config.go) - CLI flags registered in
cmd/agentsview/main.goviaRegisterServeFlagsand applied byapplyFlags
This hierarchy means that environment variables override file settings, and command-line flags take ultimate precedence over all other sources.
Core Customization Areas
Network and UI Binding
Control the embedded HTTP server behavior using these Config fields:
HostandPort: Define the bind address and TCP port (default:localhost:8080)PublicURL: The external URL used for generating links and CORS headersPublicOrigins: Trusted CORS origins for the frontend SPARequireAuthandAuthToken: Enable API authentication by requiring a bearer token
These values are consumed by the server initialization logic in internal/server/server.go.
Managed Reverse Proxy Configuration
AgentsView can automatically launch a Caddy instance to handle TLS termination and reverse proxying. Configure this via the Proxy struct field:
Mode: Set to"caddy"to enable the managed proxyBin: Path to the Caddy binary (default:/usr/local/bin/caddy)BindHostandPublicPort: Where the proxy listens (e.g.,0.0.0.0:443)TLSCertandTLSKey: Paths to your TLS certificate filesAllowedSubnets: CIDR blocks to restrict access (e.g.,["10.0.0.0/8"])
The proxy configuration is validated and initialized during the serve command execution.
Terminal Integration Settings
Customize how the resume command opens terminal sessions using the Terminal field:
Mode: Options includeauto,tmux,screen, orcustomCustomBin: Specify a custom terminal binary (e.g.,/usr/bin/konsole)CustomArgs: Arguments passed to the terminal binary, supporting{cmd}placeholder substitution
This integration is particularly useful when running AgentsView inside containerized or remote development environments.
Database Synchronization
AgentsView supports optional backends for session persistence and analytics:
PostgreSQL Sync via the PG field:
URL: Connection string (can be overridden byAGENTSVIEW_PG_URL)PGTargets: Map of named connection targets for fan-out scenariosDefaultPG: Which target to use by default
DuckDB Mirror via the DuckDB field:
Path: Local file path for the DuckDB databaseURLandToken: Remote DuckDB server credentials
Connection handling is implemented in internal/postgres/connect.go and respects the pgEnvOverrides for environment-based credentials.
Automated Classification Rules
Extend the session classifier with domain-specific matching rules using the Automated field:
Prefixes: Array of string prefixes (e.g.,["TODO:", "FIXME:"])Substrings: Substring matches (e.g.,["🚧", "🔒"])ExactMatches: Exact string matches (e.g.,["UNSAFE"])
These rules are merged into the classifier at startup in internal/parser/classifier.go to improve search relevance and automatic categorization.
Per-Agent Runtime Overrides
Override launch behavior for specific agents using the Agent map, which maps agent names to AgentConfig structs:
Binary: Custom path to the agent executableSandbox: Execution environment (e.g.,"docker","none")AllowUnsafe: Permit potentially unsafe operations for this agent
This allows you to use custom-built agent binaries or enforce specific sandboxing policies per agent type.
Practical Implementation Examples
Creating a Custom config.toml
Place a config.toml file in $HOME/.agentsview/ to persist your customizations:
host = "0.0.0.0"
port = 9090
require_auth = true
auth_token = "secure-token-123"
[proxy]
mode = "caddy"
bin = "/usr/local/bin/caddy"
bind_host = "0.0.0.0"
public_port = 443
tls_cert = "/etc/agentsview/tls.crt"
tls_key = "/etc/agentsview/tls.key"
allowed_subnets = ["10.0.0.0/8", "192.168.1.0/24"]
[terminal]
mode = "custom"
custom_bin = "/usr/bin/konsole"
custom_args = "--new-tab -e {cmd}"
[agent."myagent"]
binary = "/opt/myagent/bin/agent"
sandbox = "docker"
allow_unsafe = true
[automated]
prefixes = ["TODO:", "FIXME:", "NOTE:"]
substrings = ["🚧", "🔒"]
exact_matches = ["UNSAFE"]
This configuration exposes AgentsView on all interfaces with TLS termination, uses Konsole for resume commands, and applies custom rules for a specific agent named myagent.
Overriding via Environment Variables
For containerized deployments or CI/CD pipelines, use the AGENTSVIEW_ prefix:
export AGENTSVIEW_HOST=127.0.0.1
export AGENTSVIEW_PORT=8081
export AGENTSVIEW_PROXY=caddy
export AGENTSVIEW_PROXY_PUBLIC_PORT=8443
export AGENTSVIEW_PG_URL=postgres://pguser:secret@db.example.com/agentsview?sslmode=require
export AGENTSVIEW_DUCKDB_PATH=/var/lib/agentsview/duckdb.db
These variables are parsed by the loadEnv function in internal/config/config.go (lines 66-84) and take precedence over file-based configuration.
Runtime CLI Flags
Pass flags directly to the serve command for temporary overrides:
agentsview serve \
--host 0.0.0.0 \
--port 8080 \
--proxy caddy \
--caddy-bin /opt/caddy/bin/caddy \
--tls-cert /opt/certs/agentsview.crt \
--tls-key /opt/certs/agentsview.key \
--allowed-subnet 10.10.0.0/16 \
--no-browser \
--events-coalesce-interval 5s
Flags are registered in RegisterServeFlags (sourced from cmd/agentsview/main.go) and applied via applyFlags/applyPFlags in the config package.
Programmatic Configuration in Go
For advanced integrations, manipulate the configuration struct directly before starting the server:
cfg, _ := config.LoadMinimal()
// Add a remote sync target
cfg.RemoteHosts = append(cfg.RemoteHosts, config.RemoteHost{
Host: "sync.example.com",
Transport: config.RemoteTransportSSH,
User: "syncuser",
Port: 22,
Interval: 15 * time.Minute,
})
// Validate remote host configuration
if err := cfg.ValidateRemoteHosts(); err != nil {
log.Fatal(err)
}
The ValidateRemoteHosts function (lines 39-76 in internal/config/config.go) ensures that invalid entries cause immediate, clear errors before the sync process begins.
Summary
- Centralized Configuration: All AgentsView behavior is controlled by the
Configstruct ininternal/config/config.go. - Three Input Methods: Customize via
config.tomlfiles,AGENTSVIEW_prefixed environment variables, or CLI flags. - Strict Precedence: Command-line flags override environment variables, which override config files, which override defaults.
- Key Areas: Network binding, Caddy proxy settings, terminal integration, PostgreSQL/DuckDB sync, automated classification rules, and per-agent binary overrides.
- Validation: Remote sync targets and proxy configurations are validated at startup to prevent runtime errors.
Frequently Asked Questions
What is the configuration precedence order in AgentsView?
AgentsView merges configuration in the following order: hardcoded defaults are loaded first, then overridden by values from config.toml (processed by applyConfigTOML), then by environment variables parsed by loadEnv, and finally by CLI flags applied via applyFlags. This means that command-line arguments always take the highest precedence.
How do I enable TLS for the AgentsView web interface?
Set the proxy.mode field to "caddy" in your configuration, then provide paths to your certificate and key files using proxy.tls_cert and proxy.tls_key. Ensure the proxy.public_port is set to 443 and that the Caddy binary path is correctly specified in proxy.bin. The managed proxy will automatically terminate TLS and forward traffic to the internal AgentsView server.
Can I customize classification rules for agent sessions?
Yes, extend the automated classifier by adding entries to the [automated] section in your config.toml. Use the prefixes, substrings, and exact_matches arrays to define domain-specific patterns. These rules are merged into the classifier at startup in internal/parser/classifier.go and improve the relevance of automatic session categorization.
How do I configure remote sync targets programmatically?
Import the internal/config package and append RemoteHost structs to the cfg.RemoteHosts slice. Specify the Host, Transport (SSH or HTTP), User, Port, and Interval fields. Call ValidateRemoteHosts() to ensure the configuration is valid before starting the sync process. Invalid configurations will abort with clear error messages indicating which host failed validation.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →