Skip to Content

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 .env

Put 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 dev

plico 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 eval

Evals 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.

On this page