# Every tool in The Stack, A to Z

> All 79 tools Nicolas Dao (Cloudless Labs, Sydney) has a verdict on, from his defaults to what he would never use. Each link is the tool's full entry: when to use it and when not, pricing, gotchas with fixes, provisioning and alternatives.

- Web page: https://cloudlesslabs.com/stack/tools/

- [Amazon CloudFront](https://cloudlesslabs.com/stack/aws-cloudfront/index.md): Use when it fits. Storage and delivery, 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. Observability, 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. Accounts, identity and cost, 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 monthly users. For serious apps on Postgres, Better Auth comes first.
- [Amazon Data Firehose](https://cloudlesslabs.com/stack/aws-firehose/index.md): My default. APIs, queues and events, 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. Data, key-value and document database. 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. APIs, queues and events, 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. APIs, queues and events, high-throughput streaming. For genuinely huge streams. It gets expensive fast.
- [Amazon OpenSearch](https://cloudlesslabs.com/stack/aws-opensearch/index.md): Skip. Data, search and log analytics engine. Overkill for most apps. Postgres full-text plus pgvector covers search.
- [Amazon Pinpoint](https://cloudlesslabs.com/stack/aws-pinpoint/index.md): Never. Email. 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. Storage and delivery, object storage. No complaints. Storage, data lake, archive.
- [Amazon S3 Vectors](https://cloudlesslabs.com/stack/aws-s3-vectors/index.md): Use when it fits. AI, 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, 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. APIs, queues and events, 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. APIs, queues and events, 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. AI, claude models, by the token. 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. APIs, queues and events, 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. Edge, 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, and owned by Cloudflare, so Workers is its home.
- [Aurora PostgreSQL](https://cloudlesslabs.com/stack/aws-aurora/index.md): Use when it fits. Data, 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. Accounts, identity and cost, backups. Central backup policies for AWS resources. Neon branches cover the Neon side.
- [AWS CloudFormation](https://cloudlesslabs.com/stack/aws-cloudformation/index.md): Never. Infrastructure as code. 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. Data, 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: research-backed, not yet confirmed by Nic). APIs, queues and events, 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. Compute, 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, identity and cost, 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. APIs, queues and events. Over-engineered. I've never seen the need in production.
- [Better Auth](https://cloudlesslabs.com/stack/better-auth/index.md): My default. Accounts, identity and cost, 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 per user.
- [Claude Code](https://cloudlesslabs.com/stack/claude-code/index.md): My default. Build and test, 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: research-backed, not yet confirmed by Nic). AI, 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. Data, sqlite databases for workers. 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. Edge, 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 for live, shared, short-lived state.
- [Cloudflare Hyperdrive](https://cloudlesslabs.com/stack/cloudflare-hyperdrive/index.md): Skip. Data, database connection pool for workers. 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: research-backed, not yet confirmed by Nic). APIs, queues and events, queues between workers. 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: research-backed, not yet confirmed by Nic). Storage and delivery, 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. AI, 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 for the CPU it actually uses.
- [Cloudflare static hosting](https://cloudlesslabs.com/stack/cloudflare-static-hosting/index.md): My default. Storage and delivery, 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. Networking and hosting, 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. Edge, 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 contact form with no form service at all.
- [Cloudflare Workers](https://cloudlesslabs.com/stack/cloudflare-workers/index.md): My default. Edge, 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: research-backed, not yet confirmed by Nic). AI, open models on cloudflare's gpus. Many of the same open models cost up to twice as much as on OpenRouter, and the newest 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. Accounts, identity and cost, 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. Business tools, password manager. Works, but glitchy. Looking for something more robust.
- [DuckDB](https://cloudlesslabs.com/stack/duckdb/index.md): Use when it fits. Data, 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. Compute, 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. Build and test, 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. Infrastructure as code, 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. Build and test, code hosting and team tools. Mediocre. Never recommended.
- [Google Cloud](https://cloudlesslabs.com/stack/google-cloud/index.md): Skip. Platforms, cloud platform. Good products, not enterprise-complete enough for my clients.
- [GraphQL and AppSync](https://cloudlesslabs.com/stack/aws-appsync/index.md): Never. APIs, queues and events. 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. Networking and hosting, 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. Business tools. A waste of time for a lean team.
- [Lambda container images](https://cloudlesslabs.com/stack/aws-lambda-container-images/index.md): Never. Compute. 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: research-backed, not yet confirmed by Nic). APIs, queues and events, 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. APIs, queues and events, 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. Compute, 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 AWS. Not in Sydney yet.
- [Microsoft Azure, Windows and the Microsoft stack](https://cloudlesslabs.com/stack/microsoft-azure/index.md): Never. Platforms. Years as a certified .NET developer taught me enough: a black box that puts dollars ahead of transparency and developer experience. Only worth a mention if it's 10–100x better.
- [Neon (serverless Postgres)](https://cloudlesslabs.com/stack/neon/index.md): My default. Data, 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. Platforms, web app platform. An excellent platform, built around one workflow (push, preview, ship, roll back), and where many AI-built sites already live. I skip it because my clients are enterprises and need far more backend than a web platform covers.
- [Next.js on Cloudflare Workers (OpenNext)](https://cloudlesslabs.com/stack/nextjs-on-workers/index.md): Use when it fits. Edge, 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, middleware and image optimisation.
- [Node.js (plain JavaScript)](https://cloudlesslabs.com/stack/nodejs-javascript/index.md): My default. Build and test, 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. Build and test, 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. AI, 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. AI, 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. Build and test, 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. Business tools, analytics. Product analytics, feature flags and session replay in one tool.
- [Postmark](https://cloudlesslabs.com/stack/postmark/index.md): Skip. Email, transactional email. 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 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. Email, 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. Networking and hosting, dns. Whichever platform hosts the app.
- [S3 + Glue + Athena](https://cloudlesslabs.com/stack/aws-athena-data-lake/index.md): Use when it fits. Data, 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. Accounts, identity and cost, 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. AI, 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. Business tools. A distraction. Email and WhatsApp are enough.
- [Stripe](https://cloudlesslabs.com/stack/stripe/index.md): My default. Business tools, payments. Payments, mine and my clients'.
- [Stryker mutation testing](https://cloudlesslabs.com/stack/stryker/index.md): My default. Build and test, 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. Networking and hosting, 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. Infrastructure as code. 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. Business tools, task board. Acceptable, if the cards stay minimal.
- [TypeScript](https://cloudlesslabs.com/stack/typescript/index.md): Skip. Build and test, typed javascript. I don't use it. Plain JavaScript and strong tests.
- [Vercel](https://cloudlesslabs.com/stack/vercel/index.md): Skip. Platforms, 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 are enterprises: most of their work happens in the backend, and I need all of AWS behind it.

## Related

- [Every layer](https://cloudlesslabs.com/stack/layers/index.md)
- [Every use case](https://cloudlesslabs.com/stack/use-cases/index.md)
- [Map of every Markdown file on cloudlesslabs.com, with what each one answers](https://ask.cloudlesslabs.com)
