Tyrone's working stack
AI operating stack
The tools I build with, and when you should pick each one: what it is for, what it pairs with, and what it beats. Each entry says how I actually use it.
Starting points
If you are building one of these, start here. The sections below explain each pick.
- A content site or blog Astro + Cloudflare Pages and Workers + TypeScript
- A web app with accounts Next.js 16 + Vercel + Neon
- An app that needs vector search Next.js 16 + Vercel + Supabase
- Background jobs that never stop Railway + BullMQ + Redis
- A fast local daemon or CLI Rust + Command-line tools
- A native Mac or iPhone app Swift + Xcode / TestFlight / Transporter
Coding agents
Where you type the request. Pick one primary agent and one for independent review.
-
Claude Code
Terminal coding agent and plugin host.
- Pick it when
- You want an agent that runs your tests, drives your tools through the shell, and loads plugins for review and verification.
- Versus
- Codex: use both: a second vendor catches what the first one misses
- Cursor: Cursor keeps you in an editor; Claude Code keeps you in the terminal
Pairs with and how I use it
- Pairs with
- Build Loop, Agent Rally Point
- How I use it
- Primary since September 2025, after earlier web builders like Replit. I did not record why I switched, so I will not invent a reason.
-
Codex
Second coding agent from a different model vendor.
- Pick it when
- You want an independent reviewer or a parallel implementer that does not share the first agent's blind spots.
- Versus
- Claude Code: same job, different model family; the disagreement is the value
Pairs with and how I use it
- Pairs with
- Agent Rally Point
- How I use it
- Added April 2026; agent instruction files appear across my repos that month.
-
Cursor
Code editor with an agent pane and a multi-vendor model picker.
- Pick it when
- You want to read and edit code yourself with an agent beside you, or try another vendor's model without new setup.
- Versus
- Claude Code: the terminal agent does unattended multi-step work; the editor suits hands-on reading
Pairs with and how I use it
- How I use it
- Editor with an agent pane, open on the same repos as Claude Code: 29 workspaces from September 2025 to September 2026, most recently the news app and the task queue.
Models
Which model does the work. Route by how hard the task is, not by the role.
-
Anthropic
Claude models from the hardest judging work down to fast recognition.
- Pick it when
- Default for planning, judging and multi-file code.
- Versus
- OpenAI / Codex: use as the second opinion rather than a replacement
Pairs with and how I use it
- Pairs with
- Claude Code
-
OpenAI / Codex
OpenAI models for the Codex agent and embeddings.
- Pick it when
- You want a second vendor for review, or embeddings for search.
- Versus
- Anthropic: different failure modes make cross-vendor review worth it
Pairs with and how I use it
- Pairs with
- Codex
-
OpenRouter
One API in front of many model vendors.
- Pick it when
- You want to try or route across many open and hosted models without a separate account for each.
- Versus
- Ollama: OpenRouter is hosted; Ollama keeps data on your machine
Pairs with and how I use it
- Pairs with
- RossLabs Agent Harness
- How I use it
- Backs 13 of the agent harness's 21 named routes.
-
Ollama
Local model runner.
- Pick it when
- Data should stay on your machine, or you want free repeat runs for evals.
- Versus
- OpenRouter: local is slower and smaller but private and free per call
Pairs with and how I use it
- Pairs with
- RossLabs Agent Harness, MLX
- How I use it
- 21 local models pulled; the largest is 65 GB.
-
TypeSafe System One (Jev)
Typed decision model: returns calibrated probabilities over options you declare.
- Pick it when
- A program needs a bounded judgment (classify, route, gate, dedupe) and must read a confidence number, not parse prose.
- Versus
- OpenAI / Codex: on a 77-article test set, Jev matched a small general model on accuracy (86% vs 84%, a statistical tie) with median latency about 10x lower and cost per call about 5x lower; better label definitions moved accuracy more than the model did
Pairs with and how I use it
- Pairs with
- Atomize AI
- How I use it
- Calibrated typed decisions: a classifier returns probabilities over options I define, not prose. In testing as Atomize's news classifier.
-
Grok (xAI)
Grok model family from xAI.
- Pick it when
- Worth a trial inside Cursor or via OpenRouter when you want another vendor's coding model.
- Versus
- Anthropic: no head-to-head of mine yet, so no recommendation
Pairs with and how I use it
- Pairs with
- Cursor, OpenRouter
- How I use it
- Available as a model inside Cursor and through OpenRouter. No recorded use in my routes, history or editor settings as of 2026-09-21.
-
Meta Muse Spark
Meta's current flagship model, used inside Meta AI.
- Pick it when
- Watching only: it reaches people through Meta's apps, not a developer API I could build on.
Pairs with and how I use it
- How I use it
- Meta Superintelligence Labs model behind Meta AI, released April 2026. No recorded use in my routes or history; no public developer API found.
Databases
Where the app keeps its data. Both options here are Postgres, so the choice is about what comes with it.
-
Neon
Serverless Postgres with branching.
- Pick it when
- A new Next.js app on Vercel: install from the Vercel Marketplace and each preview deploy can get its own database branch.
- Versus
- Supabase: Supabase bundles auth, storage and a dashboard; Neon is just the database, which is less to learn
Pairs with and how I use it
- Pairs with
- Vercel, Next.js 16
- How I use it
- My default for new Next.js work since mid-2026: it bills per use, so each new project does not add another flat monthly plan. Apps already working on Supabase stay there; moving for its own sake is not worth it.
- Free plan: scales to zero after 5 idle minutes, no card needed (checked 2026-09-21).
-
Supabase
Postgres with auth, storage and pgvector built in.
- Pick it when
- You need vector search next to your relational data: pgvector with HNSW indexes works out of the box.
- Versus
- Neon: Neon also runs pgvector, but Supabase gives you auth and storage in the same project
Pairs with and how I use it
- Pairs with
- Vercel, Railway
- How I use it
- Atomize runs on it, including its embeddings.
- Free plan: 2 active projects, paused after 7 days with no database activity (checked 2026-09-21).
Hosting
Where the built thing runs.
-
Vercel
Hosting made by the Next.js team.
- Pick it when
- You ship Next.js and want previews, edge functions and cron with no configuration.
- Versus
- Cloudflare Pages and Workers: Cloudflare is the better fit for static and Astro sites
- Railway: Vercel functions time out; long jobs belong on Railway
Pairs with and how I use it
- Pairs with
- Next.js 16, Neon
- How I use it
- Hosts Atomize.
- Free Hobby plan, personal and non-commercial use only (checked 2026-09-21).
-
Cloudflare Pages and Workers
Static hosting plus edge functions on a global network.
- Pick it when
- Mostly static sites, Astro in particular, and small edge functions.
- Versus
- Vercel: Vercel is easier for Next.js; Cloudflare is generous for static traffic
Pairs with and how I use it
- Pairs with
- Astro
- How I use it
- Hosts rosslabs.ai since June 2026, including its edge functions and scheduled refresh worker.
- Free plan for Pages and Workers (checked 2026-09-21).
-
Railway
Container hosting for long-running services.
- Pick it when
- Workers and queues that run for minutes or never stop.
- Versus
- Vercel: Vercel is for request-sized work; Railway is for always-on work
Pairs with and how I use it
- Pairs with
- BullMQ, Redis
- How I use it
- Runs Atomize's background queue workers, because serverless functions cannot host a consumer that never stops.
- No permanent free tier; a 30-day trial (checked 2026-09-21).
Frameworks
What the app is built with.
-
Astro
Content-first web framework that ships little JavaScript.
- Pick it when
- A site that is mostly pages to read, with interactive islands where needed.
- Versus
- Next.js 16: Next.js suits apps with logged-in users and heavy server logic; Astro suits content sites
Pairs with and how I use it
- Pairs with
- Cloudflare Pages and Workers
- How I use it
- rosslabs.ai since November 2025, on Cloudflare. My written rule: Next.js on Vercel for web products, Astro for content-forward sites with small interactive islands.
-
Next.js 16
Full-stack React framework.
- Pick it when
- An app with accounts, API routes and server rendering.
- Versus
- Astro: more machinery than a content site needs
Pairs with and how I use it
- Pairs with
- Vercel, Neon
- How I use it
- Atomize runs on Next.js 16. My first Next.js app dates from August 2025.
-
LangChain
Library for composing LLM calls, prompts and retrieval.
- Pick it when
- You chain several model calls with structured output and want tracing integrations.
- Versus
- TypeSafe System One (Jev): for a single bounded decision a typed call is simpler
Pairs with and how I use it
- Pairs with
- LangSmith
- How I use it
- Atomize's summarization and search pipelines.
Languages
Architecture decides speed first; pick the language for where the code has to run.
-
TypeScript
The default for anything on the web.
- Pick it when
- Web apps, plugins, MCP servers and most CLI tools.
- Versus
- Python: Python for scripts and data work
Pairs with and how I use it
- Pairs with
- Astro, Next.js 16
- How I use it
- Every web app, plugin and CLI tool; dominant in every repo started in 2025.
-
Python
Scripting and data language.
- Pick it when
- Custom scripts, gates, linters and data pipelines where a quick, readable tool beats a compiled one.
- Versus
- TypeScript: TypeScript when it ships to a browser or a Node plugin
Pairs with and how I use it
- How I use it
- Build Loop gates, linters, data pipelines and knowledge-base tooling, with uv for per-project environments. I have not recorded a reason for Python over another language here; it is the habit, not a measured choice.
-
Rust
Compiled systems language.
- Pick it when
- Long-lived local daemons and background services, and CLIs that must start instantly and stay lean.
- Versus
- TypeScript: a Node process carries a runtime and memory cost that a daemon pays all day
- Swift: Swift for the app UI; Rust for the headless process behind it
Pairs with and how I use it
- Pairs with
- RossLabs Agent Harness, Easy Terminal
- How I use it
- Daemons and CLIs since May 2026, chosen because a single static binary needs no runtime or interpreter. The rule I follow: fix the runtime architecture first, since language only buys small multiples on what remains.
-
Swift
Apple's native language.
- Pick it when
- iOS and macOS apps where native UI, system access and App Store delivery matter.
- Versus
- TypeScript: a web wrapper cannot reach the same system APIs
Pairs with and how I use it
- Pairs with
- Xcode / TestFlight / Transporter
- How I use it
- Native Mac and iOS apps since February 2026: TruePace, Easy Terminal, Spectra, Secrets Vault, Ambient Agent.
Protocols
How agents and services talk to your tools.
-
Command-line tools
A command the agent runs in the shell.
- Pick it when
- Default. Scriptable, testable, returns an exit code, and loads no tool schemas into the agent's context.
- Versus
- MCP servers: an MCP server starts once and caches state, a source of stale-state bugs; a CLI resolves fresh each call
Pairs with and how I use it
- Pairs with
- Claude Code, Codex
- How I use it
- Tried MCP-first in March 2026; Build Loop dropped its MCP surface in June; NavGator (August) and IBR (late August) made the CLI the default and MCP opt-in.
-
MCP servers
Model Context Protocol server.
- Pick it when
- The host has no shell, or needs a remote, authenticated connector such as mail or a calendar.
- Versus
- Command-line tools: use the CLI whenever the agent has a shell
Pairs with and how I use it
- Pairs with
- Claude Code
- How I use it
- Kept for remote connectors; my own tools ship MCP as opt-in.
-
OpenTelemetry
Standard for traces and metrics.
- Pick it when
- You want model calls traced in any backend rather than one vendor's dashboard.
- Versus
- LangSmith: LangSmith is richer for LLM debugging but single-vendor
Pairs with and how I use it
- Pairs with
- Atomize AI
- How I use it
- Exported from Atomize and the agent harness. Its generative-AI conventions are still in development (checked 2026-09-21).
-
OAuth
Delegated sign-in standard.
- Pick it when
- Users sign in with an existing account, or an agent acts on a service on their behalf.
Pairs with and how I use it
- Pairs with
- Atomize AI
- How I use it
- Sign-in and account linking in Atomize.
How the pieces connect: five layers
left to right: the user types at Application, Tools assist, Orchestration decides and routes, Agent Memory persists across sessions, Infrastructure serves the models and hosts what is built
- 1
Application / Interface
Where a request is typed. The human sits here; every layer to the right is reached through it.
Claude Code, Codex, Antigravity, Ghostty, Easy Terminal, Cursor, Windsurf (no longer used), Replit (no longer used), Lovable (no longer used)
- 2
Tools
Capabilities the application calls on to do a job better: check a change, map a dependency, sharpen a prompt, review a design. Invoked, never in charge.
IBR, NavGator, Prompt Builder, CodeGuard, threat-modeler, Persona Lab, Mockup Gallery, pre-push CI gate, visual-test-suite, rosslabs-lsp, Groundwork, Omniparse, api-registry
- 3
Orchestration
Decides what work happens, in what order, and who owns it. Plans and routes; does not itself write code.
Build Loop, Agent Rally Point, Operations Center, AI Assistant router, RossLabs Agent Harness, Agent Rally Watcher, agent-doe-engine, Local Smartz, Stratagem
- 4
Agent Memory
What every layer to the left reads at session start and writes at session end. Durable operating context, not storage.
Personal LLM Wiki, Obsidian, build-loop-memory, build-loop-global-memory, Bookmark, Claude auto-memory, Research plugin
- 5
Infrastructure
What serves the models and hosts what gets built. Segmented into inference, database, middleware and app hosting.
LLM / Inference: Anthropic, OpenAI / Codex, OpenRouter, Groq, Ollama, MLX, TypeSafe System One (Jev)
Database: Neon, Supabase, Cloudflare R2
Middleware: BullMQ, Redis, Pipedream Connect
App hosting: Vercel, Cloudflare Pages and Workers, Railway, GitHub + Actions, Xcode / TestFlight / Transporter, OrbStack, Secrets Vault, Tailscale
Reference
The full record behind the guide, closed until you need it.
Quick triggers 12
-
About to change code and need to know what else breaks: NavGator
Not IBR: IBR checks the rendered UI, not the dependency graph
-
Changed a UI and need to confirm it behaves in a browser: IBR
Not visual-test-suite: that is regression across URLs, not one build's behaviour
-
Have several HTML mockups and need to pick one: Mockup Gallery
-
About to push to a repo with GitHub Actions: pre-push CI gate
-
Multi-step code change in one repo: Build Loop
Not AI Assistant router: the router classifies and dispatches one prompt; it does not run a build
-
Another agent is active in the same checkout: Agent Rally Point
Not Operations Center: Operations Center is the cross-repo queue; Rally is the per-checkout claim surface
-
Need a model call with no API cost, or data staying on the machine: RossLabs Agent Harness
-
Need to audit or judge super-complex work: Anthropic
-
Need a diff reviewed for security, or a threat model for an agentic system: CodeGuard
-
Need an API signature verified before writing code: api-registry
-
Need a screenshot or guided marketing sequence of a Mac app: Spectra
Not Showcase: deprecated 2026-04-21 and superseded by Spectra
-
Need to optimise one metric across several variables at once: agent-doe-engine
Every connection 34
- Claude Code hosts Build Loop
- Claude Code hosts Agent Rally Point
- Operations Center dispatches Build Loop
- Operations Center dispatches Agent Rally Point
- Agent Rally Watcher companion of Agent Rally Point
- AI Assistant router dispatches Build Loop
- Build Loop dispatches Prompt Builder
- Build Loop verifies with NavGator
- Build Loop verifies with IBR. Phase 4 Review-B on any UI target
- Build Loop writes build-loop-memory
- Build Loop writes build-loop-global-memory
- RossLabs Agent Harness routes model via Ollama
- RossLabs Agent Harness routes model via OpenRouter
- RossLabs Agent Harness routes model via Anthropic
- pre-push CI gate verifies with GitHub + Actions. before any push to a repo with Actions
- Easy Terminal hosts Claude Code
- Easy Terminal hosts Codex
- ptyd backed by Easy Terminal
- Atomize AI routes model via Groq
- Atomize AI backed by Supabase
- Atomize AI ships to Vercel
- Atomize AI ships to Railway
- BullMQ backed by Redis
- Spectra supersedes Showcase
- Claude Code reads Claude auto-memory. session start
- Claude Code reads Bookmark. session start
- Claude Code reads Personal LLM Wiki
- Codex verifies with Claude Code
- Obsidian reads Personal LLM Wiki
- api-registry reads Claude Code
- Atomize AI calls TypeSafe System One (Jev). classifying news articles into subcategories
- rosslabs.ai deploys to Cloudflare Pages and Workers
- rosslabs.ai built with Astro
- Atomize AI built with Next.js 16
Model tiers 7
- experimental/restricted frontier: mythos. experimental, restricted
- ultra-frontier: opus, fable, gpt-5.6-sol. judge, super-complex
- frontier: opus, gpt-5.5. orchestration default
- balanced workhorse: sonnet, gpt-5.6-terra, qwen3-coder-30b. execution
- efficient near-frontier: haiku, gpt-5.6-luna, gpt-5.4-mini. recognition, bounded
- utility/nano/edge: gpt-5.4-nano. utility
- specialist infrastructure: text-embedding-3-large, text-embedding-3-small, omni-moderation, gpt-realtime, gpt-image-1. off-ladder specialist
Local models 12
- gpt-oss:120b65.29 GB
- qwen2.5-coder:32b-instruct-q5_K_M23.26 GB
- qwen3-coder:30b18.56 GB
- gemma4:26b17.99 GB
- devstral-small-2:24b15.18 GB
- gpt-oss:20b13.79 GB
- phi4:14b9.1 GB
- qwen3:8b-q4_K_M5.23 GB
- qwen2.5-coder:7b4.68 GB
- llama3.2:3b2.02 GB
- mlx-community/Llama-3.2-3B-Instruct-4bit2 GB
- tinyllama0.64 GB
Which model handles which job 21
- default: qwen3:8b-q4_K_M via Ollama. Portable smoke baseline, kept small so first run never waits on a large pull
- coding/read: qwen3-coder:30b via Ollama. Top-evidenced local coder among pulled models
- coding/write: qwen3-coder:30b via Ollama. Top-evidenced local coder among pulled models
- deepthink: claude-opus-4-8 via Anthropic. Deep reasoning
- think: claude-sonnet-5 via Anthropic. General reasoning
- value-think: deepseek/deepseek-v4-pro via OpenRouter. Reasoning at a lower price point
- code-cloud: moonshotai/kimi-k2.7-code via OpenRouter. Cloud coding when local weights are not enough
- code-repo: mistralai/devstral-2512 via OpenRouter. Repository-scale code work
- code-read: qwen/qwen3-coder via OpenRouter. Cloud code comprehension
- long-context: google/gemini-3.1-pro-preview via OpenRouter. Long-window reads
- vision: qwen/qwen3-vl-235b-a22b-instruct via OpenRouter. Image input
- cheap: google/gemini-2.5-flash-lite via OpenRouter. Low-cost lane, speed
- cheap-flash: deepseek/deepseek-v4-flash via OpenRouter. Low-cost lane, speed
- cheap-think: z-ai/glm-4.7-flash via OpenRouter. Low-cost lane, reasoning
- cheap-reason: openai/gpt-oss-120b via OpenRouter. Low-cost lane, reasoning
- extract: google/gemma-4-26b-a4b-it via OpenRouter. Structured extraction
- experiment: nvidia/nemotron-3-super-120b-a12b via OpenRouter. Unpinned lane for trying a new model without touching the others
- gemma: google/gemma-4-31b-it via OpenRouter. Named lane for head-to-head comparison
- glm: z-ai/glm-5.2 via OpenRouter. Named lane for head-to-head comparison
- minimax: minimax/minimax-m3 via OpenRouter. Named lane for head-to-head comparison
- or-think: qwen/qwen3.7-plus via OpenRouter. Named lane for head-to-head comparison
Everything installed 106
Knowledge
- Personal LLM Wiki
- Obsidian
- build-loop-memory
- build-loop-global-memory
- Claude auto-memory
- Bookmark
- api-registry
- Research plugin
- Omniparse
- obsidian-vault-search
- Notion
Model provider
- Anthropic
- OpenAI / Codex
- OpenRouter
- Groq
- Ollama
- MLX
- TypeSafe System One (Jev)
- Grok (xAI) (watching)
- Meta Muse Spark (watching)
Orchestration
- Build Loop
- Agent Rally Point
- Operations Center
- AI Assistant router
- RossLabs Agent Harness
- Agent Rally Watcher
- agent-doe-engine
- Local Smartz
- Stratagem
Verification
- IBR
- NavGator
- CodeGuard
- threat-modeler
- Persona Lab
- Mockup Gallery
- pre-push CI gate
- visual-test-suite
- rosslabs-lsp
Delivery
- Vercel
- Railway
- GitHub + Actions
- Xcode / TestFlight / Transporter
- OrbStack
- Resend
- Brevo
- Cloudflare Pages and Workers
Own products
- Atomize AI
- Prompt Test Lab
- prompt-model-benchmark-lab
- Agent Astronomer
- rosslabs.ai
- replit-migrate
- docx-builder / pptx-builder
- claude-code-debugger
Coding agent
- Claude Code
- Codex
- Cursor
- Windsurf (no longer used)
- Antigravity
- Replit (no longer used)
- Lovable (no longer used)
Design & product
- Groundwork
- Prompt Builder
- Pyramid Principle
- tyrone-writing-system
- style-calibrator
- ui-guidance
- Figma-free stack: Canva, Framer
Capture & media
- Granola
- Wispr Flow
- Spectra
- Showcase (no longer used)
- Descript / Loom / Snagit
Data
- Neon
- Supabase
- Redis
- BullMQ
- Cloudflare R2
General AI
- ChatGPT
- Perplexity
- Comet
- Manus (tried, not adopted)
- Claude desktop
Frameworks
- LangChain
- LangGraph / DeepAgents
- Next.js 16
- Astro
Languages
- TypeScript
- Python
- Rust
- Swift
Terminal
- Ghostty
- Easy Terminal
- ptyd
- screen-extractor
Integration
- Pipedream Connect
- Composio (tried, not adopted)
- MCP servers
Observability
- LangSmith
- OpenTelemetry
- Sentry
Security
- Secrets Vault
- Tailscale
- Little Snitch
Protocols
- Command-line tools
- OAuth
Tyrone Ross · Verified against live config on September 21, 2026.