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.
System: You are a SQL expert. Query to {{ .task }}:
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
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 · vpcNo Hardcoded Strings
Prompt text lives in version-controlled templates, not scattered across your codebase. No more grep-and-replace to update a prompt.
zero hardcodingDeploy-Free Updates
Push a new template version and it goes live instantly. No PR, no build pipeline, no service restart required.
instant rollout5-Line Integration
One render() call, same API across Python, Node, and Go. Swap the template name, never touch calling code again.
python · node · goEasy Templating
Write prompts as code: variables, conditionals, loops, filters, macros. Sandboxed rendering. No more concatenated strings.
easy · sandboxedAtomic Versioning
Published versions are immutable. Go-live is atomic, no partial deployments. Roll back to any version in one operation.
immutable · diffTeam-Level RBAC
Role-based access control and granular team permissions. Define policies for who can view, edit, draft, or publish prompt templates.
granular accessDraft & Review
Draft - Review - Publish workflow. Visual diff between any two versions. Comprehensive change tracking of every edit and revision.
change reviewOTEL Observability
Every render is traced and measured. Push rendering latency, performance, and error metrics to any OpenTelemetry-compatible backend.
otel · metrics// 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.
Swap models (OpenAI, Anthropic, Gemini, DeepSeek, Groq, OpenRouter) with unified naming prefixes (e.g., anthropic/claude-3) without updating application code.
A single streaming parser format for your frontend. No more managing provider-specific stream chunk formats or parsing logic.
Prototype instantly. Override active models, temperatures, and key variables on-the-fly directly within individual execution requests.
// extend agent capabilities
Skill Registry
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 workspacePromotion Pipelines
Promote skills across safe operational stages: draft → stable → live. Easily manage promotion flows and demote/archive older logical versions seamlessly.
draft · stable · liveImmutable Snapshots
All active and stable skill versions are completely frozen. Guarantee 100% predictable and drift-free runtime execution in production environments.
zero behavioral driftInstant 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 & branchSkill 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 renderingMultipart 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
JSON Schema Definitions
Specify precise input parameters and expected output structures using JSON Schema specifications. Guarantee perfect validation and type safety.
input & output schemasDynamic LLM Discovery
Expose rich, structured metadata for LLM orchestration systems. Allow models to discover, select, and execute tools dynamically based on context.
orchestration readyPromotion Pipelines
Evolve your tool schemas safely through standard promotion flows: draft → stable → live. Prevent breaking active production callers.
draft · stable · liveZero-Drift Execution
All active and stable tool schemas are completely immutable. Ensure production agents and model runtimes always execute against frozen definitions.
immutable versionsDual Control Planes
Manage your tool registry programmatically via clean REST APIs, or visually using the intuitive, developer-friendly px0 Web Console.
api & web consoleAtomic 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