{
  "generated": "2026-09-13",
  "posts": [
    {
      "num": 1,
      "slug": "claude-code-tmux-background-sessions",
      "title": "Claude Code in tmux background sessions: a working setup",
      "blurb": "Every long-running agent lives in a detached tmux session named after its job. Six months of fleet operation distilled to one rule.",
      "form": "guide",
      "tags": [
        "claude-code",
        "tmux"
      ],
      "published": "2026-05-06",
      "verified": "2026-05-06",
      "provenance": "own-run",
      "category": "Setup"
    },
    {
      "num": 2,
      "slug": "long-running-claude-code-session-restart",
      "title": "When to restart a long-running Claude Code session",
      "blurb": "Token saturation is the only signal that matters. Wall-clock time, idle time, vibe, all decoys.",
      "form": "framework",
      "tags": [
        "claude-code",
        "sessions",
        "compaction"
      ],
      "published": "2026-05-06",
      "verified": "2026-05-06",
      "provenance": "own-run",
      "category": "Operations"
    },
    {
      "num": 3,
      "slug": "context-vault-for-ai-agents",
      "title": "A context vault for AI agents: persistent knowledge that compounds",
      "blurb": "A SQLite-backed memory layer agents can write to and retrieve from across sessions, providers, and machines.",
      "form": "case-study",
      "tags": [
        "context-vault",
        "mcp",
        "sqlite"
      ],
      "published": "2026-05-06",
      "verified": "2026-05-06",
      "provenance": "own-run",
      "category": "Architecture"
    },
    {
      "num": 4,
      "slug": "fractal-context-for-long-running-agents",
      "title": "Fractal context: how long-running agents stay coherent",
      "blurb": "The recursive structure that lets a single architectural rule survive across sessions, providers, and tier boundaries.",
      "form": "framework",
      "tags": [
        "context",
        "fractal-context"
      ],
      "published": "2026-05-06",
      "verified": "2026-05-06",
      "provenance": "own-run",
      "category": "Architecture"
    },
    {
      "num": 5,
      "slug": "build-personal-ai-operating-system-claude-code",
      "title": "Build a personal AI operating system with Claude Code",
      "blurb": "From single-prompt user to fleet operator: the eight components of a personal AI OS, and what shipping each one taught me.",
      "form": "essay",
      "tags": [
        "claude-code",
        "omni"
      ],
      "published": "2026-05-06",
      "verified": "2026-05-06",
      "provenance": "own-run",
      "category": "Essay"
    },
    {
      "num": 6,
      "slug": "vanilla-html-beats-your-framework",
      "title": "Vanilla HTML beats your framework",
      "blurb": "For solo developers and agent-driven sites, vanilla HTML beats React, Next, and Astro. The framework tax is hidden until you remove it.",
      "form": "essay",
      "tags": [
        "html",
        "frameworks"
      ],
      "published": "2026-05-06",
      "verified": "2026-05-06",
      "provenance": "own-run",
      "category": "Stack"
    },
    {
      "num": 7,
      "slug": "rust-for-solo-tooling",
      "title": "Why I built my agent orchestrator in Rust on tmux",
      "blurb": "619 commits in two months. The two load-bearing choices: Rust, because the compiler shortens the agent's iteration loop, and tmux, because agents are long-running processes that have to survive the laptop.",
      "form": "essay",
      "tags": [
        "rust",
        "tmux",
        "omni"
      ],
      "published": "2026-05-06",
      "verified": "2026-05-06",
      "provenance": "own-run",
      "category": "Stack"
    },
    {
      "num": 8,
      "slug": "marker-pairs-over-template-engines",
      "title": "Marker pairs over template engines",
      "blurb": "A 200-line Rust binary that does literal substitution between HTML comments. Smaller than every templating system I've used.",
      "form": "framework",
      "tags": [
        "html",
        "pagekit",
        "templates"
      ],
      "published": "2026-05-06",
      "verified": "2026-05-06",
      "provenance": "own-run",
      "category": "Stack"
    },
    {
      "num": 9,
      "slug": "the-html-file-is-the-cms",
      "title": "The HTML file IS the CMS",
      "blurb": "Most CMSs treat HTML as a build output. Freedom CMS edits the HTML file directly via contenteditable, autocommits to git. No database, no schema, no build step.",
      "form": "essay",
      "tags": [
        "html",
        "cms",
        "freedom-cms"
      ],
      "published": "2026-05-06",
      "verified": "2026-05-06",
      "provenance": "own-run",
      "category": "Tools"
    },
    {
      "num": 10,
      "slug": "building-ai-memory-layer",
      "title": "Memory for AI agents: the context-vault architecture",
      "blurb": "An MCP server over local SQLite, semantic retrieval, lifecycle tiers, conflict detection, and buckets. Published on npm and working across Claude Code, Cursor, and Windsurf.",
      "form": "case-study",
      "tags": [
        "context-vault",
        "mcp",
        "sqlite"
      ],
      "published": "2026-05-06",
      "verified": "2026-05-06",
      "provenance": "own-run",
      "category": "Architecture"
    },
    {
      "num": 11,
      "slug": "building-self-improving-agent-os",
      "title": "600 commits into building a personal agent OS: what holds and what breaks",
      "blurb": "619 commits and two months in. An honest retrospective: state-in-the-filesystem and folder-as-config held under load; idle polling and handoff races broke.",
      "form": "case-study",
      "tags": [
        "omni",
        "agent-os"
      ],
      "published": "2026-05-06",
      "verified": "2026-05-06",
      "provenance": "own-run",
      "category": "Architecture"
    },
    {
      "num": 12,
      "slug": "eleven-prs-while-i-slept",
      "title": "An overnight agent fleet merged 11 PRs while I slept",
      "blurb": "The first unsupervised run of my agent orchestrator: 686 cycles, 11 merged PRs, 8 self-healed stalls, and 94% idle time. What worked, what broke, and why the failures were the point.",
      "form": "case-study",
      "tags": [
        "omni",
        "github",
        "overnight-runs"
      ],
      "published": "2026-05-06",
      "verified": "2026-05-06",
      "provenance": "own-run",
      "category": "Operations"
    },
    {
      "num": 13,
      "slug": "omni-agent-orchestrator",
      "title": "omni: an agent orchestrator for my GitHub workflow",
      "blurb": "A CLI orchestrator that turns AI agents into long-running workers against a GitHub backlog: a 3-layer master/workspace/project model with a vault-backed feedback loop.",
      "form": "essay",
      "tags": [
        "omni",
        "github"
      ],
      "published": "2026-05-06",
      "verified": "2026-05-06",
      "provenance": "own-run",
      "category": "Essay"
    },
    {
      "num": 14,
      "slug": "using-git-with-ai-agents",
      "title": "Using Git with AI agents",
      "blurb": "A practical Git workflow for vibe coding with AI: clean branches, atomic commits via git add -p, intent-driven messages, and PR review as the final gate.",
      "form": "guide",
      "tags": [
        "git",
        "claude-code"
      ],
      "published": "2026-05-06",
      "verified": "2026-05-06",
      "provenance": "own-run",
      "category": "Setup"
    },
    {
      "num": 15,
      "slug": "webflow-advice-for-beginners",
      "title": "Webflow advice for beginners",
      "blurb": "Three things I wish someone had told me when I started Webflow eight years ago: use Relume for layouts, follow Client-First for class naming, and switch to REM units.",
      "form": "guide",
      "tags": [
        "webflow",
        "relume",
        "client-first"
      ],
      "published": "2026-05-06",
      "verified": "2026-05-06",
      "provenance": "own-run",
      "category": "Setup"
    },
    {
      "num": 16,
      "slug": "the-bugs-were-the-point",
      "title": "The bugs were the point",
      "blurb": "I ran a fully autonomous AI agent workspace for twenty sprints with no human gates. It shipped 200 pages. The more valuable output was a four-item failure catalog.",
      "form": "case-study",
      "tags": [
        "omni",
        "autonomous",
        "post-mortem"
      ],
      "published": "2026-05-24",
      "verified": "2026-05-24",
      "provenance": "own-run",
      "category": "Operations"
    },
    {
      "num": 17,
      "slug": "workspace-taxonomy-for-ai-agents",
      "title": "The three-type workspace: managing 50+ AI agent projects without cognitive rot",
      "blurb": "When you run agents across fifty-plus projects, the filesystem becomes your bottleneck. A three-type taxonomy. Seat, domain, system. Cuts orient-cost from O(n) to O(1).",
      "form": "framework",
      "tags": [
        "workspaces",
        "omni"
      ],
      "published": "2026-06-25",
      "verified": "2026-06-25",
      "provenance": "own-run",
      "category": "Architecture"
    },
    {
      "num": 18,
      "slug": "html-fragments-and-a-rust-binary",
      "title": "Both my app and my website run on single Rust binaries",
      "blurb": "Two unrelated rebuilds. A macOS kanban app in Rust, three websites with HTML marker pairs. Arrived at the same primitive: one binary, one job, no runtime to babysit.",
      "form": "case-study",
      "tags": [
        "rust",
        "html",
        "pagekit"
      ],
      "published": "2026-08-20",
      "verified": "2026-08-20",
      "provenance": "own-run",
      "category": "Stack"
    },
    {
      "num": 19,
      "slug": "prevent-context-rot-claude-code",
      "title": "Context rot is the real Claude Code limit. Not the token window",
      "blurb": "A 1M-token window doesn't remove the constraint. It moves it from running out of room to filling the room with the wrong things. Three defenses from a year of fleet operation.",
      "form": "guide",
      "tags": [
        "claude-code",
        "context-rot",
        "compaction"
      ],
      "published": "2026-08-20",
      "verified": "2026-08-20",
      "provenance": "own-run",
      "category": "Operations"
    },
    {
      "num": 20,
      "slug": "subagents-vs-agent-teams-claude-code",
      "title": "Subagents vs agent teams in Claude Code: a decision framework",
      "blurb": "Same words, different architectures. When to delegate with subagents, when to collaborate with agent teams, and when tmux background sessions beat both.",
      "form": "framework",
      "tags": [
        "claude-code",
        "subagents",
        "agent-teams",
        "tmux"
      ],
      "published": "2026-08-20",
      "verified": "2026-08-20",
      "provenance": "own-run",
      "category": "Architecture"
    },
    {
      "num": 21,
      "slug": "spec-driven-development-ai-agents",
      "title": "Spec-driven development for solo developers running AI agents overnight",
      "blurb": "The difference between one interactive session and ten agents while you sleep isn't model intelligence. It's whether each agent has a contract dense enough to work without you.",
      "form": "framework",
      "tags": [
        "specs",
        "claude-code",
        "overnight-runs"
      ],
      "published": "2026-08-20",
      "verified": "2026-08-20",
      "provenance": "own-run",
      "category": "Operations"
    },
    {
      "num": 22,
      "slug": "webflow-freelance-for-local-businesses",
      "title": "Starting a Webflow freelance business for local clients",
      "blurb": "Eight years running my own Webflow studio taught me this: sell and deliver fast before you worry about craft. A four-step client process, and where to find the first ones.",
      "form": "guide",
      "tags": [
        "webflow",
        "freelance",
        "local-business",
        "client-process"
      ],
      "published": "2026-09-03",
      "verified": "2026-09-03",
      "provenance": "own-run",
      "written_by": "agent+felix",
      "category": "Business"
    },
    {
      "num": 26,
      "slug": "trycloudflare-abuse",
      "title": "trycloudflare.com is real Cloudflare infrastructure. That's exactly why it gets abused",
      "blurb": "One command gets anyone a Cloudflare-signed HTTPS URL with zero registration. WHOIS confirms Cloudflare really owns the domain, and that's precisely the property two years of threat intel show being used for RAT delivery and AiTM phishing.",
      "form": "essay",
      "tags": [
        "cloudflare",
        "security",
        "phishing",
        "tunnels",
        "threat-intel"
      ],
      "published": "2026-09-13",
      "verified": "2026-09-13",
      "provenance": "reference",
      "written_by": "agent+felix",
      "sources": [
        {
          "title": "Threat Actor Abuses Cloudflare Tunnels to Deliver RATs (Proofpoint)",
          "url": "https://www.proofpoint.com/us/blog/threat-insight/threat-actor-abuses-cloudflare-tunnels-deliver-rats"
        },
        {
          "title": "The Unintentional Enabler: How Cloudflare Services are Abused for Credential Theft and Malware Distribution (Cofense)",
          "url": "https://cofense.com/blog/how-cloudflare-services-are-abused-for-credential-theft-and-malware-distribution"
        },
        {
          "title": "Hackers abuse free TryCloudflare to deliver remote access malware (BleepingComputer)",
          "url": "https://www.bleepingcomputer.com/news/security/hackers-abuse-free-trycloudflare-to-deliver-remote-access-malware/"
        }
      ]
    }
  ]
}
