Software choices checklist
Every rule in the software choices playbook, by chapter, required rules first. Each links to its own page with how we built it and how to check it.
How to choose
- Required Pick software that still ships releases
- Required Prefer open source and pay only when nothing open does the job
- Required Keep an open licence or a way out
- Recommended Pick software proven in production for five years
- Recommended Pick what most teams already use
- Recommended Pick what AI tools already know
- Recommended Pick software a new developer learns alone
- Recommended Keep one tool for each job
Languages and runtimes
- Required Open source Use Node.js on an LTS line
- Recommended Open source Use TypeScript for web apps and APIs
- Recommended Open source Use Python for data work and as a second server language
- Recommended Open source Use npm with a lock file for JavaScript packages
- Recommended Open source Use pip and a virtual environment for Python packages
- Recommended Learn SQL and write it with parameters
- Avoid Leave runtimes that are out of support
- Avoid Leave Yarn Classic
Web frameworks
- Required Open source Use Zod or Pydantic to check every input
- Recommended Open source Use React for the front end
- Recommended Open source Use Vite to build and serve the front end
- Recommended Open source Use Next.js when React pages need a server
- Recommended Open source Use Express for a Node.js server
- Recommended Open source Use Django for a Python web app
- Recommended Open source Use plain CSS before adding a CSS framework
- Optional Open source Use FastAPI for a Python API
- Avoid Avoid Create React App
- Avoid Avoid AngularJS
Databases and storage
- Recommended Open source Use PostgreSQL for the main database
- Recommended Open source Use SQLite for a small or embedded database
- Recommended Open source Use Redis 8 or Valkey for caches and queues
- Recommended Open source Use a mature ORM for database code
- Recommended Open source Use the migration tool that comes with your ORM
- Recommended Open source Use PostgreSQL search first and OpenSearch when it falls short
- Recommended Open source Use the S3 API for files and SeaweedFS to host them
- Recommended Open source Use BullMQ or RQ for background jobs
- Avoid Source available Avoid MongoDB as the default database
- Avoid Open source Avoid the MinIO community edition
Testing and code quality
- Recommended Open source Use pytest for Python tests
- Recommended Open source Use Jest for JavaScript unit tests
- Recommended Open source Use Playwright for browser tests
- Recommended Open source Use axe-core for accessibility tests
- Recommended Open source Use ESLint and Prettier for JavaScript code
- Recommended Open source Use Ruff to lint and format Python
- Recommended Open source Use TypeScript in strict mode
- Recommended Open source Use Pyright to check Python types
- Recommended Open source Use Renovate for dependency updates
- Avoid Avoid Karma, Protractor and TSLint
Delivery and infrastructure
- Recommended Free tier Use Git on GitHub for version control and code hosting
- Recommended Free tier Use GitHub Actions for continuous integration
- Recommended Open source Use Docker and Docker Compose for containers
- Recommended Open source Use OpenTofu for infrastructure as code
- Recommended Open source Use Ubuntu LTS or Debian stable on servers
- Recommended Open source Use nginx or Caddy as the web server and reverse proxy
- Recommended Free service Use Let's Encrypt for TLS certificates
- Recommended Free tier Use a managed DNS and CDN that exports your zone
- Recommended Open source Use SOPS for secrets
- Avoid Avoid HashiCorp tools under the Business Source License for new work
Operations tools
- Recommended Open source Use OpenTelemetry to instrument your code
- Recommended Open source Use Prometheus for metrics
- Recommended Open source Use Grafana for dashboards
- Recommended Open source Use JSON logs and Loki to store them
- Recommended Open source Use GlitchTip for error tracking
- Recommended Open source Use Uptime Kuma on another provider for uptime checks
- Recommended Paid Use PagerDuty for paging and keep schedules as code
- Recommended Open source Use pg_dump and pgBackRest for Postgres backups
- Optional Source available Use Sentry only for features GlitchTip lacks
- Avoid Avoid paging tools that are shutting down
Product services
- Recommended Paid Use Stripe for payments
- Recommended Paid Use Amazon SES to send transactional email
- Recommended Open source Use SimpleWebAuthn or py_webauthn for passkeys
- Recommended Open source Use Keycloak when you need a sign-in server
- Recommended Open source Use the Web Push standard for browser push
- Recommended Free service Use Firebase Cloud Messaging for Android and Apple app push
- Recommended Paid Use Twilio to send text messages
- Optional Open source Use Plausible for analytics without cookies
- Avoid Avoid handling card numbers yourself
- Avoid Avoid writing your own password and token code
AI software
- Recommended Open source Use an open-weight model on vLLM or Ollama when it passes your evals
- Recommended Paid Use each provider's official SDK to call models
- Recommended Open source Use Zod or Pydantic to define structured output
- Recommended Open source Use pgvector in PostgreSQL before a separate vector database
- Recommended Open source Use the Model Context Protocol to give agents your tools
- Recommended Open source Use your test runner to run evals on a fixed example set
- Recommended Open source Use the coding agent that passes most of your own task set
- Optional Open source Use Promptfoo only when it passes your own tests
Show the badge on your project
When your project passes every Required rule, you can show this badge on your site or in your README. It links to this checklist, so anyone can run the same checks.
<a href="https://agentwranglers.se/playbook/stack/checklist"><img src="https://agentwranglers.se/badge.svg" alt="Checked against the Agent Wranglers software choices playbook" width="214" height="20"></a>
[](https://agentwranglers.se/playbook/stack/checklist)
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. Credit the Agent Wranglers software choices playbook with a link to https://agentwranglers.se/playbook/stack/checklist. Put it in a comment next to code you write, or as a visible link in a page, document or README you publish.