I shipped two production sites and a blog from my phone
I built and shipped two production websites and a blog this week from my phone. Not prototypes, production sites with CI/CD pipelines, CloudFront distributions, GitHub Actions, and spec packages that drive every session. I wrote no code. I wrote specs. Two more AI-driven products are underway using the same workflow, with specs in private development.
None of that needed a laptop.
The interaction chain
iMessage → Perplexity Computer → spec written → Claude Code → PR open → GitHub Actions validates → merged → deploys.
My only job in that chain is intent and review. The pipeline is the same one I would run from a desk, the input surface is the only thing that changed.
The tools, named explicitly:
- Perplexity Computer, planning, research, spec writing. I started on Perplexity a few years back for financial research, and it has been my daily AI tool ever since, the first one I used regularly in my personal life. The GitHub connector reads repos, opens PRs, and writes spec files directly. Memory across sessions means it carries decisions forward without being told.
- Claude Code, implementation. Given a spec, it writes the code and opens the PR. Stateless per session; the spec is its context load. Especially good on desktop with the CLI running: it sets up GitHub and keeps packages in local memory, which is a noticeable speedup.
The separation is deliberate. Perplexity holds the decisions across time. Claude Code holds the code inside one session. Neither tries to do the other's job.
What "from a phone" actually means
PRs short enough to scan on a mobile screen. Review comments inline on the PR, or replied to in chat, whichever is faster in the moment. No IDE, no laptop, no desk. A session is a conversation.
Small PRs are not a style preference, they are the only way this works. A 2,000-line PR is unreviewable on a 6-inch screen. A 50-line PR is. That constraint flows upstream: specs decompose into tasks small enough to ship one at a time, and the whole pipeline tunes itself to that shape.
The merge button is a tap. The deploy is GitHub Actions. The healthcheck posts to Discord. I watch the notification land while walking.
The part that isn't magic
This is not "AI did it for me." It is "I make decisions, write them down, and AI implements them reliably." The decisions are mine. The reviews are mine. The architecture is mine. The AI handles the layer underneath.
What makes it work is the spec. Without one, every new session starts from scratch, reconstructing stack, conventions, and prior decisions from whatever the tool can find in the codebase. With one, a session that opens with "continue the contact form work" already has all of that loaded. The spec is the handoff artifact.
I'll write about that methodology in the next post, why spec-driven development is really a context-management discipline, not an agent-management one.
For now, the shape of the claim: production software, shipped from a phone, because the thinking happens in specs and the typing happens elsewhere.
Next in the series: SDD isn't about managing AI agents, it's about managing context
See the structure: caskeycoding-specs-demo, a public teaching artifact. One example per package shape. No workflow dependencies; curated for readers.