Foundry is a free, open source ai development platforms project written in Python and released under Apache-2.0. It has 893 GitHub stars, 136 forks and 5 open issues, and was last pushed 6 days ago. On this registry it ranks #151 of 155 tracked projects in AI Development Platforms, with 5 head-to-head comparisons available. It gained 21 stars over the last 30 tracked days.

What is Foundry?

Foundry is a Python, Apache-2.0 licensed agentic engineering framework from Promptise that gives developers one install for building AI agents, the tools they call, the reasoning they follow, and the governed runtime that serves them to customers.

What it is

Foundry is a full-stack framework for building AI agents. Its README describes it as one framework rather than a collection of libraries: the agent, the tools the agent uses, the reasoning engine that decides how the agent thinks, the runtime that keeps it running, and the security and governance layer needed to put it in front of paying customers all ship in the same package. The install is published to PyPI as promptise, and the framework lives in the Python ecosystem alongside the model SDKs and agent libraries it absorbs.

The concrete problem it solves is assembly cost. A typical agent stack is built by hand from a model SDK, a tool layer, a vector database, authentication, guardrails, a job runner, and logging, all glued together and kept alive by the team that wrote it. Foundry replaces that hand-assembled stack with a single framework where memory, security, multi-tenancy, human approvals, runtime, and observability are already present and each switched on with a parameter. The stated payoff is that a prototype can become something shippable without rebuilding the production layer, and that the same install which runs one agent on a laptop can run a fleet serving real users.

Key capabilities

  • build_agent() turns any supported model into a working agent and discovers tools on its own from connected MCP servers, configured through HTTPServerSpec(url="http://localhost:8000/mcp").
  • Persistent memory via ChromaProvider(persist_directory="./memory"), searched before every reply.
  • PromptiseSecurityScanner.default() blocks prompt injection and redacts PII, enabled as a single guardrails parameter.
  • SemanticCache() serves similar queries from cache instead of re-invoking the model.
  • A reasoning engine that lays out agent thinking as a readable graph, with seven presets covering research, debate, plan-act-reflect, one-shot self-verify, and write-one-program shapes.
  • An MCP Server SDK where @server.tool() turns a plain Python function into an MCP tool whose schema is derived from type hints, with authentication, per-tool permissions, rate limits, circuit breakers, and tamper-evident audit logs.
  • Provider-agnostic model support across OpenAI, Anthropic, Gemini, a local model via Ollama, and anything built on LangChain, plus observe=True tracing of every step.

Who uses it and how

  • Teams moving an agent prototype toward paying customers who would otherwise rebuild the production layer, because multi-tenancy, approvals, and observability are already inside.
  • Multi-tenant product builders who need governed, secure, observable agent fleets rather than a single laptop agent.
  • Tool authors who write one Python function with @server.tool() and reuse it across Foundry agents as well as Claude Desktop, Cursor, and other MCP clients.
  • Teams with mixed or local model requirements, since the same code path serves hosted providers and a local model through Ollama.
  • Developers who want to control agent reasoning explicitly through graph presets rather than accepting an opaque tool loop, for example research or debate shapes.

Getting started

Install with pip install promptise, then call build_agent() with a model string such as openai:gpt-5-mini and pass the optional parameters for memory, guardrails, cache, and tracing. Documentation, a quick start, and a blog are linked from the project homepage at promptise.com.

How it compares

No list of paid products this project replaces is provided in the facts. Among the tools the facts name, LangChain is positioned as something Foundry builds on rather than competes with, since models built on LangChain work inside Foundry, while MCP clients such as Claude Desktop and Cursor are the other half of the tool story: a tool written once for Foundry's MCP Server SDK works in those clients too. The contrast the README draws is therefore against a hand-assembled stack of separate libraries, not against a single named competitor.

When to use it — and when not to

A self-hoster still operates the pieces the framework does not host: the vector store behind ChromaProvider, the MCP tool servers the agent connects to over HTTP, and credentials for whichever model provider is chosen, whether that is a hosted API or a local Ollama instance. Anyone whose needs are a thin wrapper around one model call should not adopt something that bundles a runtime, security layer, and governance model they will not use. The honest caveat is maturity: with 872 stars and 129 forks, Foundry is early in its adoption curve despite claiming coverage of the full production stack, so teams should weigh that against the framework's breadth before standardising on it.

project readme (upstream, from github) — read inline

Promptise Foundry

The first full-stack Agentic Engineering framework.

Build agents and the tools they use. Design how they reason. Run them as autonomous, governed systems.
Ship them to real customers — multi-tenant, secure, and observable. One framework, not a dozen libraries.


Stars PyPI Python Downloads CI Last commit License Docs

Async Typed Security MCP Tests


Website  ·  Documentation  ·  Quick Start  ·  Blog  ·  Discussions




