The versalist command loads challenge files and runs local commands. It stores run, evaluation, and comparison records under .versalist/.
Requirements
- Node.js 18 or later
- An npm installation
- A Versalist API key for
startandsubmit
Create an API key in API key settings. Store the key in an environment variable.
export VERSALIST_API_KEY=vk_live_...Install the CLI
Install the package globally if you use the CLI regularly.
npm install -g @versalist/cli
versalist --helpUse npx if you do not want a global installation.
npx -y @versalist/cli list
npx -y @versalist/cli start agentic-code-optimization-reviewUse this form if your shell cannot resolve the package executable.
npm exec --yes --package @versalist/cli versalist listQuick start
- List the published challenges.
- Select a challenge slug.
- Load the challenge into your repository.
- Run your agent command.
- Run a verifier against the recorded run.
- Compare a candidate with a baseline.
- Submit the project URL.
versalist list --search "agentic code optimization"
versalist start agentic-code-optimization-review
versalist run --command "python agent.py" --label baseline
versalist evaluate --run <baseline-run-id> --command "pytest" --score 70
versalist run --command "python agent.py" --label candidate
versalist evaluate --run <candidate-run-id> --command "pytest" --score 84
versalist compare --baseline <baseline-run-id> --candidate <candidate-run-id>
versalist submit --url https://github.com/you/solution --title "Candidate run"Commands
versalist list
List published challenges. This command does not require an API key for public data.
versalist list
versalist list --search reranker
versalist list --category evaluation --difficulty advanced
versalist list --page 2 --limit 12
versalist list --jsonversalist start <slug-or-id>
Load one challenge into the current working directory. This command does not run an agent.
versalist start agentic-code-optimization-reviewThe command writes these files:
CHALLENGE.mdcontains the challenge brief..versalist.jsoncontains the challenge identifier and local metadata.eval/examples.jsoncontains public examples when they are available.
The command also adds .versalist/ to .gitignore.
versalist run
Run a shell command in the current working directory. The command requires an existing .versalist.json file.
versalist run --command "python agent.py" --label baseline
versalist run --command "python agent.py" --timeout 1200
versalist run --command "python agent.py" --jsonThe run record contains:
- The command and exit status
- The start time, completion time, and duration
- The current Git revision and dirty-worktree state
- Hashes for the challenge files
- Paths to
stdout.logandstderr.log
The default timeout is 900 seconds. A failed command returns a nonzero exit status.
versalist evaluate
Run a verifier against a recorded run. The verifier is a local shell command.
versalist evaluate --run latest --command "pytest"
versalist evaluate --run <run-id> --command "pytest" --score 82
versalist evaluate --run <run-id> --command "pytest" --metrics results.jsonA successful verifier receives a default score of 100. A failed verifier receives a default score of 0.
Use --score to provide a score from 0 through 100. Use --metrics to attach a JSON object.
versalist compare
Compare the latest evaluation for a baseline run and a candidate run.
versalist compare --baseline <baseline-run-id> --candidate <candidate-run-id>
versalist compare --baseline <baseline-run-id> --candidate <candidate-run-id> --min-delta 5
versalist compare --baseline <baseline-run-id> --candidate <candidate-run-id> --jsonThe command passes when the candidate evaluation passes and meets the minimum score change. It returns exit status 1 when the comparison fails.
The comparison is a local record. It does not change the baseline or prevent a later submit command.
versalist submit
Create a project submission for a challenge.
versalist submit --url https://github.com/you/solution --title "Candidate run"
versalist submit --url https://demo.example.com --github-url https://github.com/you/solution --title "Hosted demonstration"Use these optional flags:
--challengeselects a challenge instead of using.versalist.json.--descriptionadds implementation information.--modelrecords the model name.--toolchainrecords the framework or toolchain name.
The command sends project metadata and URLs. It does not upload the contents of .versalist/.
The command does not require a passed comparison.
versalist mcp
Start the Model Context Protocol (MCP) server over standard input and output. Use this mode with an MCP-compatible editor or agent host.
versalist mcp
npx -y @versalist/cli mcp
npm exec --yes --package @versalist/cli versalist mcpAPI key scopes
read:challengespermits access to challenge details and files.submit:solutionspermits project submission.read:submissionspermits the MCP server to list your submissions.
Local records
The CLI stores run evidence in .versalist/runs/.
The CLI stores comparison records in .versalist/comparisons/.
These records are separate from platform-managed Episodes. The CLI does not upload them automatically.
Security
The CLI uses your current environment variables when it runs a command. Run only commands that you trust.
Command output can contain credentials or private data. Review all evidence files before you share them.
Do not commit .versalist/ to source control.
Automation
Use --json when another program must read a CLI result.
The run, evaluate, and compare commands return nonzero exit statuses when their checks fail.
Troubleshooting
The CLI reports an unknown command
Check the installed package version and update the package.
npm view @versalist/cli version
npm install -g @versalist/cli@latest
versalist --helpThe CLI cannot find .versalist.json
Run versalist start <slug-or-id> in the repository first.
The API rejects the API key
Confirm that the environment variable exists in the current shell.
test -n "$VERSALIST_API_KEY" && echo "API key is set"Create a new key if the current key is invalid or revoked.