콘텐츠로 이동

구성: 채널, 도구, 통합

channels_config 네임스페이스와 도구 및 통합 구성 섹션을 한 곳에서 정리한 레퍼런스입니다.

이 페이지는 ~/.revka/config.toml에이전트가 외부 세계와 통신하는 방식을 결정하는 부분의 필드 레퍼런스입니다. 메시징 플랫폼을 연결하는 [channels_config] 네임스페이스, 웹·브라우저 도구 섹션, 서드파티 통합 섹션(Composio, Google Workspace, Microsoft 365, Notion, Jira, LinkedIn), 미디어 및 운영 도구 섹션을 다룹니다. 모든 키에는 타입, 기본값, 의미가 명시되어 있어 config.toml을 직접 편집할 수 있습니다.

채널과 도구를 활성화·비활성화하거나, 사용 범위를 한정하거나, 배포를 강화할 때 이 페이지를 참고하세요. 채널 연결에 대한 개념 설명은 메시징 채널 연결을, 도구 카탈로그는 도구 개요를 참고하세요. 제공자·에이전트·라우팅 키는 구성: 제공자, 에이전트 및 라우팅을, 게이트웨이·메모리·보안 키는 구성: 게이트웨이, 메모리, 보안 및 플랫폼을 참고하세요.

[channels_config]는 최상위 타임아웃 하나와 채널별 [channels_config.<name>] 하위 테이블로 구성됩니다. 채널은 기본 차단 방식으로 동작하므로, 허용 목록에 항목이 없는 채널은 어떤 메시지도 수신하지 않습니다. 항목 하나를 "*"로 설정하면 모두 허용됩니다.

[channels_config]
message_timeout_secs = 300
[channels_config.telegram]
bot_token = "123456:TELEGRAM-TOKEN"
allowed_users = ["123456789"] # [] = deny all, "*" = allow all
stream_mode = "off" # off | partial
mention_only = false
interrupt_on_new_message = false
[channels_config.discord]
bot_token = "DISCORD-BOT-TOKEN"
guild_id = "123456789012345678" # optional
allowed_users = ["*"]
stream_mode = "multi_message" # off | partial | multi_message
타입기본값의미
message_timeout_secsu64300메시지당 기본 처리 시간 예산. 도구 루프 깊이에 따라 [pacing].message_timeout_scale_max 상한까지 배율 적용됩니다.
clibooltrueCLI 터미널 stdin/stdout 채널(revka chat). 기본으로 활성화되어 있으며, cli = false로 비활성화할 수 있습니다.

대부분의 채널은 다음 필드를 공유합니다(이름은 플랫폼마다 다를 수 있음).

필드의미
bot_token / api_key채널 인증 정보.
allowed_users / allowed_numbers / allowed_senders / allowed_from / allowed_pubkeys / allowed_contacts / allowed_destinations발신자 허용 목록. [] = 전체 차단, "*" = 전체 허용. 정확한 필드명은 아래 표를 참고하세요.
mention_only@멘션 시에만 응답합니다(단체 채팅).
stream_mode"off", "partial"(실시간 초안 편집), 또는 지원 환경에서 "multi_message"(단락 분할).
proxy_url채널별 HTTP/SOCKS5 프록시.
notification_chat_id / notification_channel_id비요청 알림 전송 대상.
interrupt_on_new_message동일 발신자가 다시 메시지를 보내면 진행 중인 생성을 취소합니다. Telegram, Slack, Discord, Mattermost, Matrix에서 지원됩니다.

허용 목록 필드명은 플랫폼마다 다릅니다. 빈 목록은 전체를 차단하고, "*"는 전체를 허용합니다.

채널허용 목록 필드
Telegram, Discord, Slack, Mattermost, Matrix, IRC, Lark, Feishu, DingTalk, QQ, Nextcloud Talk, WeCom, Mochat, Twitterallowed_users
Signalallowed_from
WhatsApp (Cloud & Web), WATIallowed_numbers
Email, Linq, Gmail Pushallowed_senders
iMessageallowed_contacts
Nostrallowed_pubkeys
ClawdTalkallowed_destinations

