# Cloudless Labs > Cloudless Labs is a Sydney consultancy founded by Nicolas Dao, for AWS cloud, AI and e-learning projects. This file is the map of cloudlesslabs.com for AI assistants: every link is a Markdown file, and the note after it says which questions it answers. Every file links onward to related files, so one or two fetches usually answer a question; no file needs the whole site. The map is rebuilt from the site's content on every release, so it lists every Markdown file there is. The Stack was last reviewed 20 October 2026; the newest Stack Weekly is from 19 October 2026. ## About Cloudless Labs: can it help with a project? - [Cloudless Labs: services, clients and contact](https://cloudlesslabs.com/index.md): what Cloudless Labs does (AWS Consulting, AI Consulting, E-learning Consulting), who it works with (startups, enterprises, government), where it is, how support works after a project, what clients say, and how to get in touch. Founded by Nicolas Dao: two decades building software, the last 15 years of them in the cloud. - Contact: nic@cloudlesslabs.com - What Cloudless Labs builds with, and why: The Stack, below. It shows how a project would be built and what it would cost to run. ## What should I build with? Start from the job Nicolas Dao's opinionated, priced picks for 21 jobs. Each file gives the picks in order of preference, what to avoid and what to use instead, and links to every tool's full entry. - [An API for my app](https://cloudlesslabs.com/stack/use-cases/api.md): I need a backend API that reads and writes a database. Picks: Lambda function URLs, Neon (serverless Postgres), Lambda Web Functions, Cloudflare Workers. Avoid: GraphQL and AppSync, API Gateway. - [An AI chat or LLM feature](https://cloudlesslabs.com/stack/use-cases/ai-chat.md): My app needs to call an LLM and stream the answer to users. Picks: Cloudflare Workers, OpenRouter, pgvector, Cloudflare AI Gateway. Avoid: AWS Lambda, Anthropic API (for client systems). - [Something live that many people watch at once](https://cloudlesslabs.com/stack/use-cases/realtime.md): Live auctions, collaborative editing, polls, chat rooms, game lobbies. Picks: Cloudflare Workers, Cloudflare Durable Objects, Neon (serverless Postgres), Amazon S3. Avoid: API Gateway, GraphQL and AppSync. - [A traffic spike I can see coming](https://cloudlesslabs.com/stack/use-cases/flash-sale.md): A flash sale, ticket drop or launch where thousands hit at once. Picks: Cloudflare Workers, Cloudflare Durable Objects, AWS Lambda, Stripe. Avoid: Lambda function URLs. - [A website, SPA or PWA](https://cloudlesslabs.com/stack/use-cases/website.md): A marketing site or a front-end app. Picks: Cloudflare static hosting, Cloudflare R2, Astro on Cloudflare Workers, Next.js on Cloudflare Workers (OpenNext), Cloudflare Turnstile. Avoid: Amazon CloudFront. - [Background jobs and retries](https://cloudlesslabs.com/stack/use-cases/background.md): Work that runs after the request, with retries. Picks: Amazon SQS, AWS Lambda, Amazon EventBridge, Lambda durable functions. Avoid: AWS Step Functions. - [Event-driven plumbing](https://cloudlesslabs.com/stack/use-cases/events.md): Moving events between services, buffering work, fanning out and streaming records into the lake. Picks: Amazon EventBridge, Amazon SQS, Amazon SNS, Amazon Data Firehose, Amazon Kinesis. Avoid: AWS Step Functions. - [A job that runs for hours](https://cloudlesslabs.com/stack/use-cases/long-job.md): A nightly import, report or migration longer than 15 minutes. Picks: Fargate scheduled tasks, Amazon EventBridge. Avoid: Lambda container images. - [Device and IoT data](https://cloudlesslabs.com/stack/use-cases/iot.md): Thousands of devices sending readings that end up in reports. Picks: AWS IoT Core, Amazon SQS, Neon (serverless Postgres). Avoid: API Gateway, Amazon SNS, Cloudflare Durable Objects. - [Semantic search and RAG](https://cloudlesslabs.com/stack/use-cases/search.md): Search by meaning, or feed an LLM your documents. Picks: pgvector, Amazon S3 Vectors. Avoid: Amazon OpenSearch. - [Sending email](https://cloudlesslabs.com/stack/use-cases/email.md): Transactional emails and newsletters. Picks: Resend, Amazon SES. Avoid: Amazon Pinpoint, Postmark. - [A database](https://cloudlesslabs.com/stack/use-cases/database.md): Where the data lives. Picks: Neon (serverless Postgres), Aurora PostgreSQL. Avoid: Amazon DynamoDB, Cloudflare D1. - [A data lake](https://cloudlesslabs.com/stack/use-cases/data-lake.md): Analytics over everything the apps produce, cheaply, without a warehouse to run. Picks: Amazon S3, Amazon Data Firehose, S3 + Glue + Athena, DuckDB, Aurora PostgreSQL. - [Provisioning everything](https://cloudlesslabs.com/stack/use-cases/infra.md): Infrastructure as code across AWS and every vendor. Picks: Pulumi. Avoid: AWS CloudFormation. - [Private access and exposing a box](https://cloudlesslabs.com/stack/use-cases/private-access.md): Reach private AWS resources, or publish a service from a server. Picks: Tailscale, Cloudflare Tunnel (cloudflared). - [Logs without a shocking bill](https://cloudlesslabs.com/stack/use-cases/logging.md): Observability that doesn't cost more than the app. Picks: Amazon CloudWatch, Amazon Data Firehose, DuckDB, Cloudflare Workers. - [An AWS foundation for a client](https://cloudlesslabs.com/stack/use-cases/aws-foundation.md): Accounts, access, backups and cost from day one. Picks: AWS Organizations + IAM Identity Center, Pulumi, AWS Backup, Savings Plans and Reserved Instances, Cost Explorer (with Claude Code). - [Moving on-premises systems to AWS](https://cloudlesslabs.com/stack/use-cases/migration.md): Lift databases and apps into AWS. Picks: Claude Code, AWS Database Migration Service, AWS Organizations + IAM Identity Center, Pulumi. - [Building with AI agents](https://cloudlesslabs.com/stack/use-cases/ai-dev.md): How I write and test code now. Picks: Claude Code, OpenAI Codex, Playwright, Vitest, pytest, Stryker mutation testing, GitHub, Self-hosted MCP servers. Avoid: GitLab, Bitbucket and Atlassian. - [Sign-in and identity](https://cloudlesslabs.com/stack/use-cases/sign-in.md): How users sign in, reset passwords and use Google, Microsoft or their company login. Picks: Better Auth, Amazon Cognito, Resend, Cloudflare Workers. - [Running the business](https://cloudlesslabs.com/stack/use-cases/business.md): Payments, analytics and the daily tools. Picks: Stripe, PostHog, GitHub. Avoid: Slack, Jira, Asana, Monday.com and heavy project-management software. ## Worked examples, with real numbers Each guide answers one question end to end: the design, the costs, the code. - [Lambda, Web Functions or Workers?](https://cloudlesslabs.com/stack/guides/compute-choice/index.md): Where should this piece of logic run? Classic Lambda for events and heavy compute. Lambda Web Functions for HTTP business logic, once in your region. Workers at the edge, for waiting, spikes and real-time. - [The LLM streaming proxy](https://cloudlesslabs.com/stack/guides/llm-proxy/index.md): How do I add an AI chat feature without leaking my API key or paying for the model's thinking time? Never call an LLM from the browser. A Worker holds the key, checks the user's budget and streams tokens back. Waiting costs nothing on Workers. - [The flash sale](https://cloudlesslabs.com/stack/guides/flash-sale/index.md): What happens when 50,000 people press "Buy" in the same ten seconds? Straight into Lambda, the spike meets scaling limits, 429s and an Aurora connection storm. With a Worker in front, Cloudflare absorbs it and AWS sees only the winners. - [A live auction on Durable Objects](https://cloudlesslabs.com/stack/guides/live-auction/index.md): How do thousands of bidders share one live auction without races, and what happens when it ends? One Durable Object per lot holds every WebSocket and processes bids one at a time. When the lot closes, it reconciles into AWS and deletes its data. $15–30 a month vs $130–410 on AWS designs. - [IoT ingestion into Postgres](https://cloudlesslabs.com/stack/guides/iot-ingestion/index.md): 5,000 devices send a reading every minute. Where does the money go? For ingest-and-report, Postgres wins. The expensive part is the front door, not the database. Fix REST and per-message invocations, and the bill drops from about $1,100 to $215–410. - [pgvector or S3 Vectors?](https://cloudlesslabs.com/stack/guides/vectors/index.md): Where should my embeddings live? Not competitors. pgvector when a user is waiting and results depend on your data. S3 Vectors when the collection is huge, cold or per client. - [Pulumi everywhere](https://cloudlesslabs.com/stack/guides/pulumi-everywhere/index.md): Can I provision every tool on this page from one codebase? Almost. Pulumi uses any Terraform provider, so AWS, Cloudflare, GitHub, Tailscale, Neon, Resend, PostHog, OpenRouter and Stripe are all code. - [CloudWatch and Firehose, side by side](https://cloudlesslabs.com/stack/guides/chatty-logs/index.md): How do I keep chatty logs without a CloudWatch-sized bill? Not either-or. WARN and ERROR stay in CloudWatch, where you watch and alarm on them. The chatty bulk goes from your logger to Firehose to S3, at about $75 per TB instead of about $673. - [Athena or DuckDB?](https://cloudlesslabs.com/stack/guides/data-lake/index.md): How should I query my data lake, and what changed when AWS bought DuckDB's company? Use both. Athena for big scans and ad-hoc questions with zero code. DuckDB for app queries, writing Parquet and local development, on the same files. Sorting files, or Iceberg, fixes the second-index problem without… - [Better Auth or Cognito?](https://cloudlesslabs.com/stack/guides/sign-in/index.md): Which sign-in should my app use, and what do I actually get for free? Not better or worse: one or the other, by job. Cognito for small internal apps and admin panels: everything out of the box, free under 10,000 users. Better Auth for serious apps on Postgres: users in your own database… ## One layer of the stack: every tool for one part of the system - [Edge](https://cloudlesslabs.com/stack/layers/edge.md): Between your users and your backend. Tools: Astro on Cloudflare Workers, Cloudflare Durable Objects, Cloudflare Turnstile, Cloudflare Workers, Next.js on Cloudflare Workers (OpenNext). - [Compute](https://cloudlesslabs.com/stack/layers/compute.md): Where business logic runs. Tools: Fargate scheduled tasks, Lambda container images, Lambda Web Functions, AWS Lambda. - [APIs, queues and events](https://cloudlesslabs.com/stack/layers/api-events.md): How requests and events move. Tools: API Gateway, GraphQL and AppSync, Amazon EventBridge, Amazon Data Firehose, AWS IoT Core, Amazon Kinesis, Lambda durable functions, Lambda function URLs, Amazon SNS, Amazon SQS, AWS Step Functions, Cloudflare Queues. - [Data](https://cloudlesslabs.com/stack/layers/data.md): Databases, migrations and the data lake. Tools: S3 + Glue + Athena, Aurora PostgreSQL, AWS Database Migration Service, Amazon DynamoDB, Amazon OpenSearch, Cloudflare D1, Cloudflare Hyperdrive, DuckDB, Neon (serverless Postgres). - [AI](https://cloudlesslabs.com/stack/layers/ai.md): Models, embeddings and agent access. Tools: Anthropic API (for client systems), Amazon S3 Vectors, Cloudflare AI Gateway, Cloudflare Sandbox, Cloudflare Workers AI, Self-hosted MCP servers, OpenRouter, pgvector. - [Email](https://cloudlesslabs.com/stack/layers/email.md): Transactional and marketing. Tools: Amazon Pinpoint, Amazon SES, Postmark, Resend. - [Storage and delivery](https://cloudlesslabs.com/stack/layers/storage.md): Files, websites and CDNs. Tools: Amazon CloudFront, Amazon S3, Cloudflare R2, Cloudflare static hosting. - [Observability](https://cloudlesslabs.com/stack/layers/observability.md): Logs, metrics, alarms. Tools: Amazon CloudWatch. - [Infrastructure as code](https://cloudlesslabs.com/stack/layers/iac.md): If I can't provision it, it loses points. Tools: AWS CloudFormation, GitHub Actions, Pulumi, Terraform / OpenTofu. - [Networking and hosting](https://cloudlesslabs.com/stack/layers/network.md): Private access, exposure, DNS, servers. Tools: Cloudflare Tunnel (cloudflared), Route 53 and Cloudflare DNS, Hostinger VPS, Tailscale. - [Accounts, identity and cost](https://cloudlesslabs.com/stack/layers/accounts.md): The AWS foundation. Tools: AWS Backup, Amazon Cognito, Cost Explorer (with Claude Code), AWS Organizations + IAM Identity Center, Savings Plans and Reserved Instances, Better Auth. - [Build and test](https://cloudlesslabs.com/stack/layers/dev.md): How the code gets written and checked. Tools: Claude Code, GitHub, GitLab, Bitbucket and Atlassian, Node.js (plain JavaScript), OpenAI Codex, Stryker mutation testing, Playwright, Vitest, pytest, TypeScript. - [Business tools](https://cloudlesslabs.com/stack/layers/business.md): Payments, analytics, the daily kit. Tools: Dashlane, PostHog, Jira, Asana, Monday.com and heavy project-management software, Slack, Stripe, Trello. - [Platforms](https://cloudlesslabs.com/stack/layers/platforms.md): The clouds I don't pick. Tools: Google Cloud, Microsoft Azure, Windows and the Microsoft stack, Netlify, Vercel. ## One tool: the verdict, when to use it and when not, pricing, gotchas with fixes, alternatives - [Amazon CloudFront](https://cloudlesslabs.com/stack/aws-cloudfront/index.md): Use when it fits, cdn in front of aws. Fine in front of AWS origins. Egress was too expensive for big public sites, until the flat-rate plans. - [Amazon CloudWatch](https://cloudlesslabs.com/stack/aws-cloudwatch/index.md): My default, logs, metrics and alarms. Good features. Keep it for the logs you watch live and alarm on; send the chatty bulk through Firehose to S3. - [Amazon Cognito](https://cloudlesslabs.com/stack/aws-cognito/index.md): My default, authentication. The easiest pick for small apps, internal tools and admin panels. Everything works out of the box and it's free below 10,000… - [Amazon Data Firehose](https://cloudlesslabs.com/stack/aws-firehose/index.md): My default, managed delivery of records into s3 (and other sinks). The cheapest way to land a stream of records in S3. No servers, no consumers to write, and about $0.04/GB in Sydney. - [Amazon DynamoDB](https://cloudlesslabs.com/stack/aws-dynamodb/index.md): Never. I've never had a use case it fits better than Postgres with JSONB. - [Amazon EventBridge](https://cloudlesslabs.com/stack/aws-eventbridge/index.md): My default, events and schedules. The event bus and scheduler I use all the time. - [Amazon Kinesis](https://cloudlesslabs.com/stack/aws-kinesis/index.md): Use when it fits, high-throughput streaming. For genuinely huge streams. It gets expensive fast. - [Amazon OpenSearch](https://cloudlesslabs.com/stack/aws-opensearch/index.md): Skip. Overkill for most apps. Postgres full-text plus pgvector covers search. - [Amazon Pinpoint](https://cloudlesslabs.com/stack/aws-pinpoint/index.md): Never. Reaches end of support on 30 October 2026. Don't start anything on it. - [Amazon S3](https://cloudlesslabs.com/stack/aws-s3/index.md): My default, object storage. No complaints. Storage, data lake, archive. - [Amazon S3 Vectors](https://cloudlesslabs.com/stack/aws-s3-vectors/index.md): Use when it fits, vector archive. Vectors at S3 prices, for huge, cold or per-client collections where 100 ms is fine. - [Amazon SES](https://cloudlesslabs.com/stack/aws-ses/index.md): Use when it fits, email when data must stay in aws. The cheapest email at volume, and the only one that keeps data in Sydney. The sandbox is a pain. - [Amazon SNS](https://cloudlesslabs.com/stack/aws-sns/index.md): Use when it fits, pub/sub fan-out. Fan-out from one publisher to many subscribers. Not my ingestion path at high volume. - [Amazon SQS](https://cloudlesslabs.com/stack/aws-sqs/index.md): My default, queues and back-pressure. The queue in front of Lambda. Natural back-pressure, nearly free when batched. - [Anthropic API (for client systems)](https://cloudlesslabs.com/stack/anthropic-api/index.md): Skip. Too expensive for production features in client systems. OpenAI models give better cost per intelligence. - [API Gateway](https://cloudlesslabs.com/stack/aws-api-gateway/index.md): Use when it fits, managed api front door. Useful in a lot of cases, just not by default. Start on a function URL and add API Gateway the day you need what only it does. - [Astro on Cloudflare Workers](https://cloudlesslabs.com/stack/astro-on-workers/index.md): Use when it fits, server-rendered content sites. The framework I'd pick for content sites that need server rendering. Static by default, server-rendered where a page needs it… - [Aurora PostgreSQL](https://cloudlesslabs.com/stack/aws-aurora/index.md): Use when it fits, aws-native postgres. Peace of mind and scale, at a price. My choice when the client must stay all-AWS. - [AWS Backup](https://cloudlesslabs.com/stack/aws-backup/index.md): My default, backups. Central backup policies for AWS resources. Neon branches cover the Neon side. - [AWS CloudFormation](https://cloudlesslabs.com/stack/aws-cloudformation/index.md): Never. I hate it. Pulumi does the same job with real code. - [AWS Database Migration Service](https://cloudlesslabs.com/stack/aws-dms/index.md): My default, database migrations. The only migration tool I use. It works. - [AWS IoT Core](https://cloudlesslabs.com/stack/aws-iot-core/index.md): Use when it fits (Proposed), device ingestion. The cheapest AWS front door for device data, when the devices speak MQTT. - [AWS Lambda](https://cloudlesslabs.com/stack/aws-lambda/index.md): My default, events and heavy compute. My default for event-driven work and heavy compute. Classic Lambda, zip-packaged, Node.js. - [AWS Organizations + IAM Identity Center](https://cloudlesslabs.com/stack/aws-organizations-identity-center/index.md): My default, accounts and access. Centralised accounts, billing and access. Every client gets this first. - [AWS Step Functions](https://cloudlesslabs.com/stack/aws-step-functions/index.md): Never. Over-engineered. I've never seen the need in production. - [Better Auth](https://cloudlesslabs.com/stack/better-auth/index.md): My default, authentication library, users in your postgres. My first pick for serious apps on Postgres. Your users live in your own database, it does more than Cognito, and it costs nothing… - [Claude Code](https://cloudlesslabs.com/stack/claude-code/index.md): My default, ai coding agent. My main tool. I haven't hand-written code in two years. - [Cloudflare AI Gateway](https://cloudlesslabs.com/stack/cloudflare-ai-gateway/index.md): Watching (Proposed), llm traffic control. Free caching, rate limits, spend caps and model fallback in front of OpenRouter. Works even from Lambda. - [Cloudflare D1](https://cloudlesslabs.com/stack/cloudflare-d1/index.md): Skip. The business case is thin, and there's no tooling to migrate thousands of databases. Durable Objects do per-tenant SQLite better. - [Cloudflare Durable Objects](https://cloudlesslabs.com/stack/cloudflare-durable-objects/index.md): Use when it fits, live shared state at the edge. A tiny server with its own SQLite database, addressed by name. One referee for everyone connected to the same thing. Unbeatable… - [Cloudflare Hyperdrive](https://cloudlesslabs.com/stack/cloudflare-hyperdrive/index.md): Skip. A Postgres connection pool for Workers only. My business logic isn't on Workers, so I don't need it. - [Cloudflare Queues](https://cloudlesslabs.com/stack/cloudflare-queues/index.md): Skip (Proposed). Fine when producer and consumer are both Workers. Inside AWS, SQS wins. - [Cloudflare R2](https://cloudlesslabs.com/stack/cloudflare-r2/index.md): Use when it fits (Proposed), public, high-egress storage. Zero egress fees. The answer for public files served at volume. Keep data lakes in S3. - [Cloudflare Sandbox](https://cloudlesslabs.com/stack/cloudflare-sandbox/index.md): Use when it fits, running untrusted and ai-written code. Where an AI product runs code nobody reviewed: an isolated container per session, started and driven from a Worker, billed only… - [Cloudflare static hosting](https://cloudlesslabs.com/stack/cloudflare-static-hosting/index.md): My default, websites, spas and pwas. Every website I run. Static builds deployed from GitHub on every push to main. Easy, reliable, nearly free. - [Cloudflare Tunnel (cloudflared)](https://cloudlesslabs.com/stack/cloudflare-tunnel/index.md): My default, safe public exposure. Expose a service on a private box through a custom domain, without opening a port. - [Cloudflare Turnstile](https://cloudlesslabs.com/stack/cloudflare-turnstile/index.md): My default, anti-bot for forms. Anti-bot for every form: a CAPTCHA replacement most visitors never notice, free and unlimited. With a Worker and Resend, it's a… - [Cloudflare Workers](https://cloudlesslabs.com/stack/cloudflare-workers/index.md): My default, edge primitive. The edge primitive. It sits between your users and your real backend, and it's very, very good at that. - [Cloudflare Workers AI](https://cloudlesslabs.com/stack/cloudflare-workers-ai/index.md): Skip (Proposed). The same open models cost about twice as much as on OpenRouter, and frontier models are capped at 20 requests a minute. - [Cost Explorer (with Claude Code)](https://cloudlesslabs.com/stack/aws-cost-explorer/index.md): My default, cost analysis. Where every cost investigation starts. I let Claude Code read it and find the culprit. - [Dashlane](https://cloudlesslabs.com/stack/dashlane/index.md): Use when it fits, password manager. Works, but glitchy. Looking for something more robust. - [DuckDB](https://cloudlesslabs.com/stack/duckdb/index.md): Use when it fits, embedded analytics engine. SQL over Parquet that runs anywhere, from my laptop to a Lambda. Next to Athena, not instead of it. - [Fargate scheduled tasks](https://cloudlesslabs.com/stack/aws-fargate-scheduled-tasks/index.md): Use when it fits, long-running jobs. Containers that run only while the job runs. The answer for a two-hour nightly job. - [GitHub](https://cloudlesslabs.com/stack/github/index.md): My default, code hosting. Code, notes and docs. Everything integrates with it first. - [GitHub Actions](https://cloudlesslabs.com/stack/github-actions/index.md): Use when it fits, ci/cd. The pipeline I'd pick if a project needs one. Today I deploy with Pulumi directly. - [GitLab, Bitbucket and Atlassian](https://cloudlesslabs.com/stack/gitlab-bitbucket-atlassian/index.md): Never. Mediocre. Never recommended. - [Google Cloud](https://cloudlesslabs.com/stack/google-cloud/index.md): Skip. Good products, not enterprise-complete enough for my clients. - [GraphQL and AppSync](https://cloudlesslabs.com/stack/aws-appsync/index.md): Never. Over-engineering. Schema maintenance isn't worth it; plain web APIs are enough. - [Hostinger VPS](https://cloudlesslabs.com/stack/hostinger-vps/index.md): My default, cheap always-on server. Unbeatable price for an always-on box. CPU caps and no serious GPUs. - [Jira, Asana, Monday.com and heavy project-management software](https://cloudlesslabs.com/stack/project-management-suites/index.md): Never. A waste of time for a lean team. - [Lambda container images](https://cloudlesslabs.com/stack/aws-lambda-container-images/index.md): Never. Worse cold starts, and they break Cognito triggers. I stopped using them. - [Lambda durable functions](https://cloudlesslabs.com/stack/aws-lambda-durable-functions/index.md): Watching (Proposed), durable multi-step jobs. Per-step retries in plain code, inside Lambda. A candidate fix for hand-tuned SQS retry pain. - [Lambda function URLs](https://cloudlesslabs.com/stack/aws-lambda-function-urls/index.md): My default, http front door for lambda. My favourite way to put Lambda on the internet. Every MVP starts here. - [Lambda Web Functions](https://cloudlesslabs.com/stack/aws-lambda-web-functions/index.md): Watching, http business logic, once in your region. A real Node.js web server on Lambda, billed on CPU used, 64 to 128 requests per environment. The future of HTTP business logic on… - [Microsoft Azure, Windows and the Microsoft stack](https://cloudlesslabs.com/stack/microsoft-azure/index.md): Never. Years as a certified .NET developer taught me enough: a black box that puts dollars ahead of transparency and developer… - [Neon (serverless Postgres)](https://cloudlesslabs.com/stack/neon/index.md): My default, default database. My go-to Postgres. Scales to zero, branches like git, and talks HTTP so Lambda needs no VPC or proxy. - [Netlify](https://cloudlesslabs.com/stack/netlify/index.md): Skip, web app platform. An excellent platform, built around one workflow (push, preview, ship, roll back), and where many AI-built sites already live. I… - [Next.js on Cloudflare Workers (OpenNext)](https://cloudlesslabs.com/stack/nextjs-on-workers/index.md): Use when it fits, server-rendered next.js. Server-rendered Next.js without Vercel. The OpenNext adapter runs a normal Next.js build on Workers: SSR, ISR, server actions… - [Node.js (plain JavaScript)](https://cloudlesslabs.com/stack/nodejs-javascript/index.md): My default, language. My default language. Best fit for the problem wins, but it's usually this. - [OpenAI Codex](https://cloudlesslabs.com/stack/openai-codex/index.md): My default, second ai agent. For computer control, images, and as an end-to-end test orchestrator. - [OpenRouter](https://cloudlesslabs.com/stack/openrouter/index.md): My default, llm access for client systems. One SDK, one key, every model. Usually cheaper than running the same open models elsewhere. - [pgvector](https://cloudlesslabs.com/stack/pgvector/index.md): My default, vectors in your app's database. Embeddings next to the data they describe, for when a user is waiting for the answer. - [Playwright, Vitest, pytest](https://cloudlesslabs.com/stack/testing/index.md): My default, testing. End-to-end and unit tests that agents can run and fix on their own. - [PostHog](https://cloudlesslabs.com/stack/posthog/index.md): My default, analytics. Product analytics, feature flags and session replay in one tool. - [Postmark](https://cloudlesslabs.com/stack/postmark/index.md): Skip. The best deliverability reputation, but no marketing platform, no idempotency and unsigned webhooks. I picked Resend. - [Pulumi](https://cloudlesslabs.com/stack/pulumi/index.md): My default, infrastructure as code. Infrastructure as real code. And it can use any Terraform provider, so nearly everything is provisionable from one codebase. - [Resend](https://cloudlesslabs.com/stack/resend/index.md): My default, transactional and marketing email. My email service. Transactional and marketing on one platform, built for developers and agents. - [Route 53 and Cloudflare DNS](https://cloudlesslabs.com/stack/dns/index.md): My default, dns. Whichever platform hosts the app. - [S3 + Glue + Athena](https://cloudlesslabs.com/stack/aws-athena-data-lake/index.md): Use when it fits, data lake. The data lake that works. Not amazing. Pair it with DuckDB. - [Savings Plans and Reserved Instances](https://cloudlesslabs.com/stack/aws-savings-plans/index.md): My default, cost. My main lever on AWS cost. AWS margins are high; commitments bring them down. - [Self-hosted MCP servers](https://cloudlesslabs.com/stack/mcp-servers/index.md): Use when it fits, agent integrations. Give agents safe, scoped access to client systems. I've started hosting my own. - [Slack](https://cloudlesslabs.com/stack/slack/index.md): Never. A distraction. Email and WhatsApp are enough. - [Stripe](https://cloudlesslabs.com/stack/stripe/index.md): My default, payments. Payments, mine and my clients'. - [Stryker mutation testing](https://cloudlesslabs.com/stack/stryker/index.md): My default, test quality. Tests for your tests. It mutates the code and checks your suite notices. - [Tailscale](https://cloudlesslabs.com/stack/tailscale/index.md): My default, private network access. Love it. Easy, secure access from my machines to private AWS resources. - [Terraform / OpenTofu](https://cloudlesslabs.com/stack/terraform/index.md): Use when it fits. Fine, and its providers power half of Pulumi's ecosystem. I prefer Pulumi. - [Trello](https://cloudlesslabs.com/stack/trello/index.md): Use when it fits, task board. Acceptable, if the cards stay minimal. - [TypeScript](https://cloudlesslabs.com/stack/typescript/index.md): Skip. I don't use it. Plain JavaScript and strong tests. - [Vercel](https://cloudlesslabs.com/stack/vercel/index.md): Skip, web app platform. An excellent platform, and its one workflow (push, preview, ship, roll back) is the real product. I skip it because my clients… ## The whole stack in one file - [The Stack, in one file](https://cloudlesslabs.com/stack/brief.md) (about 83 KB): every use case and every tool's verdict, conditions and pricing. For questions that compare many tools at once; for one job or one tool, the smaller files above are more precise. ## The Stack Weekly: what changed in cloud, edge and AI tech Each week's news, judged against The Stack: the problem it solves, the value, the risk, and what was skipped. - [Every edition](https://cloudlesslabs.com/weekly/index.md): newest first, with summaries - [Week 43: Lambda becomes a web server, and AI learns to just decide](https://cloudlesslabs.com/weekly/2026-w43/index.md), 19 October 2026: Six things worth your time from 12 to 18 October 2026. AWS finally lets one Lambda serve a whole web app (not in Sydney yet), a new kind of AI model answers yes-or-no questions for a sliver of an LLM's price, and Neon…