@gnldev/cli has 373 recorded weekly downloads on npm.
About @gnldev/cli
@gnldev/cli
The gnl developer CLI. Three groups of commands, all wired straight to @gnldev/durable's own exports
(reconstructState/forkRun/resumeRun/sweepRuns/purgeRun/getRunCost, plus the journal's own
listRuns/readRun) —
nothing here reimplements durability, it just puts it in your terminal. One runtime dependency (tsx, to load your
gnl.config.ts): no commander/yargs/chalk/ora/inquirer — colors, tables and the checkbox are
hand-rolled ANSI (see
Supply-chain hygiene).
Install:
npm create gnl@latestscaffolds a fresh project;pnpm add -D @gnldev/cliadds the CLI to an existing one. (Or run it from a repo clone:pnpm install && pnpm -r build, thennode packages/cli/dist/cli.js <command>.)
npm i -g @gnldev/cli # or: npx @gnldev/cli <command>
Project
| Command | What |
|---|---|
gnl init [dir] | Scaffold a new project (mock model, no API key required). In an interactive terminal it opens one gate question — Recommended · Let me choose · Same as last time — and, if you choose, at most four more: what should happen when the same work arrives twice (--preset), whose runs these are (--identity), where the record of every run is kept (--store), and how people will reach it (--serving; choosing a server asks which framework, --host). Ends by printing the protections matrix it just configured. Run in an EXISTING project it writes only new files and prints the pnpm add line rather than editing your manifest. |
gnl init [dir] --features a,b,c | Names the feature files to write. It answers no QUESTION, so the gate still opens in a terminal — pair it with --yes for a silent run. An unknown id errors with the valid list (exit 1). |
gnl init [dir] --template minimal [--e2e] | The static starter. --e2e adds a durability test. The retired --template full is accepted and resolves to --features idempotency-tool,e2e. Same gate as above; --yes is what makes any of these silent. |
gnl init [dir] --preset ... --identity ... --store ... --serving ... | A flag answers its question, so that question is not asked. Values: assistant|headless|critical, internal|end-users, sqlite|pg, dev|own|mount. A misspelled value exits 1 rather than scaffolding an unprotected project. |
gnl init [dir] --yes | Every unanswered question takes its recommended default. The prompt also never opens without a TTY (stdin not a terminal → defaults), so CI and agents are safe. |
gnl add <idempotency-tool|chat|schedule|job|processors|cache|otel|rag|mcp|memory|workflow|auth> | Add a feature recipe to an existing project: writes its file under src/ (never overwrites), adds the dependencies that file imports to your package.json, writes any .env.example lines it reads, adds a script when the recipe is a process (worker, scheduler), and prints the gnl.config.ts wiring (the config is decoupled — you edit the plain config object, no defineConfig). processors asks which guards you want; --only a,b answers that without a prompt. |
gnl add model <nvidia|openai|anthropic|openai-compatible> | Write a real provider next to the mock (never over it), add the AI SDK provider dependency and its .env.example keys, and print the one import line to change. |
gnl add host <hono|node|express|fastify|koa|nest> [--mount] | Give the project its own server entry, or (with --mount) print the measured lines that plug it into the server you already run. |
gnl dev [--config gnl.config.ts] [--host] [--allow-open-network] | Hot-reload dev server: REST API + Studio Playground on one port. Restarts when gnl.config.ts or src/ changes. |
gnl studio [--config ...] [--port 4747] [--host] [--allow-open-network] | Studio (inspector + Playground) standalone |
gnl doctor [--share] | What is protecting this project (the same matrix gnl dev prints, from describeProtections), plus two local stamps read out of the journal: the first run, the first time a duplicate guard actually refused something, and the gap between them. --share prints a copyable block with no names in it — no telemetry, no network call. |
gnl init my-agent --features idempotency-tool,e2e && cd my-agent && pnpm install && pnpm test # proves idempotency
Templates
minimal(default, and the only one) — one agent, mock model, the journal you chose,gnl dev. The smallest thing that runs.full— retired. It was a five-file fork ofminimalthat existed to add one tool and one test, and it drifted from the original in three separate places before anyone noticed. The name still works and produces the same project: it now resolves to--features idempotency-tool,e2e— a side-effectingchargeOrdertool withidempotency: 'args'(idempotencyKey: (a) => a.orderId), a mock model that actually calls it, and atest/e2e.test.tsreproducing the documented duplicate-toolCallId pattern end to end.
Where these listen
Both commands bind 127.0.0.1 — reachable only from your machine. They previously passed no hostname
at all, which made Node bind every interface while the startup line said http://localhost:…; on a
shared network that published an admin surface (run purge, managed-agent promote, cache invalidation,
and a Playground that spends your API keys) to anyone who could reach the port.
To reach the server from elsewhere — a container, another machine — name the address:
gnl dev --host 0.0.0.0 # refused unless auth is configured
GNL_ADMIN_TOKEN=… gnl dev --host 0.0.0.0
gnl dev --host 0.0.0.0 --allow-open-network # deliberately open, on a network you trust
```…
Description from the npm listing.
- ai
- agent
- llm
- typescript
- ai-sdk
- durable
- exactly-once
- scaffolding
- devtools
README badge
Show your rank in a README or on your website. The badge updates automatically.
Charts
Images: 30d · 1y · all time · 1600×900 dark
Adoption over time
7/30/90-day growth
Ranking history
Listing placement
Listing placement
Filled points are observed values; hollow points come from Internet Archive snapshots of the listing page. Dashed segments span periods with no observations — values between points are not interpolated.
Each band is one page of 20. Weekly downloads on a linear scale. Placement is projected from weekly downloads, so it can differ from the marketplace's own sort order. Hover a dot to see the listing.
Recent observations
Full history (1)Similar npm AI SDKs plugins
All 20 @gnldev/cli alternativesData source
Weekly downloads (trailing 7 complete days) come from the official npm downloads API. Downloads include CI and mirrors and are not equivalent to installs or users. npm publishes no ratings.
Listing: https://www.npmjs.com/package/@gnldev/cli. First seen Oct 22, 2026; last successful collection Oct 22, 2026. See the methodology.