일부 채널에는 추가 키가 필요합니다. 전체 설정 절차는 채널 개요와 각 플랫폼 페이지를 참고하세요.

모드는 설정된 키에 따라 자동으로 결정됩니다. phone_number_id → Cloud API, session_path → Web 모드.

# Cloud API (Meta webhook 모드 — 공개 HTTPS 콜백 필요)
[channels_config.whatsapp]
access_token = "EAAB..."
phone_number_id = "123456789012345"
verify_token = "your-verify-token"
app_secret = "your-app-secret" # HMAC payload signature (recommended)
allowed_numbers = ["*"]
# Web 모드 (wa-rs) — `whatsapp-web` 빌드 기능 필요
[channels_config.whatsapp]
session_path = "~/.revka/whatsapp-session.db"
pair_phone = "15551234567" # omit for QR-code flow
mode = "business" # or "personal"
allowed_numbers = ["*"]

아래의 [transcription], [tts], [media_pipeline], [multimodal] 섹션도 채널에서 사용됩니다(음성 메모, 오디오 첨부 파일, 이미지 처리).

이 섹션들은 에이전트의 외부 웹 접근을 제어합니다. config에 해당 섹션이 없을 경우 네 가지 모두 기본값이 enabled = true이고 allowed_domains = ["*"](모든 공개 도메인)입니다. 위의 Aside 참고.

browserbrowser_open 도구를 지원합니다. 플러그인 방식 백엔드를 지원합니다.

[browser]
enabled = true
allowed_domains = ["example.com"] # "*" = all public domains (local/private still blocked)
backend = "agent_browser" # agent_browser | rust_native | computer_use | auto
native_headless = true
[browser.computer_use]
endpoint = "http://127.0.0.1:8787/v1/actions"
allow_remote_endpoint = false
타입기본값의미
enabledbooltrue브라우저 도구를 활성화합니다(섹션이 없을 때 유효 기본값).
allowed_domainslist["*"]도메인 허용 목록. "*" = 모든 공개 도메인. 로컬/사설 호스트는 항상 차단됩니다. 섹션이 없을 때 유효 기본값.
backendstring"agent_browser"agent_browser, rust_native(browser-native 기능 필요), computer_use, 또는 auto.
native_headlessbooltruerust-native 백엔드의 헤드리스 모드.
native_webdriver_urlstringhttp://127.0.0.1:9515native 백엔드용 WebDriver 엔드포인트.
native_chrome_pathstring?미설정Chrome/Chromium 바이너리 경로.
computer_use.allow_remote_endpointboolfalsecomputer-use 사이드카가 외부에 노출되지 않도록 보호합니다.

[browser_delegate] — 브라우저 CLI 위임

섹션 제목: “[browser_delegate] — 브라우저 CLI 위임”

browser_delegate 도구를 지원합니다. 브라우저 작업을 CLI 서브프로세스(예: claude-in-chrome MCP를 사용하는 Claude Code)에 위임합니다. 셸 접근이 필요합니다.

[browser_delegate]
enabled = true
cli_binary = "claude"
chrome_profile_dir = "~/.config/chrome-corp-profile"
allowed_domains = ["teams.microsoft.com", "outlook.office.com"]
blocked_domains = []
task_timeout_secs = 120

http_request 도구(전체 GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS)를 지원합니다.

[http_request]
enabled = true
allowed_domains = ["api.example.com", "api.github.com"]
max_response_size = 1000000
timeout_secs = 30
# allow_private_hosts = false
기본값의미
enabledtrue도구를 활성화합니다(섹션이 없을 때 유효 기본값).
allowed_domains["*"]도메인 허용 목록. "*" = 모든 공개 도메인. allow_private_hosts를 설정하지 않으면 로컬/사설 호스트는 차단됩니다. 섹션이 없을 때 유효 기본값.
max_response_size응답 바이트 상한.
timeout_secs요청당 타임아웃.
allow_private_hostsfalse사설/루프백 대상 허용.

