111 lines
3.0 KiB
YAML
111 lines
3.0 KiB
YAML
|
|
# Example Configuration
|
||
|
|
# Copy this file to config.yaml and edit as needed.
|
||
|
|
# Environment variables can be used with ${VAR} syntax.
|
||
|
|
|
||
|
|
# Number of concurrent message processing workers (LLM queries + SMTP sends).
|
||
|
|
# Default: 1 (for llama.cpp without the -np / --parallel flag).
|
||
|
|
concurrency: 1
|
||
|
|
|
||
|
|
# How long to wait for in-flight messages during shutdown.
|
||
|
|
shutdown_timeout: 30s
|
||
|
|
|
||
|
|
# Message filtering configuration.
|
||
|
|
# All specified filters are AND'd together.
|
||
|
|
# Excluding allowed_senders, filters are used for IMAP search and will match
|
||
|
|
# substrings.
|
||
|
|
filters:
|
||
|
|
# Only accept emails from these addresses (case-insensitive exact match).
|
||
|
|
# Empty list = accept from anyone (not recommended for production).
|
||
|
|
allowed_senders:
|
||
|
|
- trusted@example.com
|
||
|
|
# - another@example.com
|
||
|
|
|
||
|
|
# Only process emails with body containing these keywords.
|
||
|
|
# body:
|
||
|
|
# - "token:e5a78ec2-18f5-4d13-8e97-4062393eb439"
|
||
|
|
# - "user:e8220e30-cdb6-4c20-a579-35c757bddb7b"
|
||
|
|
|
||
|
|
# Only process emails with subject containing this string.
|
||
|
|
# subject: "[AI]"
|
||
|
|
|
||
|
|
# Only process emails sent to this address.
|
||
|
|
# Useful for plus-addressing: you+ai@example.com
|
||
|
|
# to: you+ai@example.com
|
||
|
|
|
||
|
|
# IMAP server connection for reading messages.
|
||
|
|
imap:
|
||
|
|
host: imap.gmail.com
|
||
|
|
port: "993"
|
||
|
|
user: you@gmail.com
|
||
|
|
password: ${RAVEN_IMAP_PASSWORD}
|
||
|
|
|
||
|
|
# Message retrieval strategy.
|
||
|
|
intake:
|
||
|
|
# Mode: idle | poll
|
||
|
|
# - idle: Use IMAP IDLE for real-time notifications (requires server support)
|
||
|
|
# - poll: Periodically check for new messages
|
||
|
|
mode: poll
|
||
|
|
# How often to poll for new messages (only used in poll mode).
|
||
|
|
poll_interval: 30s
|
||
|
|
|
||
|
|
# LLM configuration.
|
||
|
|
llm:
|
||
|
|
url: http://localhost:8080/v1
|
||
|
|
key: ${RAVEN_LLM_KEY}
|
||
|
|
model: local-model
|
||
|
|
system_prompt: |
|
||
|
|
You are a helpful assistant responding to plain text emails.
|
||
|
|
Be concise and helpful. Do not use Markdown formatting.
|
||
|
|
# Maximum time to wait for LLM response.
|
||
|
|
timeout: 15m
|
||
|
|
|
||
|
|
# SMTP server connection for sending replies.
|
||
|
|
# User, password, and from default to IMAP values if not specified.
|
||
|
|
smtp:
|
||
|
|
host: smtp.gmail.com
|
||
|
|
port: "587"
|
||
|
|
# user: you@gmail.com
|
||
|
|
# password: ${RAVEN_SMTP_PASSWORD}
|
||
|
|
# from: you@example.com
|
||
|
|
|
||
|
|
# External tools available to the LLM.
|
||
|
|
tools:
|
||
|
|
- name: echo
|
||
|
|
description: Echoes back the input message. Useful for testing.
|
||
|
|
command: echo
|
||
|
|
arguments:
|
||
|
|
- "'{{ .message }}'"
|
||
|
|
parameters:
|
||
|
|
type: object
|
||
|
|
properties:
|
||
|
|
message:
|
||
|
|
type: string
|
||
|
|
description: The message to echo back
|
||
|
|
required:
|
||
|
|
- message
|
||
|
|
timeout: 3s
|
||
|
|
|
||
|
|
- name: man
|
||
|
|
description: Read a Unix manual page.
|
||
|
|
command: man
|
||
|
|
arguments:
|
||
|
|
- "{{ .page_name }}"
|
||
|
|
parameters:
|
||
|
|
type: object
|
||
|
|
properties:
|
||
|
|
page_name:
|
||
|
|
type: string
|
||
|
|
description: |
|
||
|
|
The name of the man page to read.
|
||
|
|
Can optionally include a section number.
|
||
|
|
For example: '2 read' or 'cat(1)'.
|
||
|
|
required:
|
||
|
|
- page_name
|
||
|
|
|
||
|
|
- name: now
|
||
|
|
description: Retrieves the current local date, time, and timezone.
|
||
|
|
command: date
|
||
|
|
arguments:
|
||
|
|
- "+%Y-%m-%dT%H:%M:%S%:z"
|
||
|
|
timeout: 1s
|