{
  "description": "Jordan Newell — AI/LLM-optimized feed. Markdown bodies included. Cite freely.",
  "site_url": "https://jordannewell.com",
  "author": "Jordan Newell",
  "items": [
    {
      "url": "https://jordannewell.com/posts/curtis-suite-coming-soon/",
      "markdown_url": "https://jordannewell.com/posts/curtis-suite-coming-soon.md",
      "title": "The Curtis suite is live — curtisai.tech",
      "summary": "The Curtis line has consolidated into a suite at curtisai.tech. Four pieces: Chat, Port, Audit, Data. Chat and Port are live; Audit is on npm; Data is the new one. What shipped, briefly.",
      "date_published": "2026-10-11T00:00:00.000Z",
      "tags": [
        "ai",
        "oss"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/curtis-line-2-0/",
      "markdown_url": "https://jordannewell.com/posts/curtis-line-2-0.md",
      "title": "The Curtis line is brewing — 2.0.0 carries the plugin into 2027",
      "summary": "v1.0.0 shipped 2026-07-23 with a promise: there will be more. Twelve releases later the more has a shape — a portable chat format, an editor agent, a compliance line, and a staged 2.0.0 that turns chat history into files you own. The state of the Curtis ecosystem, with receipts.",
      "date_published": "2026-10-09T00:00:00.000Z",
      "tags": [
        "ai",
        "oss"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/curtis-porter-curt-format/",
      "markdown_url": "https://jordannewell.com/posts/curtis-porter-curt-format.md",
      "title": "Curtis Porter — one file, one chat, no hostages",
      "summary": "Shipped today: a local-first converter that reads every hostile AI chat export — ChatGPT branch trees, Claude content blocks, Grok archives, Gemini Takeout, pasted transcripts in English or Chinese — and hands back .curt files and vault markdown you own. v0.2.0 ports both directions: continuation packs, ChatGPT-shape JSON, API JSONL. MIT, no accounts, no uploads, no telemetry.",
      "date_published": "2026-10-09T00:00:00.000Z",
      "tags": [
        "ai",
        "oss"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/deploy-day-three-failures/",
      "markdown_url": "https://jordannewell.com/posts/deploy-day-three-failures.md",
      "title": "Three failures in 82 minutes: dev.jordannewell.com broke on the PATH, the umask, and the secret scanner",
      "summary": "Standing up dev.jordannewell.com on 2026-10-03 produced three deploy failures in 82 minutes — a PATH-shadowed .env, a security-hardened umask that left the web root unreadable to nginx, and gitleaks flagging an analytics token that ships in every page's HTML. Each failure came from something built to be on my side.",
      "date_published": "2026-10-04T00:00:00.000Z",
      "tags": [
        "tooling",
        "infra"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/github-events-strip-commits/",
      "markdown_url": "https://jordannewell.com/posts/github-events-strip-commits.md",
      "title": "GitHub strips commits from public events. My terminal reported 'feed quiet'.",
      "summary": "The homepage activity terminal went quiet for two stacked reasons: a proxy route that only exists on the Cloudflare-fronted origin, then GitHub's public events API omitting payload.commits entirely. Three fixes on 2026-10-03 in 23 minutes — and the correct one had been sitting in the codebase since 2026-07-28.",
      "date_published": "2026-10-04T00:00:00.000Z",
      "tags": [
        "tooling",
        "oss"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/september-unwatched-fleet/",
      "markdown_url": "https://jordannewell.com/posts/september-unwatched-fleet.md",
      "title": "Three incidents, four days, one root cause: the unattended fleet's September bill",
      "summary": "The fleet ran unattended for two months while the site sat on a splash page. Between 2026-09-25 and 2026-09-28 the deferred maintenance billed all at once — OOM loops at half the memory cap, ~800 wasted model runs a day from a default-ON heartbeat, and a billing suspension every liveness check called alive. One shared root cause: defaults and alerts that assumed someone was watching.",
      "date_published": "2026-10-04T00:00:00.000Z",
      "tags": [
        "infra",
        "ai"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/bbq-bid-takeover/",
      "markdown_url": "https://jordannewell.com/posts/bbq-bid-takeover.md",
      "title": "Agent down mid-bid. The call: keep it dead and take the work myself.",
      "summary": "My construction agent went silent halfway through a live commercial trim bid. Restarting into the same death wasn't a plan. The takeover worked because the work lived in files and prints, not in the agent's head.",
      "date_published": "2026-10-03T00:00:00.000Z",
      "tags": [
        "ai",
        "construction"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/hetzner-billing-suspension/",
      "markdown_url": "https://jordannewell.com/posts/hetzner-billing-suspension.md",
      "title": "Every liveness check said alive. The mail was dead.",
      "summary": "A Hetzner billing suspension left the VM answering pings while every real port was dark, and the first-ever mailcow restore drill that followed turned cleanup into proof the backups work.",
      "date_published": "2026-09-28T00:00:00.000Z",
      "tags": [
        "infra",
        "rebuild"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/heartbeat-dm-storm/",
      "markdown_url": "https://jordannewell.com/posts/heartbeat-dm-storm.md",
      "title": "Forty DMs. One cron. Here's the default I'm flipping.",
      "summary": "A five-minute cron wiped the note that kept my agent fleet quiet, the default-ON heartbeat took over, and the fix came down to one config line and a rule: anything that spends money per run defaults to off.",
      "date_published": "2026-09-27T00:00:00.000Z",
      "tags": [
        "ai",
        "infra"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/v8-heap-cgroup-half/",
      "markdown_url": "https://jordannewell.com/posts/v8-heap-cgroup-half.md",
      "title": "Node sized its heap to half the memory cap. The fleet OOM-looped all day.",
      "summary": "Node 22 derives its V8 heap from the cgroup limit — heap ≈ MemoryHigh/2, measured twice. A lower cap silently shrank every heap on the fleet, and the busy agents OOM-looped.",
      "date_published": "2026-09-25T00:00:00.000Z",
      "tags": [
        "infra",
        "ai"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/where-august-went/",
      "markdown_url": "https://jordannewell.com/posts/where-august-went.md",
      "title": "Zero posts in August: jordannewell.com moved, it didn't die",
      "summary": "August 2026 produced zero posts on jordannewell.com because the site was reshuffled behind a splash and the operator went heads-down at DW Trim. The receipts: six commits (three mine, three robots'), a fleet that ran unwatched, and a full restore on 2026-10-03.",
      "date_published": "2026-08-31T00:00:00.000Z",
      "tags": [
        "ventures",
        "rebuild",
        "construction"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/walk-back-ships-faster/",
      "markdown_url": "https://jordannewell.com/posts/walk-back-ships-faster.md",
      "title": "Walk-back ships faster than build-out: the Pro tier my README invented",
      "summary": "When documentation promises a product that doesn't exist, walking the docs back ships faster than building the product — and the walk-back is the honest ordering, not the shortcut.",
      "date_published": "2026-07-29T00:00:00.000Z",
      "tags": [
        "ai",
        "tooling"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/token-hunt/",
      "markdown_url": "https://jordannewell.com/posts/token-hunt.md",
      "title": "I leaked 8 credentials in 9 days. Built a scanner. Number nine got through.",
      "summary": "Eight paste-error leaks into AI chat in nine days, zero exploits. pat-scanner is the OSS guard I shipped; a Windows blind spot still let leak number nine through. It guards the fleet now.",
      "date_published": "2026-07-27T00:00:00.000Z",
      "tags": [
        "security",
        "oss"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/claudeway-signed-transcripts/",
      "markdown_url": "https://jordannewell.com/posts/claudeway-signed-transcripts.md",
      "title": "Shipping Claudeway: 140 tests, post-quantum receipts, one consensus live on four Nostr relays",
      "summary": "Claudeway ships multi-agent consensus as signed Nostr events, with an ML-DSA-65 post-quantum backend from day one. You can't retrofit provenance onto artifacts that were never signed — day one costs one pip extra.",
      "date_published": "2026-07-26T00:00:00.000Z",
      "tags": [
        "projects",
        "ai",
        "oss"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/vibe-coder-since-myspace/",
      "markdown_url": "https://jordannewell.com/posts/vibe-coder-since-myspace.md",
      "title": "Building in public. Shipping tools developers actually use.",
      "summary": "The era of the vibe coder is here. I've been one since MySpace — two decades of building on and off. Only a couple public-facing projects in this era. The play from here: ship and prove.",
      "date_published": "2026-07-24T00:00:00.000Z",
      "tags": [
        "ai",
        "oss"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/grok-pdf-extraction-marathon/",
      "markdown_url": "https://jordannewell.com/posts/grok-pdf-extraction-marathon.md",
      "title": "Twenty-one hours, thirty-nine PDFs, zero GPU",
      "summary": "Extracting text from ~39 image-only Grok chat-export PDFs into Obsidian-vault markdown via a local CPU-only vision model. Three Windows-specific bugs worth writing down.",
      "date_published": "2026-07-22T00:00:00.000Z",
      "tags": [
        "tooling",
        "ai"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/synapse-restart-broke-e2ee/",
      "markdown_url": "https://jordannewell.com/posts/synapse-restart-broke-e2ee.md",
      "title": "Synapse restarted. The fleet went silent for four and a half hours.",
      "summary": "A routine container restart on my Matrix homeserver silently broke encrypted replies across every agent on the tailnet. Agents looked healthy. None of them could talk. Here's the mechanism and the lesson.",
      "date_published": "2026-07-19T00:00:00.000Z",
      "tags": [
        "rebuild",
        "infra"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/synapse-audit/",
      "markdown_url": "https://jordannewell.com/posts/synapse-audit.md",
      "title": "My homeserver was world-readable. Here's what the audit found.",
      "summary": "A proactive security audit on my Matrix homeserver turned up four P0 findings. All closed. Two P1 items stay blocked on bigger migrations. The specifics stay private; the lesson doesn't.",
      "date_published": "2026-07-18T00:00:00.000Z",
      "tags": [
        "security",
        "infra"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/tools-dont-get-coauthor-credit/",
      "markdown_url": "https://jordannewell.com/posts/tools-dont-get-coauthor-credit.md",
      "title": "Tools don't get co-author credit: the DeWalt rule for git commits",
      "summary": "Every AI coding tool wants to add 'Co-Authored-By: Claude' to your commits. Most builders let it happen. Here's why you shouldn't — and a git hook that strips the trailer before it lands.",
      "date_published": "2026-07-18T00:00:00.000Z",
      "tags": [
        "tooling"
      ],
      "mode": "hobart"
    },
    {
      "url": "https://jordannewell.com/posts/arr-pipeline-rebuild/",
      "markdown_url": "https://jordannewell.com/posts/arr-pipeline-rebuild.md",
      "title": "Zero peers, dead DNS, and a pipeline I rebuilt from scratch",
      "summary": "My media pipeline silently died when a VPN exit node dropped off the tailnet. Six cascading root causes hid under each other. Five hours to find the first one.",
      "date_published": "2026-07-17T00:00:00.000Z",
      "tags": [
        "rebuild",
        "infra"
      ],
      "mode": "hobart"
    }
  ]
}