Skip to main content

CLI Reference

CLI name: promptctl

Global Options

promptctl --db-path /path/to/db.db # Custom database path
promptctl --verbose # Verbose output

Prompt Commands

promptctl prompt create

Create a new prompt with initial version.

promptctl prompt create <name> \
--content "Hello {name}" \
--description "A greeting prompt" \
--variables '{"name": "string"}' \
--model-config '{"provider": "openai", "model": "gpt-4o-mini"}' \
--commit-message "Initial version" \
--tags "greeting,test"
FlagShortRequiredDescription
--content-cYesPrompt content (supports @file syntax)
--description-dNoHuman description
--variablesNoJSON dict of variable definitions
--model-configNoJSON dict of LLM configuration
--commit-message-mNoVersion commit message
--tagsNoComma-separated tags

Reading from file:

promptctl prompt create my-prompt --content @prompts/template.txt

promptctl prompt list

List all prompts.

promptctl prompt list [--tags "tag1,tag2"] [--limit 50] [--offset 0] [--json]
FlagShortDefaultDescription
--tagsNoneFilter by comma-separated tags
--limit-l50Max results
--offset-o0Pagination offset
--jsonfalseOutput as JSON

promptctl prompt show

Show prompt content and metadata.

promptctl prompt show <name> [--version 2] [--json]
FlagShortDescription
--version-vSpecific version (default: latest)
--jsonOutput as JSON

promptctl prompt update

Create the next immutable version of an existing prompt.

promptctl prompt update <name> --content <text-or-file> [--variables JSON] [--model-config JSON] [--commit-message TEXT]

promptctl prompt versions

List all versions of a prompt.

promptctl prompt versions <name> [--json]

promptctl prompt diff

Show diff between two prompt versions.

promptctl prompt diff <name> <version-a> <version-b>

Example output:

--- summarizer:v1
+++ summarizer:v2
@@ -1 +1 @@
-Summarize this in {tone} style:
+Summarize this article concisely in {tone} style:

promptctl prompt rollback

Rollback to a previous version.

promptctl prompt rollback <name> --version 1 --commit-message "Reverting to v1"
FlagShortRequiredDescription
--version-vYesTarget version to rollback to
--commit-message-mNoCommit message

Dataset Commands

promptctl dataset create

Create dataset from JSONL or JSON file.

promptctl dataset create <name> --file data.jsonl --description "Test data"
FlagShortRequiredDescription
--file-fYesPath to JSONL or JSON file
--description-dNoHuman description

JSONL format (one JSON object per line):

{"input": {"question": "What is 2+2?"}, "expected_output": "4"}
{"input": {"question": "Capital of France?"}, "expected_output": "Paris"}

JSON format:

[
{"input": {"question": "What is 2+2?"}, "expected_output": "4"},
{"input": {"question": "Capital of France?"}, "expected_output": "Paris"}
]

promptctl dataset list

List all datasets.

promptctl dataset list [--limit 50] [--offset 0] [--json]

Evaluation Commands

promptctl eval run

Run evaluation of a prompt version against a dataset.

promptctl eval run <prompt-name> \
--dataset <dataset-name> \
--version 1 \
--model-config '{"provider": "gemini", "model": "gemini-3.7-flash"}'
FlagShortRequiredDescription
--dataset-dYesDataset name
--version-vNoSpecific prompt version (default: latest)
--model-configNoJSON model config override

promptctl eval report

Get evaluation report.

promptctl eval report <evaluation-id> --format table
FlagShortDefaultDescription
--format-fjsonOutput format: json or table

Server Commands

promptctl serve

Start the MCP server or REST API.

# MCP server over stdio (default)
promptctl serve

# REST API over HTTP
promptctl serve --http --port 8000
FlagDefaultDescription
--stdiotrueRun MCP server over stdio
--httpfalseRun REST API over HTTP
--port8000HTTP port