open source · prompt infrastructure

Prompts are code.
Treat them like it.

An open-source prompt infrastructure toolkit that lets you version, update, and govern prompts in production, eliminating the need to hardcode prompts or redeploy your application for prompt changes.

sql_generator.tmplv3 · live
template
System: You are a SQL expert.
Query to {{ .task }}:
sdk call
import px0

client = px0.ApiClient(px0.Configuration())
renders_api = px0.PromptRendersApi(client)
response = renders_api.render_live(
    slug="sql_generator",
    render_request=px0.RenderRequest(
        variables={"task": "list active users"}
    )
)
import {
  Configuration,
  PromptRendersApi
} from "@px0-ai/px0";

const rendersApi = new PromptRendersApi(
  new Configuration()
);
const response = await rendersApi.renderLive(
  "sql_generator",
  { variables: { task: "list active users" } }
);
import "github.com/px0-ai/px0-go"

client := px0.NewAPIClient(
  px0.NewConfiguration(),
)

req := px0.NewRenderRequest()
req.SetVariables(map[string]interface{}{
  "task": "list active users",
})

res, _, _ := client.PromptRendersAPI.
  RenderLive(nil, "sql_generator").
  RenderRequest(*req).
  Execute()

// what px0 gives you

Prompt Registry

⛨ vpc

Self-Hosted & Private

Deploy in your own cloud, VPC, or on-premises. Retain absolute ownership of your templates, data, and access controls for compliance.

on-prem · vpc
". ."

No Hardcoded Strings

Prompt text lives in version-controlled templates, not scattered across your codebase. No more grep-and-replace to update a prompt.

zero hardcoding
∅ ci

Deploy-Free Updates

Push a new template version and it goes live instantly. No PR, no build pipeline, no service restart required.

instant rollout
sdk

5-Line Integration

One render() call, same API across Python, Node, and Go. Swap the template name, never touch calling code again.

python · node · go
{ }

Easy Templating

Write prompts as code: variables, conditionals, loops, filters, macros. Sandboxed rendering. No more concatenated strings.

easy · sandboxed
v1 v2 v3

Atomic Versioning

Published versions are immutable. Go-live is atomic, no partial deployments. Roll back to any version in one operation.

immutable · diff
🔒 rbac

Team-Level RBAC

Role-based access control and granular team permissions. Define policies for who can view, edit, draft, or publish prompt templates.

granular access
≡ Δ

Draft & Review

Draft - Review - Publish workflow. Visual diff between any two versions. Comprehensive change tracking of every edit and revision.

change review
◎ otel

OTEL Observability

Every render is traced and measured. Push rendering latency, performance, and error metrics to any OpenTelemetry-compatible backend.

otel · metrics
new feature · prompt execution

// execute templates instantly

Don't Just Render. Run Prompts.

px0 now supports native prompt execution, allowing you to invoke prompts directly. px0 handles template interpolation, retrieves versioned parameters, routes requests to upstream LLMs, and standardizes streaming under a single unified protocol.

Multi-Provider Routing

Swap models (OpenAI, Anthropic, Gemini, DeepSeek, Groq, OpenRouter) with unified naming prefixes (e.g., anthropic/claude-3) without updating application code.

Unified SSE Streaming

A single streaming parser format for your frontend. No more managing provider-specific stream chunk formats or parsing logic.

Ad-Hoc In-Flight Overrides

Prototype instantly. Override active models, temperatures, and key variables on-the-fly directly within individual execution requests.

// extend agent capabilities

Skill Registry

📁 files

Multi-File Workspaces

Every skill version maintains a complete, structured file tree. Edit individual code files or configure assets in-place, or upload/download ZIP packages of your entire codebase.

git-like workspace
↗ status

Promotion Pipelines

Promote skills across safe operational stages: draft → stable → live. Easily manage promotion flows and demote/archive older logical versions seamlessly.

draft · stable · live
🔒 lock

Immutable Snapshots

All active and stable skill versions are completely frozen. Guarantee 100% predictable and drift-free runtime execution in production environments.

zero behavioral drift
⎘ copy

Instant Branching

Instantly duplicate any version's entire file tree to a new draft. Safely experiment, debug, or implement new logic without affecting live skills.

duplicate & branch
✍ render

Skill Template Rendering

Render skill code templates dynamically with sandboxed Jinja support. Inject system state, custom parameters, and real-time environment variables prior to execution.

sandboxed rendering
⚡ zip

Multipart ZIP Uploads

Provision skill runtimes in bulk. Bundle your script directories, packages, and custom configuration schemas into a single ZIP file and upload.

bulk provisioning

// manage schema evolution

Tool Registry

{} schema

JSON Schema Definitions

Specify precise input parameters and expected output structures using JSON Schema specifications. Guarantee perfect validation and type safety.

input & output schemas
👁 discover

Dynamic LLM Discovery

Expose rich, structured metadata for LLM orchestration systems. Allow models to discover, select, and execute tools dynamically based on context.

orchestration ready
↗ pipeline

Promotion Pipelines

Evolve your tool schemas safely through standard promotion flows: draft → stable → live. Prevent breaking active production callers.

draft · stable · live
🔒 frozen

Zero-Drift Execution

All active and stable tool schemas are completely immutable. Ensure production agents and model runtimes always execute against frozen definitions.

immutable versions
⌨ console

Dual Control Planes

Manage your tool registry programmatically via clean REST APIs, or visually using the intuitive, developer-friendly px0 Web Console.

api & web console
⎘ rollback

Atomic Rollbacks

Promoting a tool version to live automatically demotes any previously active version. Instantly roll back schemas with a single API call.

one-click demotion