[web_fetch] — 페이지를 텍스트로 가져오기

섹션 제목: “[web_fetch] — 페이지를 텍스트로 가져오기”

web_fetch 도구(GET 전용, HTML → 읽기 좋은 텍스트, JS가 많은 사이트를 위한 Firecrawl 폴백 지원)를 지원합니다.

[web_fetch]
enabled = true
allowed_domains = ["docs.anthropic.com", "*"]
blocked_domains = []
max_response_size = 1000000
timeout_secs = 30
[web_fetch.firecrawl]
# api_key = "fc-..." # enables the JS-rendering fallback

기타 키: allowed_private_hosts(사설 호스트 차단의 호스트별 예외)와 web_fetch.firecrawl.*(Firecrawl 폴백). http_request와의 차이: web_fetch는 GET 전용·텍스트 변환에 특화되어 있고, http_request는 전체 HTTP를 지원합니다.

web_search_tool을 지원합니다. 웹 검색은 DuckDuckGo(API 키 불필요)로 기본 활성화됩니다.

[web_search]
enabled = true
provider = "duckduckgo" # duckduckgo (free) | brave | searxng
max_results = 5
timeout_secs = 15
# brave_api_key = "..." # for Brave
# searxng_instance_url = "https://searx.example.com" # for SearXNG
기본값의미
enabledtrue웹 검색을 활성화합니다.
provider"duckduckgo"duckduckgo, brave, 또는 searxng.
max_results5검색 결과 수.
timeout_secs15검색 타임아웃.
brave_api_key미설정Brave 제공자에 필요합니다(env BRAVE_API_KEY).
searxng_instance_url미설정자체 호스팅 SearXNG에 필요합니다(env SEARXNG_INSTANCE_URL).

각 통합 섹션은 도구 하나를 활성화하고 인증 정보를 제공합니다. 모두 기본값은 enabled = false입니다. 일부는 config 파일 외에 환경 변수로도 인증 정보를 읽습니다.

[composio] — 관리형 OAuth (1000개 이상 앱)

섹션 제목: “[composio] — 관리형 OAuth (1000개 이상 앱)”

composio 도구를 지원합니다. Composio API 키(config의 api_key 또는 env COMPOSIO_API_KEY)가 필요합니다.

[composio]
enabled = true
api_key = "comp_..."
entity_id = "default"

앱의 OAuth는 composio connect로 연결합니다. Composio가 연결된 계정 없음 오류를 반환하면, 도구의 list_accounts 액션을 호출하여 반환된 connected_account_idexecute에 전달하세요.

[google_workspace] — Gmail, Drive, Calendar 등

섹션 제목: “[google_workspace] — Gmail, Drive, Calendar 등”

gws CLI를 통해 google_workspace 도구를 지원합니다. gws가 설치(npm install -g @googleworkspace/cli)되고 인증된 상태여야 하며, 셸 접근이 필요합니다.

[google_workspace]
enabled = true
default_account = "[email protected]"
allowed_services = ["gmail", "drive"]
audit_log = true
[[google_workspace.allowed_operations]]
service = "gmail"
resource = "users"
sub_resource = "messages" # Gmail needs the 4th segment
methods = ["list", "get"]
의미
enabled도구를 활성화합니다.
default_account / credentials_path계정 선택 및 인증 정보.
allowed_services서비스 허용 목록(gmail, drive, calendar, sheets, docs 등).
allowed_operations[]service/resource/sub_resource/methods 세부 범위 설정. Gmail 명령은 4세그먼트(sub_resource 포함), Drive/Calendar는 3세그먼트(sub_resource 생략).
rate_limit_per_minute / timeout_secs속도 제한 및 타임아웃.
audit_log각 작업을 로그에 기록합니다.

