Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.meetcuria.com/llms.txt

Use this file to discover all available pages before exploring further.

Channel configuration lives in config/local.yaml under channel_accounts. Currently, email is the only channel that supports multi-account configuration. Signal and CLI are configured via environment variables only.

Email accounts

# config/local.yaml
channel_accounts:
  email:
    <account-name>:
      nylas_grant_id: string          # Nylas grant ID (supports "env:VAR_NAME")
      self_email: string              # email address this account sends from (supports "env:VAR_NAME")
      outbound_policy: string         # "direct" | "draft_gate" | "autonomy_gated"
      autonomy_threshold: number      # required when outbound_policy is "autonomy_gated" (0–100)
      observation_mode: boolean       # optional, default false
      excluded_sender_emails: [string] # optional, supports "env:VAR_NAME"

Field details

account-name

The logical name for this account (e.g., curia, personal, work). Used as the account parameter in email skills (email-list, email-get, email-draft-save, email-archive).

nylas_grant_id

The Nylas grant identifier for the connected email account. Supports env:VAR_NAME references to pull the value from an environment variable.

self_email

The email address this account reads from and sends as. Supports env:VAR_NAME references.

outbound_policy

Controls how outbound emails are handled for this account:
PolicyBehavior
directSend immediately. Content filter and blocked-contact checks are always enforced.
draft_gateSave the reply as a Nylas draft for CEO review before sending. The CEO discovers pending drafts via the end-of-day digest.
autonomy_gatedCheck the global autonomy score. If the score meets autonomy_threshold, send directly; otherwise fall back to draft_gate.

autonomy_threshold

Required when outbound_policy is autonomy_gated. Integer 0–100 representing the minimum autonomy score for autonomous sending. When the live score is below this threshold, outbound emails are saved as drafts instead.

observation_mode

When true, Curia monitors this inbox as an observer rather than acting as the recipient:
  • Inbound emails bypass the contact trust flow (no provisional contact creation, no hold queue)
  • Messages are delivered to the coordinator with an observationMode flag
  • The coordinator treats them as third-party communications to triage, not as instructions
  • Intended for the CEO’s personal inbox where Curia should draft replies on request but not act autonomously

excluded_sender_emails

Additional sender email addresses to suppress from this account’s inbox, beyond the account’s own self_email. Primary use case: exclude Curia’s outbound address from a monitored CEO inbox to prevent self-reply loops. Supports env:VAR_NAME references.

env:VAR_NAME references

Use env:VAR_NAME syntax in any string field to reference an environment variable rather than inlining credential values in the YAML:
channel_accounts:
  email:
    curia:
      nylas_grant_id: "env:NYLAS_GRANT_ID_CURIA"
      self_email: "env:NYLAS_SELF_EMAIL_CURIA"
      outbound_policy: direct

Example: multi-account setup

channel_accounts:
  email:
    # Curia's own email — sends directly
    curia:
      nylas_grant_id: "env:NYLAS_GRANT_ID_CURIA"
      self_email: "env:NYLAS_SELF_EMAIL_CURIA"
      outbound_policy: direct

    # CEO's personal inbox — observation mode, autonomy-gated replies
    personal:
      nylas_grant_id: "env:NYLAS_GRANT_ID_PERSONAL"
      self_email: "env:NYLAS_SELF_EMAIL_PERSONAL"
      outbound_policy: autonomy_gated
      autonomy_threshold: 80
      observation_mode: true
      excluded_sender_emails:
        - "env:NYLAS_SELF_EMAIL_CURIA"
When channel_accounts.email is present in config/local.yaml, the single-account environment variable mode (NYLAS_API_KEY / NYLAS_GRANT_ID / NYLAS_SELF_EMAIL) is ignored.

Email setup

Step-by-step guide to connecting your email.

Initial configuration

Environment variables and first-run config.