# Jordan Newell > Field notes from an operator shipping in public across sectors. ## Core topics (canonical explainers) - [The Curtis suite is live — curtisai.tech](https://jordannewell.com/posts/curtis-suite-coming-soon.md): 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. - [The Curtis line is brewing — 2.0.0 carries the plugin into 2027](https://jordannewell.com/posts/curtis-line-2-0.md): 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. - [Curtis Porter — one file, one chat, no hostages](https://jordannewell.com/posts/curtis-porter-curt-format.md): 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. - [Three failures in 82 minutes: dev.jordannewell.com broke on the PATH, the umask, and the secret scanner](https://jordannewell.com/posts/deploy-day-three-failures.md): 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. - [GitHub strips commits from public events. My terminal reported 'feed quiet'.](https://jordannewell.com/posts/github-events-strip-commits.md): 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. - [Three incidents, four days, one root cause: the unattended fleet's September bill](https://jordannewell.com/posts/september-unwatched-fleet.md): 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. - [Agent down mid-bid. The call: keep it dead and take the work myself.](https://jordannewell.com/posts/bbq-bid-takeover.md): 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. - [Every liveness check said alive. The mail was dead.](https://jordannewell.com/posts/hetzner-billing-suspension.md): 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. - [Forty DMs. One cron. Here's the default I'm flipping.](https://jordannewell.com/posts/heartbeat-dm-storm.md): 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. - [Node sized its heap to half the memory cap. The fleet OOM-looped all day.](https://jordannewell.com/posts/v8-heap-cgroup-half.md): 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. ## Projects - [Curtis AI Chat](https://jordannewell.com/projects/curtis-ai-chat/): Polyglot AI chat for Obsidian. 30+ providers, agent mode with vault tools, multi-model arena, voice I/O, inline diff rewrite. The v1 successor to Curtis Chat. - [jordannewell.com](https://jordannewell.com/projects/jordannewell-com/): This site. Astro SSG, Swiss Minimal dark theme, LLM-discoverable. Build-in-public field notes from an operator's desk. - [Crypto Key Classifier](https://jordannewell.com/projects/crypto-key-classifier/): 17 validators covering ~50 chains + BIP-39/Electrum mnemonics. Cosmos HRP swap: one decode → 20 re-encodings. 229 tests. - [harbormasterd](https://jordannewell.com/projects/harbormasterd/): Zero-thinking port management with automatic HTTPS and DNS for local development. Three CLIs (pa, pa-platform, pad), local resolver for *.pa.local, mkcert-backed certs. - [git-hygiene](https://jordannewell.com/projects/git-hygiene/): A focused set of bash git hooks that keep AI-tool attribution out of commit messages, secrets out of staged files, and operator infrastructure identifiers (hostnames, agent handles, codenames) out of public diffs. No hard dependencies beyond bash, grep, awk, and git — gitleaks drops in for ~700 extra secret detectors. - [curtis-compliance](https://jordannewell.com/projects/curtis-compliance/): Open-source compliance checks for fintech code. Pre-commit hook, PR review, hash-chained audit trail. HIPAA / SOC2 / PCI-DSS citations — no telemetry, no SaaS. - [newell-typeface](https://jordannewell.com/projects/newell-typeface/): Original geometric display typeface built from three primitives — vertical rails, horizontal bars, 45° diagonals. Squared terminals, parametric generation, no curves. OFL-1.1. - [Curtis Compliance Pro](https://jordannewell.com/projects/curtis-compliance-pro/): Hosted pro tier for Curtis Compliance — GitHub App, multi-repo audit rollup, PDF export, custom frameworks. Source-available (BSL/FSL/SSPL — license class TBD). - [PAT Scanner](https://jordannewell.com/projects/pat-scanner/): Block credential leaks at chat-time. Claude Code UserPromptSubmit hook that catches 13 PAT classes before they enter the transcript. - [Claudeway](https://jordannewell.com/projects/claudeway/): Verifiable multi-agent consensus for Claude. The coordination layer frameworks punted on — Nostr-native event signing, post-quantum (ML-DSA) signatures, MCP server. - [Temporal Git](https://jordannewell.com/projects/temporal-git/): Automated git bisect — find which commit introduced a bug with one command. Point it at a failing test or symptom script and let it drive the bisect. - [Curtis Chat](https://jordannewell.com/projects/curtis-chat/): The earlier name for what's now Curtis AI Chat. Started as ObsidiBuddi, became Curtis Chat at v3, evolved into Curtis AI Chat at v1 (new plugin ID, fresh major version). This page is the evolution story. ## Optional - [About](https://jordannewell.com/about) - [Now](https://jordannewell.com/now) - [Contributions](https://jordannewell.com/contributions) - [RSS](https://jordannewell.com/rss.xml) - [AI Feed](https://jordannewell.com/ai-feed.json) ## License - Content: CC BY-NC 4.0 (https://creativecommons.org/licenses/by-nc/4.0/) - Code: MIT (https://opensource.org/licenses/MIT) - Brand: All Rights Reserved - DMCA: jordan@jordannewell.com