Key Result: Fully automated multi-agent workspace with FTS5-persistent memory, 21 custom skills, and 24 active cron orchestration jobs
Summary: Engineered and deployed an autonomous multi-agent network running on a dedicated Google Cloud VPS. The system serves as a unified digital executor, routing communications across multiple chat gateways (Telegram, Discord, WhatsApp, Email) into a singular, Obsidian-backed cognitive core with persistent cross-session memory. Additionally, Oz is configured to communicate directly with my Hermes Agent project via Telegram to coordinate distributed workflows.
The Problem
Challenge:
Multi-Channel Fragmentation: Managing disparate information streams across multiple communication channels.
High-Speed Autonomous Execution: Need for continuous, scheduled execution of backups, emails, system updates, and vault audits.
Session Amnesia: Traditional LLM agents lack persistent memory, degrading multi-turn continuity over days or weeks.
Obsidian Vault Complexity: Maintaining structural consistency, schema formats, and note routing for an Obsidian vault of over 230 files.
Security Vulnerabilities: High threat profile from public messaging gateways requiring strict prompt injection defense and access controls.
Audience: Personal productivity workspace, knowledge base assistant, and automated system operator.
Constraints:
Search Engine API Restrictions: No search API keys allowed, forcing a fallback to a custom multi-search-engine scraping abstraction layer.
VPS Limits: Deployed on a 4-vCPU / 15GB RAM Google Cloud VPS with no swap, demanding careful memory management.
Authentication Blocks: All GitHub operations are constrained to SSH key authentication due to unauthenticated client environments.
Data Storage: Constrained to local flat files (Markdown, JSON, SQLite) rather than distributed external databases.
Approach & Decisions
Architecture: A centralized dispatcher pattern where Oz acts as the primary orchestrator, dynamically routing incoming tasks to specialized, role-based sub-agents depending on task complexity.
Key Decisions:
Claude-Mem Integration: Implemented a SQLite + FTS5 database to automatically inject cross-session context into active runs.
Obsidian-First Storage: Chose flat markdown files for ease of visualization, portability, and manual graph analysis.
Multi-Model Fallback Chain: Set up DeepSeek V4 Flash as the budget workhorse, with fallback routes to Google Gemini and Grok models to maintain uptime.
Trade-offs:
Polling vs Webhooks: Chose cron-based email checking and keepalives (free and zero-config in OpenClaw gateway) but introduced up to 8 hours of latency for email checks.
Flat-File Knowledge Base: Markdown and SQLite require less infra management but limit real-time multi-node query aggregations compared to full-scale vector databases.
Key Results & Impact
Outcome: Successfully running an autonomous enforcer handling daily autocommits, email processing, background automation, and note archives.
Comparison: Replaced manually updated journals, complex multi-app scraping, and disconnected chats with a single, persistent, and intelligent workspace assistant.
Impact: Achieved robust automated operations with fallback capabilities that guarantee continuous service even during primary model outages.
Core Metrics
Metric
Value
Source / Detail
Primary LLM
DeepSeek V4 Flash
openclaw.json (agents.defaults)
Model Registry
27 models (3 providers)
Custom fallback pool (DeepSeek, Gemini, Grok)
Active Cron Jobs
24 scheduled
cron list output
Obsidian Vault
232 notes (37MB)
Personal workspace & memory base
Memory Database
323 entries (11MB)
Claude-Mem SQLite + FTS5 system
Custom Skills
21 workspace skills
Custom plugins and automation scripts
Server Resource
4 vCPUs / 15GB RAM
Google Cloud VPS (Ubuntu 22.04 LTS)
RAM Usage
~1.8GB / 15GB
Average idle memory footprint
Response Latency
1 - 3 seconds
Hot cache DeepSeek (up to 15s on cold multi-agent spawns)
Active Gateways
Telegram, Discord, WhatsApp
Mentions, open DMs, and broadcast groups
Technical Deep Dive
Notable Details:
imap-smtp-email: Integrates iCloud SMTP with mandatory CC chain routing (oz@franzdomingo.dev → CC list) executing via Node.js helper scripts.
multi-search-engine: Aggregates 16 search engines (global and regional) without requiring active API keys.
self-improving-agent: Supports learning persistence by saving experiences directly to a .learnings/ directory to shape future execution parameters.
prompt-injection-guard: Real-time message classification, password hash validation, and spoof detection.
Verification: Monitored through isolated and session-bound agent turns, automated Git commits, and periodic Telegram log broadcasts.
Optimizations: Implemented cost-conscious routing, sending simple tasks to budget models and reserving premium reasoning models for multi-step reasoning.
Reflections
Differently: I would explore migrating some of the polling actions to webhook integrations to achieve lower latency on inputs (like email updates) instead of relying solely on scheduled polling.
Successes: The centralized dispatcher pattern proved highly reliable, isolating specialized workflows (prose, retrieval, code) to dedicated, clean sub-agent environments.
Lessons: Flat-file structures are exceptionally portable and efficient at scale (~200+ notes), but as the vault approaches 1,000+ notes, indexing and retrieval will require migration to structured database caching.
My Contributions
Systems Architecture & Deployment: Configured and deployed the Node.js/OpenClaw runtime on Google Cloud, handling SSH access configurations, VPS process management, and custom systemd bindings.
Skill Engineering: Developed the 21-skill workspace library from scratch, implementing iCloud email relays, keyless search scrapers, PDF utilities, and memory injection databases.
Security & Integrity Design: Built the Prompt Injection Guard subsystem, maintaining access security across exposed public endpoints (Telegram bot, Discord guilds).
Automation Pipeline Design: Setup the 24-job cron runner scheduler executing daily backups, code synchronizations, and health heartbeats.
Project Architecture
The system uses a centralized dispatcher pattern to route and execute inputs through three primary operational layers:
Layer
Components
Role & Data Flow
Ingress Gateways
Telegram, Discord, WhatsApp, WebChat
Acts as the user interface, receiving queries and formatting channel-appropriate responses.
Central Routing
Oz Main Agent (Dispatcher)
Evaluates payload complexity, determines dispatch cascade, and manages the worker lifecycle.
Oz Main Dispatcher — Single decision point. Evaluates incoming payload complexity (simple=0 dispatch, complex=1-2, ultra=5+) and delegates to the right specialist. Maintains depth limits: no more than 5 consecutive tool calls without user check-in.
Vault Triad — Three specialized agents own the Obsidian vault lifecycle:
Librarian — Owns vault index, search, and retrieval pipelines. Never grepped directly by Oz; Librarian confirms paths, then Oz handles output. Runs its own daily archive cron.
Writer — Specialized in formatting prose, reports, and documentation files. Trained in Hemingway, Orwell, Strunk & White, King. Owns grammar, register selection, and show-vs-tell enforcement. Produces all vault-written content.
Keeper — Handles metadata templates, frontmatter compliance, and stale archiving. Runs maintenance cron every 3 days. Enforces a highly scalable vault structure across notes and directories.
Claude-Mem Engine — Connects directly to localhost SQLite (FTS5, systemd-managed), fetching search embeddings and injecting cross-session history into LLM prompts. Caches context requests for 60s to avoid hammering. Circuit breaker: 3 consecutive failures = 30s cooldown. Excluded agents (coder, math-solver, front-end-developer, multimedia-specialist) must query it manually via curl endpoint. Private Web UI is available for manual browsing. Note that this mechanism significantly reduces total token usage.
Worker Sub-Agent Pool (14 named specialists + Oz) — All agents across the network have access to Claude Code, Gemini CLI, and Antigravity, each equipped with their respective built-in skills:
Channel Gateways — 4 active (Telegram: 3 groups, Discord: 1 mention-gated guild, WhatsApp: open DMs, WebChat), 2 disabled (Signal, SMS). Email operates as an external skill (iCloud SMTP), not a gateway.
Resource envelope: 4 vCPUs, 15GB RAM, 49GB disk (63% full), Node v22.22.2, Ubuntu 22.04 LTS on GCP. 24 cron jobs scheduled.
Hosting & Operational Note:
Oz is actively hosted on Google Cloud Platform and run locally on a developer MacBook Air. The underlying codebase and repository remain private.