[microsoft365] — Outlook, Teams, Calendar, OneDrive, SharePoint

섹션 제목: “[microsoft365] — Outlook, Teams, Calendar, OneDrive, SharePoint”

Microsoft Graph를 통해 microsoft365 도구를 지원합니다. Azure AD 앱 등록이 필요합니다.

[microsoft365]
enabled = true
tenant_id = "..."
client_id = "..."
client_secret = "..." # required for client_credentials flow
auth_flow = "client_credentials" # or device_code
scopes = ["Mail.Read", "Chat.ReadWrite"]
token_cache_encrypted = true
# user_id = "..." # target user for app-only flows

토큰 캐시는 워크스페이스가 아닌 config 디렉터리에 저장됩니다. 등록 방식에 따라 client_credentials(앱 전용) 또는 device_code 인증 중 선택하세요.

[notion]
enabled = true
api_key = "secret_..." # or NOTION_API_KEY
[jira]
enabled = true
base_url = "https://your-org.atlassian.net"
api_token = "..." # or JIRA_API_TOKEN
allowed_actions = ["get_ticket", "search", "add_comment"]
timeout_secs = 30

jira.allowed_actions는 도구가 수행할 수 있는 작업을 제한합니다. Atlassian Cloud와 Server 모두 지원합니다.

linkedin 도구를 지원합니다. 인증 정보는 .envLINKEDIN_* 환경 변수에서 읽습니다.

[linkedin]
enabled = true
api_version = "202602"
[linkedin.content]
# automated-posting strategy settings
[linkedin.image]
# image-publishing settings

음성, 오디오, 이미지, 인바운드 미디어 처리를 구성합니다. [transcription][tts]는 오디오를 수신하거나 출력하는 모든 채널에서 공유됩니다.

[transcription] — 음성-텍스트 변환

섹션 제목: “[transcription] — 음성-텍스트 변환”
[transcription]
enabled = true
default_provider = "groq" # groq | openai | deepgram | assemblyai | google | local_whisper
api_key = "..." # falls back to GROQ_API_KEY for Groq
model = "whisper-large-v3-turbo"
language = "en" # optional ISO-639-1 hint
max_duration_secs = 120
기본값의미
enabledfalse음성-텍스트 변환을 활성화합니다.
default_provider"groq"groq, openai, deepgram, assemblyai, google, local_whisper.
api_key미설정제공자 키. URL 기반 환경 변수 → TRANSCRIPTION_API_KEYGROQ_API_KEYOPENAI_API_KEY 순으로 폴백됩니다.
model"whisper-large-v3-turbo"Groq 기본값.
language미설정ISO-639-1 힌트.
initial_prompt미설정예상 어휘 방향으로 변환을 유도합니다.
max_duration_secs120이보다 긴 오디오는 건너뜁니다.
transcribe_non_ptt_audiofalseWhatsApp에서 음성 메모가 아닌 오디오도 변환합니다.

제공자별 하위 섹션: [transcription.openai], [transcription.deepgram], [transcription.assemblyai], [transcription.google], [transcription.local_whisper](url 필수, bearer_token, max_audio_bytes 기본값 25 MB, timeout_secs 기본값 300). 최대 오디오 크기는 25 MB이며, 지원 형식은 flac, mp3, mp4, m4a, ogg, opus, wav, webm입니다.

[tts]
enabled = true
default_provider = "openai" # openai | elevenlabs | google | edge | piper
default_voice = "alloy"
default_format = "mp3" # mp3 | opus | wav
max_text_length = 4096
[tts.openai]
model = "tts-1"
speed = 1.0
[tts.elevenlabs]
model_id = "eleven_monolingual_v1"
stability = 0.5
similarity_boost = 0.5

