TECH_STACK.json
Every tool earns its place. No hype-driven choices — each one is selected for reliability, composability, and production-readiness.
Primary language for all backend, AI, and automation work. Chosen for ecosystem depth and LLM tooling maturity.
primaryFor low-level performance-critical components where Python's overhead is unacceptable.
selectiveFastAPI for all async API surfaces. Pydantic for runtime validation and schema generation. Uvicorn + Gunicorn for production serving with worker management.
SQLAlchemy 2.x with async support as the ORM layer. Alembic for all schema migrations — never manual SQL changes in production.
Transient state, session caching, rate limiting, pub/sub.
Reliable async job queuing and inter-service messaging. Kafka and Redpanda for high-throughput event streaming.
Airbyte for reliable data replication. Feast for feature storage and serving in ML pipelines.
pgvector for PostgreSQL-native RAG. Qdrant and Pinecone for production vector search. FAISS for local/offline similarity. Milvus for large-scale deployments.
For knowledge graphs, relationship-heavy data models, and Cognee-style pipelines where relational models fall short.
Self-hosted LLM inference for privacy-sensitive workloads and offline environments.
Stateful, graph-based multi-agent orchestration.
Type-safe agent construction with Pydantic validation.
Multi-agent collaboration and role-based crews.
Structured output extraction and schema-bound generation.
An internal tool being developed on top of the OpenCode ecosystem. Manages workflow state, agent coordination, and project automation at scale.
.hyperflow/state.json as persistent coordination layer
Multi-agent task routing and skill delegation
Extensible via .opencode/plugins directory
Project-level command and task automation
All services containerised. Compose for local dev and simple deployments. Every project ships with a production-ready Dockerfile.
Lightweight global deployment for small to mid-scale workloads.
Caddy for automatic TLS and simple reverse proxying. nginx for high-performance static serving. WireGuard for internal service mesh and private networking.
Real-time error capture, stack traces, and alerting. Every production service ships with Sentry integrated from day one.
Prometheus for metric scraping and alerting rules. Grafana for operational dashboards and SLA visibility. Datadog for hosted APM when managed observability is preferred.
Structured logging with structlog. Distributed tracing via OpenTelemetry for cross-service visibility.
Server-rendered dashboards and admin panels. HTMX for interactivity without a JS build pipeline. SQLAdmin for database admin interfaces.
React for component-driven interfaces. Next.js for full-stack apps requiring SSR, routing, and API routes in one framework.
Cross-platform mobile via React Native with Expo for managed workflow, OTA updates, and native module access.
Custom operational cockpits for business monitoring. Tailored to the data model, not a generic BI tool.
n8n for visual workflow automation. Self-hosted SearXNG for private web search. Browser automation and HTML parsing for data extraction pipelines.
Obsidian as the primary knowledge base with Dataview for dynamic queries across notes. Linked thinking over flat documents.
Hugo for fast static site generation. Cloudflare for edge delivery and zero-config SSL on public-facing documentation.
Every system ships with operational runbooks committed alongside the codebase.
All analytics queries go through a registered registry — no ad-hoc SQL access in production.
No tools in production that haven't been run under real load. Hype-driven choices cause post-launch failures.
Each tool does one thing well and integrates cleanly. No monolithic platforms that lock you into a vendor.
Every tool chosen can be operated by your team after handoff. No dependency on proprietary tooling I control.
Kubernetes only when needed. SQLite when Postgres is overkill. The stack fits the problem, not the résumé.
Have a problem that
fits
this stack?
Send a short brief — what you're building, what's broken, and what you've already tried. I'll respond within 48 hours.