Puras CLI Reference

Auto-generated reference for the `puras` command-line tool — install, auth, deploy, run.

The puras CLI deploys skillpacks and runs jobs from your terminal or CI. It ships in the same package as the SDK — to call deployed skills from application code instead, see the SDK Client Reference.

Install

bash
pip install puras

Then authenticate once with a workspace API key (puras_live_…, minted in the dashboard):

bash
puras login            # prompts for the key, or opens the dashboard
puras whoami           # confirm the active workspace + balance

Credentials are stored in ~/.puras/config.json. In CI, skip login and set PURAS_API_KEY in the environment instead. Most commands resolve the target skillpack from a puras.yaml in the working directory — the pack manifest holding the remote binding plus the pack page's title/description/marketing (see the skill.yaml reference), written by puras init; override with --skillpack.

Commands

puras login

Store + verify a workspace API key.

ArgumentKindDescription
--key KEYoptionalAPI key (else you'll be prompted / browser opens)
--api-base API_BASEoptionaloverride API base URL

puras logout

Remove stored credentials.

puras whoami

Show the active workspace + balance.

puras init

Scaffold a skill and write puras.yaml.

ArgumentKindDescription
--name NAMEoptional
--slug SLUGoptional
--description DESCRIPTIONoptional
--template TEMPLATEoptionalstarter files: a minimal blank skill (default) or the full hello-world example (github.com/PurasAI/hello-world)
--no-scaffoldflagdon't write any starter files

puras skillpacks

List your skills.

puras skills

puras deploy

Bundle a skill dir and push a deployment.

ArgumentKindDescription
pathpositionalskill dir (default: .)
--app, --skillpack SKILLPACKoptionalskill id or slug to deploy to (default: puras.yaml, the skill's name, or the dir name; created on first deploy)
--no-activateflagupload without activating
--notes NOTESoptional

puras deployments

List deployments for the skill.

ArgumentKindDescription
--app, --skillpack SKILLPACKoptional

puras activate

Activate a deployment by version or id.

ArgumentKindDescription
refpositionalversion number (e.g. 3) or deployment id
--app, --skillpack SKILLPACKoptional

puras run

Submit a job and wait for the result.

ArgumentKindDescription
skillpositionalskill name, or a path copied from the skill's page (optional with --local when the bundle has one skill)
-p, --prompt PROMPToptionalrun a one-off agent from this inline prompt — NO skill, NO deploy needed. Use - to read stdin or @file to read a file.
-i, --input KEY=VALUEoptionalrepeatable
--json JSONoptionalinputs as a JSON object
--asyncflagdon't wait
--timeout TIMEOUToptionalwait seconds (default 60)
--app, --skillpack SKILLPACKoptionaldefault skill id or slug for a bare skill name
--version VERSIONoptionalpin to a deployment version (default: active)
--localflagrun a local skill bundle OFFLINE (no platform) on your own LLM key
--dir DIRoptionalbundle dir for --local (default: current directory)
--api-key API_KEYoptionalLLM key for --local (default: $ANTHROPIC_API_KEY)
--model MODELoptionaloverride the skill's model slug for --local

puras serve

Serve a local API for a bundle (the hosted job API, offline).

ArgumentKindDescription
--dir DIRoptionalbundle dir to serve (default: current directory)
--host HOSToptionalbind host (default 127.0.0.1)
--port PORToptionalbind port (default 8787)
--api-key API_KEYoptionalLLM key used to run jobs (default: $ANTHROPIC_API_KEY)
--model MODELoptionaloverride each skill's model slug
--require-key TOKENoptionalemulate API-key auth: require Authorization: Bearer TOKEN on /v1/* requests

puras logs

Stream a job's events until it finishes.

ArgumentKindDescription
job_idpositional
--timeout TIMEOUToptional
--interval INTERVALoptional

puras spans

Show a job's trace spans (run/step/model/tool latency).

ArgumentKindDescription
job_idpositional
--jsonflagprint the raw spans as JSON

puras feedback

Rate a job's result (👍/👎 + optional comment).

ArgumentKindDescription
job_idpositional
--upflagthumbs up (good result)
--downflagthumbs down (bad result)
--comment, -c COMMENToptionalfree-form note on why
--end-user IDoptionalopaque id of the end user this feedback is for

puras replay

Re-run a past job's inputs (reproduce it locally).

ArgumentKindDescription
job_idpositionalthe job to replay
--version VERSIONoptionalpin a deployment version (default: active / local)

puras eval

Run a skill's eval suite (dataset + graders).

ArgumentKindDescription
skillpositionalskill name (resolved from --app / puras.yaml; optional with --local when the bundle has one skill)
--app, --skillpack SKILLPACKoptionalskill id (default: puras.yaml binding)
--version VERSIONoptionalpin to a deployment version (default: active)
--repeat REPEAToptionalrun each case N times for variance (default 1)
--threshold THRESHOLDoptionalCI gate: fail if pass-rate %% is below this
--case CASEoptionalrun only this case id (repeatable)
--jsonflagprint the full report as JSON
--asyncflagkick off and return; don't wait
--timeout TIMEOUToptionalmax seconds to wait (default 900)
--interval INTERVALoptionalpoll interval seconds (default 3)
--localflagrun the eval suite OFFLINE on a local bundle, on your own LLM key
--dir DIRoptionalbundle dir for --local (default: current directory)
--api-key API_KEYoptionalLLM key for --local (default: $ANTHROPIC_API_KEY)
--model MODELoptionaloverride the skill's model slug for --local

puras eval-report

Show an eval suite report by id.

ArgumentKindDescription
suite_idpositional
--jsonflagprint the full report as JSON

puras eval-diff

A/B two eval suites (version vs version).

ArgumentKindDescription
skillpositionalthe skill both suites evaluated
--app, --skillpack SKILLPACKoptionalskill id (default: puras.yaml binding)
--base BASEoptionalbaseline: a version number or a suite id
--head HEADoptionalcandidate: a version number or a suite id
--jsonflagprint the full diff as JSON

puras hindsight

Analyze a skill's recent runs for recurring inefficiencies.

ArgumentKindDescription
skillpositionalskill name to analyze
--app, --skillpack SKILLPACKoptionalskill id (default: puras.yaml binding)
--waitflagwait for the report and print it
--timeout TIMEOUToptionalmax seconds to wait with --wait (default 600)
--interval INTERVALoptionalpoll interval seconds (default 5)
--jsonflagprint the run/report as JSON

puras hindsight-list

List/search past Hindsight retrospectives.

ArgumentKindDescription
--app, --skillpack SKILLPACKoptionalskill id (default: puras.yaml binding)
--skill SKILLoptionalfilter to one skill
--jsonflagprint as JSON

puras hindsight-show

Read one Hindsight report by run id.

ArgumentKindDescription
run_idpositional
--jsonflagprint the full report as JSON

puras secrets

Manage your skill's secrets.

puras secrets set

Set a secret (NAME=VALUE or prompt).

ArgumentKindDescription
NAME[=VALUE]positional
--app, --skillpack SKILLPACKoptional

puras secrets ls

List secret names.

ArgumentKindDescription
--app, --skillpack SKILLPACKoptional

puras secrets rm

Delete a secret.

ArgumentKindDescription
namepositional
--app, --skillpack SKILLPACKoptional

puras pull

Download the active bundle.

ArgumentKindDescription
--app, --skillpack SKILLPACKoptional
--out OUToptionaloutput dir (default: .)