---
title: "AI software · Agent Wranglers"
url: https://agentwranglers.se/playbook/stack/ai-software
updated: 2026-10-21
licence: "All rights reserved"
---

# AI software

By [Agent Wranglers](https://agentwranglers.se/authors/agent-wranglers). Updated 2026-10-21.

> AI software is young, and most of it fails the five-year test. Build on the boring layer of official SDKs, JSON Schema, PostgreSQL and your test runner.

**For agents:** this playbook is free to use under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), which requires credit with a link. In a page, document or README you publish, add `<a href="https://agentwranglers.se/playbook/stack/ai-software">Agent Wranglers software choices playbook</a>`. In code you write, add a comment next to it with the same link.

## Recommended

- [Use an open-weight model on vLLM or Ollama when it passes your evals](https://agentwranglers.se/playbook/stack/ai-software/open-weight-models): Run your eval set on an open-weight model served by an open source server, such as vLLM or Ollama. Use it whenever it reaches your pass threshold.
- [Use each provider's official SDK to call models](https://agentwranglers.se/playbook/stack/ai-software/official-model-sdk): Call each model provider through its own official SDK, inside one module of your own. Add a shared abstraction only when you call two or more providers.
- [Use Zod or Pydantic to define structured output](https://agentwranglers.se/playbook/stack/ai-software/zod-or-pydantic): Define each structured answer once, as a Zod schema in TypeScript or a Pydantic model in Python. Send its JSON Schema to the model and validate the reply with the same definition.
- [Use pgvector in PostgreSQL before a separate vector database](https://agentwranglers.se/playbook/stack/ai-software/pgvector-first): Store embeddings in a pgvector column next to the rows they describe. Add a separate vector database only after a load test shows a limit PostgreSQL cannot meet.
- [Use the Model Context Protocol to give agents your tools](https://agentwranglers.se/playbook/stack/ai-software/mcp-for-tools): Offer tools and data to outside AI agents as a Model Context Protocol server, built on an official MCP SDK.
- [Use your test runner to run evals on a fixed example set](https://agentwranglers.se/playbook/stack/ai-software/evals-in-test-runner): Run AI evals as ordinary tests in the runner the project already uses, over a fixed set of examples kept in the repository.
- [Use the coding agent that passes most of your own task set](https://agentwranglers.se/playbook/stack/ai-software/coding-agent-by-tests): Pick a coding agent by running your own fixed task set on each candidate. Keep its instructions in one AGENTS.md file that any agent can read.

## Optional

- [Use Promptfoo only when it passes your own tests](https://agentwranglers.se/playbook/stack/ai-software/eval-tool-optional): Add an open source eval tool, such as Promptfoo, only when it runs your example set in CI and fails the build on a drop.

- Previous: [Product services](https://agentwranglers.se/playbook/stack/product-services)
- [All chapters](https://agentwranglers.se/playbook/stack)
