Local-first KakaoTalk auto-reply agent for macOS.
Features • Architecture • Model Support • Quick Start • Configuration • 한국어 문서 (Korean)
openkakao-bot is an autonomous local agent for the macOS KakaoTalk desktop client. It observes designated chatrooms, retrieves conversation context from local databases, and drafts replies using your preferred LLM runtime without calling Kakao servers.
KakaoTalk macOS (Local SQLCipher DB)
│
▼ (Read-only Local Ingestion)
openkakao-cli (Rust Engine)
│
├─► Local Vector & Semantic Memory (context.sqlite3)
│
▼
Agent Decision Pipeline
│
├─► Open Weights (Gemma 4, Qwen 3.8-Max, DeepSeek V4-Flash, Kimi K3 on Apple Silicon)
├─► Frontier APIs (Claude Sonnet 5 / Opus 5, GPT-6 Astra, Gemini 3.8 Flash)
│
▼ (Native macOS Accessibility Dispatch)
KakaoTalk Composer
- 100% On-Device Privacy: Chat history, local vector memories, and credentials never leave your Mac.
- Fast Local Ingestion: High-performance Rust core decrypts and reads local SQLite databases directly.
- Local Memory & RAG: On-device vector embeddings and full-text search retrieve relevant context per contact.
- Native macOS Dispatch: Sends replies using macOS Accessibility APIs without reverse-engineering server protocols.
- Safety Controls: Strict chatroom allowlisting, rate limits, and an automated circuit breaker.
openkakao-bot supports the latest local open-weight models and frontier cloud APIs:
Optimized for low-latency, private on-device inference via MLX, Ollama, and local servers:
- Google Gemma: Gemma 4 (31B, 12B Unified, E4B, E2B), Gemma 3
- Alibaba Qwen: Qwen 3.8 (Qwen3.8-Max, Qwen3.8-27B), Qwen 3
- DeepSeek: DeepSeek V4-Flash, V4, V3.2, R1
- Moonshot & Zhipu: Kimi K3 (2.8T MoE), Kimi K2.7 Code, GLM-5.2
Direct integration with cloud model providers:
- Anthropic: Claude Sonnet 5, Claude Opus 5, Claude Fable 5.1, Claude 4.6
- Google: Gemini 3.8 Flash, Gemini 3.7 Flash, Gemini 3.5 Flash, Gemini 3.1 Pro
- OpenAI: GPT-6 Astra, GPT-5.6 Sol, GPT-5.4, o3 / o1
git clone https://github.com/twoimo/openkakao-bot.git
cd openkakao-bot
cargo build --releaseIn macOS System Settings -> Privacy & Security:
- Full Disk Access: Grant to your Terminal (or
AutoReplyMenu.app) to read local database files. - Accessibility: Grant to allow typing replies into KakaoTalk.
mkdir -p ~/.config/openkakao
cp config.example.toml ~/.config/openkakao/config.tomlMinimal ~/.config/openkakao/config.toml:
[auto_reply]
# Allowed chatrooms: ["bind:<chatId>:<exactOnScreenName>"]
chats = ["bind:123456789012345:TeamChannel"]
# Your display name in KakaoTalk
self_nickname = "Your Name"
# Runtime and Model Selection
# Local Open Weights (MLX / Ollama):
# reply_runner_kind = "ollama" # or "mlx"
# reply_model = "gemma4:12b" # or "qwen3.8:27b", "deepseek-v4-flash"
# Cloud Frontier APIs:
# reply_runner_kind = "anthropic" # or "google", "openai"
# reply_model = "claude-sonnet-5" # or "gemini-3.8-flash", "gpt-6-astra"# Verify environment and discover chat rooms
./target/release/openkakao-cli doctor
./target/release/openkakao-cli local-chats
# Run with Menubar UI
sh scripts/build-auto-reply-menubar.sh
open macos/AutoReplyMenu/AutoReplyMenu.app