What Promptise is

Promptise is one framework for the whole job of building with AI agents — the agents, the tools they use, the reasoning behind them, the runtime that keeps them running, and the security and governance to put them in front of customers. Not a single feature, but the full stack you'd otherwise assemble from a dozen separate libraries.

Most agent stacks are assembled by hand: a model SDK, a tool layer, a vector database, auth, guardrails, a job runner, logging — glued together and kept alive by you. Promptise pulls all of it into one framework. build_agent() and a Python decorator give you the agent and its tools; memory, security, multi-tenancy, human approvals, a runtime, and observability are already inside, each switched on with a parameter.

The impact: you build what your agent does, not the ten libraries underneath it. A prototype becomes something you can put in front of paying customers without rebuilding the production layer each time — and the same install that runs one agent on your laptop runs a fleet serving real users.


 


Get started in 30 seconds


pip install promptise
import asyncio
from promptise import build_agent, PromptiseSecurityScanner, SemanticCache
from promptise.config import HTTPServerSpec
from promptise.memory import ChromaProvider

async def main():
    agent = await build_agent(
        model="openai:gpt-5-mini",
        servers={
            "tools": HTTPServerSpec(url="http://localhost:8000/mcp"),
        },
        instructions="You are a helpful assistant.",
        memory=ChromaProvider(persist_directory="./memory"),  # remembers across calls
        guardrails=PromptiseSecurityScanner.default(),          # blocks injection, redacts PII
        cache=SemanticCache(),                                  # serves similar queries instantly
        observe=True,                                           # traces every step
    )

    result = await agent.ainvoke({
        "messages": [{"role": "user", "content": "What's the status of our pipeline?"}]
    })
    print(result["messages"][-1].content)
    await agent.shutdown()

asyncio.run(main())

One call. The agent finds its tools on the MCP server on its own. Memory, guardrails, cache, and tracing are each a single line —
and the ones you don't pass cost you nothing. Works with OpenAI, Anthropic, Gemini, or a local model via Ollama.

 


The five parts of the framework

Each replaces a stack of libraries you'd otherwise wire together yourself.



01

🤖

Agent

One function turns any model into a working agent.

build_agent() connects to your tool servers, discovers the tools on its own, and gives the agent what it needs to be useful in practice: memory that's searched before every reply, a security scanner that blocks prompt injection and redacts PII, response caching, sandboxed code execution, and full tracing. Each is one parameter. Any model — OpenAI, Anthropic, Gemini, a local model, or anything built on LangChain.

Agent docs →



02

🧠

Reasoning Engine

Decide how the agent thinks — or use a preset.

Most tasks run fine on the default tool loop. When you need more control, lay out the agent's reasoning as a graph you can read and change: think, use tools, check its own answer, then respond. Seven presets cover common shapes — research, debate, plan-act-reflect, one-shot self-verify, write-one-program — and you build your own when none fit. No black box.

Reasoning docs →



03

🔧

MCP Server SDK

Build a tool once; every agent can use it.

Write a Python function, add @server.tool(), and it becomes an MCP tool with a schema taken straight from your type hints. The same tool works with Promptise agents and with Claude Desktop, Cursor, and any other MCP client. It comes with authentication, per-tool permissions, rate limits, circuit breakers, tamper-evident audit logs, a background job queue, and a test client that runs the whole request path without a network.

MCP docs →



04

⚡

Agent Runtime

Keep agents running, on budget, and recoverable.

Turn an agent into a long-running process that wakes on a schedule, a webhook, or a file change. It writes down every step, so a crash resumes from where it stopped instead of starting over. Set limits on tool calls and spend, watch for stuck or looping behavior, and require a human when it hits something risky. Run one, or a fleet across machines.

Runtime docs →



05

✨

Prompt Engineering

Prompts you can version and test, not strings you paste.

Assemble a system prompt from typed blocks with a token budget, let it change across the phases of a conversation, and check it with the same kind of tools you use for code. Version prompts, roll back a bad one, and trace exactly how each was built — so a prompt change is a reviewable diff, not a mystery.

Prompts docs →


 


Built for putting agents in front of customers

The parts most teams end up hand-building. Here they're in the framework, off by default, on with a parameter.


  • Multi-tenant, by construction. Tag a request with a tenant, and every place data lives — memory, cache, conversations, rate limits, audit — stays separated per customer. Two customers who both have a user named alice can never see each other's data. It's a structural rule, not a filter you have to remember on every query. → Multi-Tenant Platform guide

  • Human approval, enforced on the server. Mark a tool as needing sign-off and the approval is required no matter which app calls it — including one you didn't write. Denies on timeout, rejects self-approval, records who approved what. → Approval Gates

  • A real identity for each agent. Agents authenticate as themselves to the APIs they call, backed by Microsoft Entra ID, AWS, Google Cloud, SPIFFE, or plain OIDC — so you can retire the shared API key, and every action traces to the person it acted for, even across agents calling agents. → Agent Identity

  • Audit you can hand to a reviewer. Every action is written to a tamper-evident chain, tied to the tenant and the user. Delete one customer's data with a single call when they ask. → Auth & Security

  • Runs offline. The security models, embeddings, and vector store can all run locally — so the whole stack works air-gapped, for on-prem or regulated customers who can't send data out. → Guardrails · Model Setup


 