제공자별 하위 섹션: [tts.openai](model, speed), [tts.elevenlabs](model_id, stability, similarity_boost), [tts.google](language_code), [tts.edge](binary_path, 무료, 서브프로세스 방식), [tts.piper](api_url, 로컬). 제공자 키는 OPENAI_API_KEY, ELEVENLABS_API_KEY, GOOGLE_TTS_API_KEY로 폴백됩니다.

[media_pipeline] — 자동 미디어 이해

섹션 제목: “[media_pipeline] — 자동 미디어 이해”

에이전트가 첨부 파일을 받기 전에 전처리하여 [Audio transcription: ...], [Image: <description>], [Video summary: ...]를 앞에 추가합니다. 오디오에는 [transcription]을, 이미지에는 활성 제공자의 비전 기능을 사용합니다.

[media_pipeline]
enabled = true
transcribe_audio = true
describe_images = true
summarize_video = true

제공자가 비전을 지원하지 않으면 [Image: attached]로 대체됩니다. 기본값은 enabled = false입니다.

에이전트 메시지에 이미지를 첨부하는 방식을 제어합니다.

[multimodal]
max_images = 4 # clamped 1–16
max_image_size_mb = 5 # clamped 1–20
allow_remote_fetch = false
vision_provider = "ollama" # optional: route images to a dedicated vision model
vision_model = "llava:7b"

지원하는 이미지 마커: [IMAGE:/path/to/file.png] 또는 [IMAGE:data:image/png;base64,...]. 원격 URL은 allow_remote_fetch = true일 때만 가져옵니다.

image_gen 도구(기본적으로 fal.ai Flux 모델 사용; 독립 섹션에서 DALL-E, Stability, Imagen 제공자도 지원)를 지원합니다.

[image_gen]
enabled = true
default_model = "fal-ai/flux/schnell"
api_key_env = "FAL_API_KEY" # name of the env var holding the provider key
의미
enabled도구를 활성화합니다.
default_model기본 제공자 모델 ID.
api_key_env제공자 API 키를 담고 있는 환경 변수 이름.

분석, 파이프라인, 워크스페이스 유지 관리 도구를 활성화합니다.

[pipeline] — 다단계 도구 파이프라인

섹션 제목: “[pipeline] — 다단계 도구 파이프라인”

execute_pipeline 메타 도구를 지원합니다.

[pipeline]
enabled = true
max_steps = 20
allowed_tools = ["file_read", "file_write", "shell"]

단계는 {{step[N].result}} 보간으로 순차 실행되거나, parallel: true로 동시 실행됩니다(병렬 모드에서는 보간 불가). allowed_tools는 파이프라인 단계에서 호출할 수 있는 도구를 제한합니다.

backup 도구(생성 / 목록 / 검증 / 복원)를 지원합니다. 기본으로 활성화되어 있습니다.

[backup]
enabled = true
include_dirs = ["state", "sessions"]
max_keep = 10
기본값의미
enabledtrue백업 작업을 활성화합니다.
include_dirs각 백업에 포함할 디렉터리.
max_keep보관 개수. 이보다 오래된 백업은 삭제됩니다.

[data_retention] — 제거 및 저장소 통계

섹션 제목: “[data_retention] — 제거 및 저장소 통계”

data_management 도구(통계 / 제거 / 목록)를 지원합니다. 기본으로 비활성화되어 있으며, purge는 파괴적 작업입니다.

[data_retention]
enabled = true
retention_days = 90

[cloud_ops] — 클라우드 자문 도구

섹션 제목: “[cloud_ops] — 클라우드 자문 도구”

읽기 전용 cloud_opscloud_patterns 도구(IaC 검토, 마이그레이션 평가, 비용 분석, Well-Architected 검토)를 지원합니다. 클라우드 리소스를 생성하거나 변경하지 않습니다.

[cloud_ops]
enabled = true

[security_ops] — 관리형 사이버보안

섹션 제목: “[security_ops] — 관리형 사이버보안”

security_ops 도구(경보 트리아지, 플레이북 실행, 취약점 파싱, 보고)를 지원합니다.

[security_ops]
enabled = true