You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
All keys stored in the Postgres config table. Values are JSONB.
Querying Config
-- Get a specific keySELECT value FROM config WHERE key ='llm.chat';
-- Using helper functionsSELECT get_config_text('llm.chat.provider');
SELECT get_config_int('heartbeat.heartbeat_interval_minutes');
SELECT get_config_bool('agent.is_configured');
-- Set a valueSELECT set_config('agent.name', '"MyAgent"'::jsonb);
Agent Configuration
Key
Type
Description
agent.is_configured
bool
Whether init has completed
agent.name
text
Agent's name
agent.user_name
text
What to call the user
agent.active_hours_start
text
Active hours start (e.g., "09:00")
agent.active_hours_end
text
Active hours end (e.g., "22:00")
agent.timezone
text
Agent timezone
LLM Configuration
Key
Type
Description
llm.chat.provider
text
Conscious LLM provider
llm.chat.model
text
Conscious LLM model
llm.chat.endpoint
text
API endpoint URL
llm.heartbeat.provider
text
Heartbeat LLM provider (falls back to chat)
llm.heartbeat.model
text
Heartbeat model
llm.subconscious.provider
text
Subconscious LLM provider
llm.subconscious.model
text
Subconscious model
llm.guardrails.*
text
Action-claim verifier LLM (falls back to subconscious)
llm.extraction.*
text
Conscious-extraction LLM (falls back to subconscious)
llm.inbound_disposition
object/null
Optional ambiguity-classifier override (falls back to llm.subconscious)
Heartbeat Configuration
Key
Type
Description
heartbeat.heartbeat_interval_minutes
float
Base cadence before drive-urgency adjustment (default 60)
heartbeat.max_energy
float
Normal per-beat reserve; this is not the bank ceiling (default 20)
heartbeat.base_regeneration
float
Base energy regenerated per elapsed hour (default 10)
heartbeat.energy_bank_multiplier
float
Bank capacity as a multiple of the normal reserve (default 3)
heartbeat.energy_surplus_half_life_hours
float
Half-life of stored energy above the normal reserve (default 12)
heartbeat.outcome_regen_floor_multiplier
float
Next-beat regeneration multiplier after no durable outcome (default 0.75)
heartbeat.outcome_regen_score_scale
float
Regeneration multiplier added per outcome-score point (default 0.5)
heartbeat.outcome_regen_ceiling_multiplier
float
Maximum outcome-sensitive regeneration multiplier (default 1.5)
heartbeat.task_energy_multiplier
float
Maximum reserve multiple an actionable backlog beat may draw from the bank (default 2)
heartbeat.cadence_min_minutes
float
Shortest urgency-adjusted cadence (default 15)
heartbeat.cadence_max_minutes
float
Longest urgency-adjusted cadence (default 120)
heartbeat.cadence_idle_multiplier
float
Base-cadence multiplier at zero drive urgency (default 1.5)
heartbeat.cadence_urgency_slope
float
Cadence reduction per unit of maximum drive-urgency ratio (default 0.75)
heartbeat.user_feedback_window_hours
float
Window for verified operator thanks to credit proactive work (default 24)
Clarification Questions
Key
Type
Description
chat.question_timeout_s
int
Seconds a live ask_user card waits before the agent proceeds with its stated best judgment (default 300)
Advisory Deliberation
These limits are read at runtime by both the council tool and the database lifecycle.
A summary memory is created only after every configured perspective, challenge, and
structured synthesis pass succeeds; the full deliberation record is retained either
way.
Key
Type
Description
deliberation.max_personas
int
Maximum perspectives in one run (default 5)
deliberation.signal_limit
int
Maximum compact evidence signals collected by default (default 10)
deliberation.max_topic_chars
int
Maximum question length (default 2000)
deliberation.max_context_chars
int
Maximum additional-context length (default 8000)
deliberation.perspective_max_tokens
int
Output-token ceiling per perspective (default 700)
deliberation.challenge_max_tokens
int
Output-token ceiling for the adversarial review (default 900)
deliberation.synthesis_max_tokens
int
Output-token ceiling for the synthesis (default 900)
deliberation.create_summary_memory
bool
Create one episodic summary after a fully successful grounded run (default true)
Companion Nodes
Node identity and the host-command allowlist live on the companion device, not in
these database settings. See Companion Nodes.
Key
Type
Description
node.enabled
bool
Permit signed nodes to file pairing requests and reconnect after explicit approval (default true)
node.pairing_ttl_hours
int
Hours before an unanswered pairing request expires (default 24)
node.invoke_timeout_seconds
int
Default bounded wait for a signed invocation result (default 120)
Voice Notes and Local Audio
Choose inbound transcription in Settings → Voice notes. It is off until a
user chooses local or cloud processing. An empty channel list means every
configured media-capable channel; sender allowlists still run before any media
download.
Key
Type
Description
voice_notes.stt.enabled
bool
Transcribe inbound voice notes (default false)
voice_notes.stt.provider
text
local_whisper or openai_whisper (default local_whisper)
voice_notes.stt.model
text
Effective model for the selected provider
voice_notes.stt.provider_models
object
Live provider-to-default-model catalog used by setup
voice_notes.stt.channels
array
Optional channel allowlist; empty enables all configured media-capable channels
voice_notes.stt.max_bytes
int
Maximum audio attachment size (default 25 MiB)
voice_notes.stt.timeout_seconds
int
Cloud transcription HTTP timeout (default 60)
voice_notes.stt.language
text
Optional language hint; empty means auto-detect
voice_notes.stt.cloud_disclosure_accepted
bool
Explicit acknowledgement that cloud STT sends audio off-device
voice.tts.enabled
bool
Master speech-output gate (default false)
voice.tts.provider
text
Local synthesis provider (default local_piper)
voice.tts.model
text
Live Piper model selected for synthesis
voice.tts.provider_models
object
Live provider-to-default-model catalog used by Settings and CLI setup
voice.tts.voice
text
Optional multi-speaker voice override
voice.tts.max_chars
int
Maximum text length for one synthesis (default 4000)
voice.tts.max_audio_bytes
int
Maximum returned or retained output (default 16 MiB)
voice.tts.timeout_seconds
int
Local provider request timeout (default 60)
voice.tts.output_ttl_minutes
int
Tool-created audio retention (default 60)
voice.talk.enabled
bool
Allow explicitly started foreground Talk mode (default false)
voice.talk.max_utterance_seconds
int
Maximum length of one Talk-mode utterance (default 60)
voice.wake.enabled
bool
Server gate for explicitly paired audio.wake nodes (default false)
voice.wake.max_audio_bytes
int
Maximum signed node utterance payload (default 4 MiB)
voice.wake.max_response_audio_bytes
int
Maximum synthesized response returned to a node (default 8 MiB)
audio_analysis.local.enabled
bool
Availability of the optional, approval-gated analyze_local_audio tool
audio_analysis.local.allow_autonomous
bool
Separate heartbeat gate (default false; approval still applies)
Manage these settings with hexis execution; direct JSON edits are validated at
the point of use and an invalid or unreadable selection fails closed. Private
keys are never stored in Postgres—profiles contain only exact filesystem paths.
See Execution Backends.
Key
Type
Description
execution.backends
object
Active profile plus named local, ssh, and docker_remote profiles (default: built-in local)
execution.max_output_chars
int
Per-stream result ceiling before tool-level truncation (default 50000)
execution.max_timeout_seconds
int
Global timeout ceiling across backends (default 300)
execution.repl_state_ttl_hours
int
Inactive remote execute_code state lifetime (default 168)
Maintenance Configuration
Key
Type
Description
maintenance.subconscious_enabled
bool
Toggle subconscious decider
maintenance.subconscious_interval_seconds
int
Decider cadence
Connector Cognition
Connector source history stays exact. These passes distill review-gated user-model
claims and importance verdicts. A valid LLM verdict is authoritative; rules run only
when LLM cognition is explicitly disabled or unavailable. LLM verdicts, including
valid empty results, are cached by source content_hash. Detector-version columns
show llm, llm_cache, or rules_fallback provenance.
Key
Type
Description
connector.user_model_synthesis_enabled
bool
Distill connector history into review-gated user-model claims (default true)
connector.user_model_synthesis_mode
text
llm by default; legacy hybrid is also LLM-authoritative, while explicit rules disables the LLM path
connector.user_model_llm_enabled
bool
Permit the LLM claim extractor; false uses the provenance-marked rules fallback
connector.importance_detection_enabled
bool
Classify connector items for the user-visible importance surface (default true)
connector.importance_llm_enabled
bool
Permit LLM importance judgment; false uses only structured provider priority as fallback
connector.importance_notify_threshold
float
Minimum score that queues a web-inbox notification (default 0.85)
Installed App and Web Push
Browser subscriptions are explicit per-device grants in Settings → App.
The VAPID private key is filesystem/env state, not a database secret.
Key
Type
Description
pwa.push.enabled
bool
Permit explicitly subscribed clients to receive web-inbox pushes (default true)
pwa.push.vapid_subject
text
Contact URI attached to VAPID delivery claims
pwa.push.show_message_previews
bool
Include message content on lock screens (privacy-preserving default false)
pwa.presence.enabled
bool
Record short-lived foreground PWA presence (default true)
Automation Suggestions
Key
Type
Description
automation.suggestions.enabled
bool
Master switch for filing inert suggestions; existing decisions and schedules are preserved
automation.suggestions.catalog_enabled
bool
Offer eligible curated starter routines
automation.suggestions.connector_enabled
bool
Offer routines when supported connectors become connected
automation.suggestions.blueprint_enabled
bool
Register blueprint: blocks from installed skills
automation.suggestions.usage_enabled
bool
Let the separately opted-in skill-improvement review propose a routine after three matching asks
automation.suggestions.usage_min_confidence
float
Minimum confidence for a usage-derived suggestion (default 0.85)
automation.suggestions.refresh_interval_seconds
int
Catalog and installed-skill refresh cadence (default 60)
Weekly Learning Review
The learning diff shares the explicitly enabled background skill-review pass;
skills.self_improvement.enabled remains the privacy and cost opt-in.
Key
Type
Description
skills.self_improvement.enabled
bool
Permit the bounded cross-session weekly review (default false)
Minimum recent raw turns required before review (default 6)
skills.self_improvement.min_sessions
int
Minimum distinct sessions required before review (default 2)
learning.review.enabled
bool
Publish a learning diff when the opted-in pass finds enough grounded change (default true)
learning.review.max_items
int
Maximum changes in one review (default 20)
Operator Standing Policies
An explicit standing instruction such as “Always cite the exact source” is
captured only in a private turn whose operator identity is known. Conversation
allowlists do not imply operator authority. Active policies are deterministic
chat continuity, and manage_operator_policies can list or revoke them when the
verified operator asks. Revocation keeps the append-only evidence history.
Key
Type
Description
operator.policy_capture_enabled
bool
Capture explicit standing instructions from verified operator turns (default true)
operator.policy_create_review_item
bool
Create one deduplicated, review-gated policy-alignment item (default true)
operator.policy_context_limit
int
Maximum active policies supplied to chat continuity (default 20)
channel.<type>.operator_user_id
text
Exact operator sender ID for Discord, Telegram, Slack, Signal, WhatsApp, or Matrix
channel.imessage.operator_recipient
text
Exact iMessage phone/email authorized as operator
Inbound Channel Disposition
This policy is disabled by default. When enabled, Postgres makes and audits the
reply/observe/wake/drop decision from the same live channel allowlists used by setup.
An observed message is preserved through the channel source-artifact pipeline but
does not receive a reply. A wake is operator-only, respects heartbeat pause/active
state, and expires rather than firing after a stale channel sync.
Key
Type
Description
channel.disposition.enabled
bool
Enable centralized inbound policy (default false; changes apply without a worker restart)
channel.<type>.disposition.trigger_word
text
Optional address word; empty preserves direct conversation for allowed messages
These controls apply to provider tools, formal outbox deliveries, and direct channel
replies. Prefer the dashboard's Outbound page for pause/resume operations; editing
config directly should be reserved for cadence tuning. Recipient STOP state is stored
separately and cannot be cleared by any setting below.
Key
Type
Description
outbound.suspended
bool
Global reversible pause for all outbound communication (default false)
Reversible rest-cycle consolidation is enabled by default. It distills eligible
episodic groups into a gist and archives their full source rows. Hard deletion is
a separate explicit opt-in and is off by default. Borderline/load-bearing groups
and user-provided documents wait indefinitely for a user decision; a timer may
remind but never decides.
Key
Type
Description
retention.enabled
bool
Master switch for reversible rest-cycle consolidation (default true)
retention.irreversible_pruning_enabled
bool
Permit hard deletion after the grace window and capacity pruning (default false; archived originals otherwise remain recoverable)
retention.review_digest_limit
int
Maximum new load-bearing fade proposals in one digest (default 5)
retention.compression_reports_enabled
bool
Publish factual reports for completed gist summaries (default true)
retention.compression_report_interval_seconds
int
Minimum interval between batched compression receipts (default 86400)
retention.compression_report_limit
int
Maximum completed compressions in one receipt (default 10)