My Dev Workflow Leaving 2025

As 2025 wraps up, I wanted to document the tools and workflow I’ve settled into. This isn’t about chasing the newest shiny thing, it’s what actually works for me day-to-day as a software engineer.

The Core Setup

OpenCode + Zed

My primary coding environment is OpenCode, a terminal-based AI coding agent. I run it in a terminal alongside Zed for when I need to make quick manual edits or review changes on the spot.

The combination works well: OpenCode handles the heavy lifting—scaffolding, refactoring, multi-file changes—while Zed gives me a fast, minimal editor when I need direct control. I rarely open a full IDE anymore. I haven’t yet tried Zed’s OpenCode extension but the need hasn’t really come up yet.

Claude 4.5 Opus

My go-to model for coding tasks is Claude 4.5 Opus. It handles complex codebases well, follows instructions precisely, and doesn’t hallucinate as much as other models when working with unfamiliar libraries.

Honorable mentions:

Infrastructure & Deployment

SST

For anything deployed to AWS, I reach for SST without hesitation. It’s the best infrastructure-as-code solution I’ve used—clean abstractions over AWS primitives, great local development experience, and sensible defaults that don’t get in your way.

If I have the choice, I always use SST. The combination of TypeScript configuration, live Lambda debugging, and seamless deployments makes it hard to go back to raw CloudFormation or Terraform for application infrastructure.

Astro

For static sites (like this blog), Astro is my default. It’s fast, ships minimal JavaScript by default, and the component model is intuitive.

What I appreciate most: it’s a great foundation for building your own framework on top of. The content collections API and integrations ecosystem make it easy to customize without fighting the tool.

Libraries Worth Mentioning

A few libraries that have earned a permanent spot in my toolkit:

DrizzleORM — Type-safe SQL that doesn’t try to hide the database from you. I use it for most TypeScript backend projects now. The migration story is clean, and it generates readable queries.

ElysiaJS — A Bun-first web framework that’s fast and ergonomic. Great for APIs where performance matters and you want end-to-end type safety.

Cobra — The standard for building CLI tools in Go. Every CLI I’ve built in the past two years uses it. Simple, well-documented, battle-tested.

Effect-TS — When a project calls for it, Effect brings proper error handling and composability to TypeScript. It’s not for every project, but when complexity warrants it, Effect pays dividends.

neverthrow — A lighter alternative when you want Result types without the full Effect ecosystem. Good for adding explicit error handling to existing codebases incrementally.

What’s Next

This setup has been stable for most of 2025. The AI tooling space is still moving fast, but the core of the workflow—terminal-first, minimal UI, infrastructure as code—feels right.

I’ll probably write more detailed posts about specific parts of this stack. If you have questions about any of these tools, feel free to reach out.