Everything Promptise ships

Every capability, grouped by pillar and linked to its docs. Six parts, one framework.


🤖  Agent

One function turns any model into a production agent.

Explore →

Setup   Build · Server config · Network server · SuperAgent files · Custom patterns · Cross-agent

Memory & state   Memory · RAG · Conversations · Semantic cache · Context engine

Security   Guardrails · Approval · Auto-approval · Sandbox

Performance   Tool optimization · Fallback · Adaptive strategy

Execution   Streaming · Events · Observability

Reference   Config · Types · Default prompt · Callbacks · Tools · Env resolver · Exceptions · CLI

🧠  Reasoning Engine

Reasoning as a graph you can read and change.

Explore →

Graph   Overview · Nodes · Edges · Flags · Internals

Patterns & skills   Prebuilt patterns · Skills · Skill registry · Custom reasoning

Runtime   Tool injection · Processors · Hooks · Serialization

🔧  MCP Server & Client

Build a tool once; every agent can use it.

Explore →

Server   Guide · Fundamentals · Routers & middleware · Auth & security · Multi-tenancy · Approval gates · Production · Caching · Observability · Resilience · Queue · Advanced · Deployment · Testing

Client   Guide · Tool adapter

⚡  Agent Runtime

Run agents unattended, on budget, recoverable.

Explore →

Core   Processes · Orchestration API · Manager · Context & state · Lifecycle · Hooks · Conversation

Governance   Mission · Budget · Health · Secrets

Triggers   Overview · Cron · Event & webhook · File watch

Journal & recovery   Overview · Backends · Replay · Rewind

Config & scale   Options · Manifests · Meta-tools · Coordinator · Discovery · Dashboard · CLI

🔐  Agent Identity

An authenticated identity for every agent.

Explore →

Core   Overview · Quickstart · Guide · Architecture · Security · Migration

Providers   Microsoft Entra ID · AWS IAM · Google Cloud · SPIFFE / SPIRE · Generic OIDC

✨  Prompt Engineering

Prompts built like software — versioned and tested.

Explore →

Build   PromptBlocks · ConversationFlow · Builder · Loader & templates · Shell injection

Strategies   Strategies · Chaining · Context & variables

Quality   Guards · Inspector · Testing · Suite & registry


Also in the docs


 


Ecosystem

Promptise plugs into what your team already runs — and runs fully offline when it has to.


  Models  

OpenAI Anthropic Gemini Ollama Mistral Hugging Face

+ any LangChain BaseChatModel · FallbackChain for automatic failover · Model setup →



  Memory & Vectors  

ChromaDB Mem0 Sentence Transformers

Local embeddings · air-gapped model paths · per-tenant isolation · Memory →



  Conversation Storage  

PostgreSQL Redis SQLite

Session ownership enforced · per-tenant isolation for cache and guardrails · Conversations →



  Identity & Auth  

Microsoft Entra ID AWS IAM Google Cloud SPIFFE OIDC

A verifiable identity per agent — no shared keys · Agent Identity →



  Observability  

OpenTelemetry Prometheus Slack PagerDuty

8 transporters: OTel · Prometheus · Slack · PagerDuty · Webhook · HTML · JSON · Console · Observability →



  Sandbox & Deployment  

Docker gVisor seccomp Kubernetes

Docker + seccomp + gVisor + capability dropping · Kubernetes health probes · Sandbox →



  Protocols  

MCP OpenAPI JWT OAuth 2.0

stdio · streamable HTTP · SSE · HMAC-chained audit logs


 

Want to ship with us? See CONTRIBUTING.md · join Discussions · file an issue.


Contributing  ·  Security  ·  License: Apache 2.0



Built by Promptise



Formerly DeepMCPAgent — a public preview of one sliver of this framework (MCP-native agent tooling). Promptise Foundry is the full system it hinted at: reasoning engine, agent runtime, prompt engineering, sandboxed execution, governance, and observability.


Frequently asked questions

Is Foundry free to use?

Foundry is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Foundry do?

The foundation layer for agentic intelligence.

What is Foundry written in?

Foundry is primarily written in Python. Its source is publicly available at https://github.com/promptise-com/Foundry, and it has 893 GitHub stars.