Every agent is the same ten decisions. Which harness runs the loop. Which model thinks. What stops it when a stranger feeds it a poisoned email. Make the choices here — or describe what you’re building and let the advisor make them — and leave with a setup script, a compose file and an AGENTS.md. A new agent, not a shortlist.
The advisor reads your description for the constraints that actually change the answer — regulated data, untrusted input, code execution, long-running work — and makes all ten choices. It is deterministic: no model call, no API key, and it will never invent a component that does not exist. Change anything it gets wrong.
The loop that runs your agent. Take one off the shelf, or skip it and write the loop yourself.
Where the tokens come from. A frontier API, a gateway you control, or your own GPUs.
The library you write orchestration in, when an off-the-shelf harness is not enough.
What the agent still knows tomorrow.
Your own corpus, made searchable.
Live information from outside your walls, in a shape a model can read.
How the agent acts inside other people's software, and who holds the token when it does.
Two halves, and you want both. Guardrails decide what the agent may say and do — injection defence, PII redaction, identity. Containment decides what holds when the guardrails do not: a kernel boundary around code it wrote, a default-deny boundary around everything it can reach. Egress control does not stop prompt injection; it removes the payout.
Traces of what it did, and a score for whether that was any good.
Where it runs, and whether it survives a restart.
# Agent stack build sheet Generated by newagent.build — 10 of 10 layers chosen. | Layer | Choice | Why it's here | Pricing | | --- | --- | --- | --- | | Harness | [Claude Code](https://claude.com/claude-code) | Anthropic's coding agent — terminal, IDE and SDK, with hooks, skills and MCP built in. | paid | | Model provider | [Anthropic](https://docs.claude.com/en/docs/about-claude/models) | Claude Opus, Sonnet and Haiku. Strong tool use and long-horizon agentic work. | usage-based | | Framework | [LangGraph](https://langchain-ai.github.io/langgraph/) | Graph-shaped orchestration with checkpointing, interrupts and human-in-the-loop. | open-source | | Memory | [Mem0](https://mem0.ai/) | Extracts durable facts from conversations and recalls them on the next turn. | freemium | | Retrieval | [pgvector](https://github.com/pgvector/pgvector) | Vector search inside the Postgres you already run. | open-source | | Web grounding | [Exa](https://exa.ai/) | Embeddings-native web search built for agents, with full-content retrieval. | freemium | | Tools & integrations | [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) | The open protocol for exposing tools and data to agents. The default answer. | open-source | | Security | [Llama Guard](https://www.llama.com/docs/model-cards-and-prompt-formats/llama-guard-3/) | Open-weight classifier for input and output safety. Runs wherever you run it. | open-source | | Observability & evals | [Langfuse](https://langfuse.com/) | Open-source tracing, prompt management and evals. Self-hostable in one compose file. | freemium | | Runtime & deploy | [Docker Compose](https://docs.docker.com/compose/) | One file, one box, everything local. The honest starting point. | open-source | ## Notes worth keeping - **Claude Code** — Configure via .claude/settings.json; drop reusable procedures in .claude/skills/. - **Anthropic** — Enable prompt caching on the system prompt and tool definitions — it is the single biggest cost lever. - **pgvector** — Correct default under roughly ten million vectors. Reach for a dedicated store when it stops being. - **MCP (Model Context Protocol)** — Write your integrations as MCP servers and every harness on this page can use them unchanged. - **Llama Guard** — Cheap first line: classify the user turn before it reaches the expensive model. - **Docker Compose** — The generated docker-compose.yml below is runnable as-is.
curl -fsSL "https://newagent.build/api/stack?harness=claude-code&model=anthropic&framework=langgraph&memory=mem0&retrieval=pgvector&search=exa&tools=mcp&security=llama-guard&observability=langfuse&runtime=docker-compose&format=sh" | sh
Every page here answers to Accept: text/markdown and returns the same content at roughly a tenth the tokens. No separate site, no toggle — same URL.
curl -s -H "Accept: text/markdown" https://newagent.build/