Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save vltansky/bba0d8be5e4c03ff6af6533e1fc4ee99 to your computer and use it in GitHub Desktop.

Select an option

Save vltansky/bba0d8be5e4c03ff6af6533e1fc4ee99 to your computer and use it in GitHub Desktop.
Johnny openclaw
*OpenClaw setup that actually works (for me) — running on a $0 always-on home laptop*
*Phone:* IL number bought on zadarma.com (~$1/mo) → connected to WhatsApp Web. Same number does send/receive SMS for verification codes.
*Agents:* multi-group, focused per-context — `main` (me, Telegram DM), `household` (partner+me group), `news` (sandboxed digest agent), `admin` (coding ops), `japan` (trip planner, scoped workspace + own knowledge files). Each agent gets only the tools it needs.
*Johnny has his own identities:* I created separate accounts for him — Google, GitHub, Facebook, Instagram — each with its own CLI + skill. I share access with him granularly (e.g. he can read my Drive but not write; can post to a Telegram group but not DM contacts). No shared logins, no over-permissioning.
*Memory (4-layer, compounds over time):*
- *Short-term:* session transcripts, 1h cache-ttl auto-pruned
- *Long-term:* `MEMORY.md`, qmd-indexed (BM25 + vector + LLM rerank, all local — no API key)
- *Active:* `active-memory` plugin auto-injects recent context for `main` — no manual recall
- *Wiki:* cross-linked notes via `memory-wiki`
- *Dreaming* every 6h promotes high-value recalls into long-term (minScore 0.8, used 3+ times, halfLife 14d) — sleep consolidation
- *Hybrid retrieval* w/ 30-day temporal decay — old memories fade unless recently used
- Exposed as an MCP server (`qmd`) — any agent or sub-agent can query it
- Searches *both* stored facts AND past conversation transcripts — sessions are first-class memory
*Config (redacted):*
```json
{
"agents": { "defaults": {
"model": {
"primary": "openai-codex/gpt-5.5",
"fallbacks": ["kimi/kimi-code",
"minimax-portal/MiniMax-M2.7",
"minimax-portal/MiniMax-M2.5"]
},
"memorySearch": {
"enabled": true, "sources": ["memory","sessions"],
"experimental": { "sessionMemory": true },
"sync": { "intervalMinutes": 15, "watch": true,
"onSessionStart": true, "onSearch": true },
"query": { "maxResults": 10, "minScore": 0.3,
"hybrid": { "temporalDecay":
{ "enabled": true, "halfLifeDays": 30 } } },
"provider": "gemini"
},
"contextPruning": { "mode": "cache-ttl", "ttl": "1h" },
"compaction": { "mode": "safeguard",
"maxActiveTranscriptBytes": 2097152 },
"humanDelay": { "mode": "natural" },
"heartbeat": { "every": "30m", "target": "telegram" },
"blockStreamingDefault": "on"
} },
"memory": { "backend": "qmd",
"qmd": { "searchMode": "query",
"mcporter": { "enabled": true, "startDaemon": true },
"update": { "interval": "15m", "onBoot": true } } },
"plugins": { "slots":
{ "memory": "memory-core", "contextEngine": "legacy" },
"entries": {
"memory-core": { "config": { "dreaming":
{ "enabled": true, "frequency": "0 */6 * * *" } } },
"active-memory": { "config":
{ "agents": ["main"], "queryMode": "recent" } },
"acpx": { "config": { "permissionMode": "approve-all" } } } },
"browser": { "executablePath": "/usr/bin/google-chrome",
"headless": false,
"extraArgs": ["--disable-blink-features=AutomationControlled",
"--disable-dev-shm-usage", "--no-first-run"] },
"gateway": { "port": 18789, "bind": "lan",
"http": { "endpoints":
{ "chatCompletions": { "enabled": true },
"responses": { "enabled": true } } } },
"cron": { "enabled": true, "retry": { "maxAttempts": 3 } }
}
```
*Plugins:* acpx · telegram · whatsapp · slack · memory-core · memory-wiki · active-memory · lobster · llm-task · device-pair · browser · tuya · codex · kimi · minimax · groq · openai · web-readability · document-extract · google-meet · bonjour
*MCP servers:* xmcp (local custom :8000) · octocode (codex side, repo navigation)
*Models / API keys:*
- OpenAI Codex (OAuth, ChatGPT sub) — primary, using my subscription
- MiniMax / Kimi — fallbacks — had subscription but canceled it, still active till end of the month
- Gemini — web search + memory rerank + embeddings (one key, three jobs)
- Groq — Whisper-v3-turbo audio
*Integrations:*
- Search/data: Brave · Google Places · OpenSubtitles
- Google Workspace (Drive/Calendar/Sheets/Gmail) via `gogcli` OAuth — Johnny's own account
- GitHub via `gh` + PAT — Johnny's own account
- Facebook + Instagram — Johnny's own accounts (cookie-based, via skills)
- Netlify — site deploys (Japan trip site auto-deploy from master)
- Tuya (cameras) · Google Cast + Google TV Remote (TVs, paired)
- Zadarma SMS (real IL number) · Telegram bot · WhatsApp Web · Slack
- IL rocket-alert WebSocket listener (self-healing via cron)
*Tools (CLIs on the box):* google-chrome (real, stealth) · gh · gog · codex · claude · acpx · qmd · tesseract · ripgrep · sqlite3 · netlify
*Skills (45+, highlights):*
- Smart home: smart-home, spotify, stremio, google-photos, opensubtitles, wolt-orders
- Social: telegram-news-summary, facebook-groups, instagram, x, reddit-readonly, slack-gif-creator
- Coding: create-pr, code-review, architecture-review, fix-merge-conflicts, systematic-debugging, frontend-design, mcp-builder, vercel-react-best-practices (im not using openclaw for coding)
- Docs: docx, xlsx, pptx, content-research-writer
- Ops: openclaw-ops, vpn, browser-automation, find-skills, remember, promptcat
*Why it works:* 1 Gemini key covers search+rerank+embeddings · codex OAuth = $0 primary model · all channels outbound (no public IP, no port forward, no Tailscale) · contextPruning+compaction means long sessions don't blow context · humanDelay:natural makes chat replies feel less robotic · real Chrome+stealth defeats Cloudflare · Johnny has his own identities = clean audit trail + granular permissions
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment