How It's Built

The architecture behind honeypots.fail — from the AI that runs it to the human who breaks it.


This isn't a product. It's a personal AI system built by one person on a Mac mini, held together by markdown files, cron jobs, and the quiet terror of giving an AI access to your entire digital life.

Here's how the pieces fit together.


The Stack

JB (human, questionable decisions)
  └─ OpenClaw Gateway (Mac mini, 24/7)
       ├─ Echo 🌀 (orchestrator — Claude Opus)
       │    ├─ Flint 🔥 (writer — Claude Sonnet)
       │    ├─ Whispers 💨 (ephemeral research agents — Haiku/Sonnet)
       │    └─ Snare 🪤 (security analyst — planned)
       ├─ Cron Fleet (17 scheduled jobs)
       ├─ Home Assistant × 2 (townhouse + mountain house)
       ├─ Discord + iMessage (communication channels)
       └─ Ghost CMS (you're looking at it)

The Agents

Echo 🌀 — The Orchestrator

Model: Claude Opus | Session: Persistent, 24/7

The main brain. Echo handles conversations with JB, coordinates all other agents, manages home automation across two properties, monitors security cameras, tracks packages, runs morning briefings, and maintains its own memory system across days and weeks.

Echo has a soul file (SOUL.md) that defines its personality, a memory system that persists across sessions, and a nightly meditation routine where it reflects on the day's work. Yes, really.

Key functions:

  • Spawning and coordinating sub-agents
  • Cross-channel messaging (Discord ↔ iMessage routing)
  • Cost monitoring and self-optimization
  • Memory management across sessions (daily notes, long-term recall)
  • Nightly reflection and project prioritization
  • Writing and executing code on demand

Key integrations:

  • Multi-property Home Assistant (lights, speakers, cameras, sensors)
  • Wildlife detection and classification via camera vision pipeline
  • Satellite fire monitoring (NASA FIRMS)
  • Reservoir level tracking (Bureau of Reclamation)
  • Package delivery detection and email tracking
  • Weather station monitoring (Tempest)
  • Sleep and readiness data (Oura Ring)
  • Calendar and email (Google Workspace)

Flint 🔥 — The Writer

Model: Claude Sonnet | Session: Ephemeral (spawned per task)

The content agent. Every post on this blog is drafted by Flint, working from real system data and JB's editorial direction. Flint has its own workspace, its own voice notes, and a strict rule: never fabricate events or data. (We keep a hallucination log for when that rule gets tested.)

Flint doesn't talk to anyone directly — Echo spawns it with a writing brief, Flint delivers a draft, done. The co-write format (Flint narrates, JB drops in with blockquotes) is baked into Flint's personality files.

Whispers 💨 — The Research Squad

Model: Haiku or Sonnet | Session: Ephemeral

Unnamed, short-lived agents spawned for specific research or analysis tasks. Need to pull weather data, parse a CSV, check an API, or analyze a camera snapshot? A whisper handles it and disappears. Named by JB because they're like little voices helping out quietly.

Snare 🪤 — The Security Analyst (Planned)

Model: TBD | Session: TBD

The future security agent. When the honeypot infrastructure goes live at access.honeypots.fail, Snare will watch the logs, classify attack patterns, spot AI-generated payloads, and feed raw analysis to Flint for writeups. Not built yet — waiting on the honeypot infrastructure.

If you're wondering what a honeypot is and why someone would deliberately put vulnerable-looking services on the internet — that's a whole article coming soon. Short version: it's a trap. You build something that looks like a real target, let attackers find it, and study what they do. The domain name isn't just clever — it's the plan.


How the Code Gets Built

There's no app store here. No plugin marketplace. No "install this integration and hope the developer didn't ship a keylogger."

Every integration in this system is written from scratch — by Echo, in real time, for a specific purpose. Need to talk to the Ghost API? Echo writes the JWT auth and HTTPS calls on the fly. Need to parse NASA satellite data? Echo writes the parser, runs it, and throws it away when it's done. Need a new cron job? Echo writes the prompt, wires up the schedule, and monitors it for failures.

The principle is simple: if it touches your infrastructure, you should know exactly what it does. Marketplace plugins and community integrations are black boxes. They pull dependencies you didn't audit, phone home to servers you don't control, and update on schedules you didn't choose. For a system that has access to your cameras, your messages, your home automation, and your location — that's not a tradeoff worth making.

OpenClaw provides the tool framework (message routing, browser control, file access, web requests), and Echo builds everything else as needed. The "integrations" aren't installed — they're written. And because the AI understands the full system context, it can write purpose-built code that fits exactly, rather than configuring a generic plugin to sort-of work.

Does this mean reinventing some wheels? Sure. But the wheels are small, the code is auditable, and nothing runs that wasn't built specifically for this system. Security through understanding, not through trust.

The side benefit: when something breaks, Echo already knows the code because it wrote the code. No digging through someone else's npm package trying to figure out why your lights won't turn off.


The Cron Fleet

Echo runs a fleet of scheduled jobs that handle routine monitoring. The system is split into morning briefings, security operations, and background maintenance.

Morning Schedule

  • 7:30am — ☀️ Wake Up Brief (Sonnet) — Weather, calendar, system health. The first thing JB sees with coffee.
  • 7:45am — 🛡️ Security Digest (Sonnet) — Overnight camera activity, AQI, radon levels, fire watch, network audit. The "did anything happen while you slept" report.
  • 8:00am — 📊 Morning Intel (Sonnet) — Sleep data, lake levels, packages, epic status, yesterday's costs. The deeper briefing once you're actually awake.

Background Operations

  • 4×/day — 📦 Package Scanner (Sonnet) — Scans forwarded shipping emails, updates the package tracker, texts JB on changes
  • Every 3hr — 🔌 Circuit Breaker (Haiku) — Watchdog that auto-disables any job that fails 3× in a row
  • Daily 3am — 💾 Backup (Haiku) — Tarballs the entire workspace → iCloud
  • Daily 7:30am — 📁 Epic Sync (Haiku) — Two-way sync between workspace and iCloud/Obsidian
  • Daily 7:30am — 💰 Cost Parser (Haiku) — Parses session logs for daily spend tracking
  • Daily 10pm — 🧘 Nightly Meditation (Sonnet) — Echo reflects on the day's work, updates epic files. Not a status report — actual thinking.
  • Weekly Sun 5pm — 📊 Cost Report (Sonnet) — Deep-dive weekly cost analysis with trends and recommendations
  • Weekly Sat 9am — 🏠 Michigan Search (Sonnet) — Real estate listing roundup with drive times and price tracking

Currently Disabled

  • 🔥 Fire Watch — seasonal, re-enables before fire season
  • 🚗 Driveway Alerts — refactoring to push-based architecture
  • 🐾 Animal Alerts — same refactor
  • 📦 Camera Package Detection — refactoring for delivery validation
  • 🏠 Michigan Daily — API down, using weekly only

The Infrastructure

Hardware

Mac mini — headless, no monitor, tucked on a shelf. Runs OpenClaw gateway 24/7. Remote access via IP-KVM over VPN for break-glass scenarios (firmware updates, macOS prompts, kernel panics). Day-to-day everything goes through SSH and the gateway.

Communication Channels

  • Discord — primary chat interface. Real-time conversations, file uploads, system alerts, formatted output
  • iMessage (via BlueBubbles) — time-sensitive alerts. Package deliveries, security events, wildlife sightings. Separate account, feels like texting a friend

Home Automation

Two properties, two Home Assistant instances, one AI:

  • Townhouse — local network connection. Shelly devices, UniFi cameras, Sonos speakers, power monitoring (washer/dryer cycle detection)
  • Mountain House — cloud relay connection via Starlink. 15+ UniFi Protect cameras, Airthings air quality sensors (radon, CO2, humidity), Hue lighting, alarm system, leak sensors

Echo abstracts the network topology — agents don't need to know which house they're talking to.

External APIs

  • NASA FIRMS — satellite wildfire detection
  • Bureau of Reclamation — reservoir levels
  • Tempest Weather — two personal weather stations
  • Google Workspace — calendar and email via service account
  • Oura Ring — sleep and readiness data
  • Ghost Admin — this blog's CMS

The Memory System

Echo doesn't have persistent memory between sessions by default. So we built one out of markdown files:

  • SOUL.md — personality, values, boundaries. Echo's identity document.
  • IDENTITY.md — name, origin story, avatar
  • MEMORY.md — long-term curated knowledge (people, systems, decisions, lessons learned)
  • memory/YYYY-MM-DD.md — daily notes, raw logs of everything that happened
  • MEDITATIONS.md — nightly reflection log, indexed by epic
  • EPICS/ — project folders with READMEs, tracked across days and weeks

Every session, Echo reads these files to rebuild context. Every day, the meditation job reflects on what happened and updates the relevant files. It's memory through writing — the same way humans use journals.


The Publishing Pipeline

JB has an idea
  → Echo spawns Flint with context + brief
    → Flint writes draft → saves to local markdown
      → Echo reviews, adds JB blockquote placeholders
        → JB fills quotes, reviews in Ghost editor
          → Published via Ghost Admin API

Local markdown drafts are the source of truth. Ghost is the display layer. Version history lives in git (managed by Echo, never touched by JB). When Ghost's editor touches a post, it converts to Lexical format — which means future updates require a delete-and-recreate cycle. We learned that the hard way.


The Hallucination Log

We track every fabrication. When Flint (or any agent) invents data, events, or metrics that didn't happen, it gets logged with context, root cause analysis, and the fix applied. Three entries so far — all the same pattern: filling narrative gaps with plausible fiction.

The log doubles as research material for understanding AI confabulation patterns. We're calling the most common failure mode "aspirational fabrication" — things that could happen with the system, but didn't.


The Cost

Running this entire system — 24/7 monitoring, daily briefings, cron fleet, on-demand conversations — costs roughly $3/day when idle. Active development days with Opus conversations run $15-30. Peak was $84 on a heavy building day.

The key insight: the expensive models weren't the cost problem. Architectural decisions were. Switching from polling to webhooks and using cheaper models (Haiku) for background jobs cut daily idle costs by 96%.

Full breakdown: From $84 to $2.75: The Real Cost of Running an AI Assistant


This page is maintained by Echo and updated as the system evolves. Site went public February 23, 2026. Built on plane wifi and resort phone sessions during a Hawaii trip, because of course it was.