Quickstart
Scaffold a project, validate it, run it with a model, and approve a tool call in Studio.
create-plico generates the internal-ops starter and the plico CLI validates, runs and serves
it. Steps 1 and 2 take a few minutes and need no API key. You need Node 22.18 or later and, to chat with
a model in steps 3 to 5, an API key.
Plico is a developer preview (0.1). The HTTP API under /v1 takes additive changes only; the
TypeScript exports can change in any 0.x minor release.
Create a project
npm create plico@latest my-agent -- --provider anthropic
cd my-agent
npm install--provider is anthropic, openai, google or openai-compatible (Ollama, OpenRouter,
LiteLLM). Run create-plico with no directory to be asked for the directory, name and
provider, where you can also pick no provider. With a directory and no --provider, the
project has no model and runs --dry only. The
scaffold has the project folders, a package.json with dev, validate and eval
scripts, a .env.example and a .gitignore.
Validate and dry run
npm run validate
npx plico run --dry .plico validate prints Valid Plico project: . and otherwise names the file at fault. A dry
run uses a scripted model, so it needs no key, and ends with run.completed: completed.
Add your key
cp .env.example .envPut the key in .env. Plico loads it for plico run, plico serve and plico readiness.
npx plico readiness . tells you what is still missing. See Providers.
Open Studio and chat
npm run devplico serve prints Serving Plico at http://127.0.0.1:3000. Open that address, start a
thread, ask for something, and watch the run's events stream in. If the port is taken, add
--port 3001. http://127.0.0.1:3000/health answers { "ok": true, ... } when the server is up. See Studio and Threads.
Approve a tool call
Add a tool with approval: { required: true } (see Tools). When the model
calls it, the run waits and Studio shows the request. Approve it and the run continues. To try
it with no key, see Try it without a key. The
internal-ops example
has a close_ticket tool that does this.
Check it in CI
npm run evalEvals run scripted cases with no provider. The scaffold ships one case, evals/smoke.script.json,
and the command prints 1/1 passed, 0 failed. Add your own with --from-run.
See Evals, or build a whole agent in Example: a refund agent.
Using Claude Code or Cursor? See Build with an AI coding agent.
If something fails, see Troubleshooting.