croncool
v1.2.1
Published
croncool cli to manage cron jobs and more
Maintainers
Readme
croncool
Command-line access to your cron jobs on app.cron.cool: projects, scheduled jobs, their schedules and HTTP targets, and each job's last execution status — plus running a job immediately or deleting it.
Install
npm install -g croncool # global install
npx croncool --help # or run without installingRequires Node.js 18 or newer.
Quick start
croncool login # browser or API-key login (asks which)
croncool projects list # your projects with their ids
croncool jobs list --projectId PROJECT_IDFound 2 job(s):
1. warm-cache [rate(5 minutes)] (64a1f2c9e4b0a1b2c3d4e5f6)
2. nightly-report [cron(0 3 * * ? *)] (64a1f2c9e4b0a1b2c3d4e5f7)Signing up
No account yet? Create one from the terminal — the generated password prints exactly once, and the session is stored so every other command works immediately:
croncool signup --email [email protected] --jsonAuthentication
Two ways in, both stored in ~/.croncool/:
- Browser —
croncool login --browserstarts a temporary localhost server, opens app.cron.cool to authorize, and receives the session tokens on the redirect back. If the browser does not open, the login URL is printed so you can visit it by hand. Tokens are refreshed automatically when they expire. - API key —
croncool login --with-keyprompts (masked) for an API key secret from a project's API-keys page on app.cron.cool, verifies it with one authenticated call, and stores it. The secret is never accepted as a command argument — argv leaks into shell history andpslistings.
Headless environments (CI, agents) skip login entirely and export
CRONCOOL_API_KEY=<key secret> instead — the key is read from the
environment at request time. When several credentials exist the stored
browser session wins, then the stored key, then the environment variable.
Plain croncool login on an interactive terminal asks which method to use.
Without a terminal and without credentials, commands fail immediately with
exit code 1 and instructions on stderr — nothing blocks waiting for a
browser. croncool logout clears the stored session and any stored key
secret (an exported CRONCOOL_API_KEY stays in effect and the CLI says so).
New API keys default to read-only scopes: jobs execute and jobs delete
need the key widened on the project's API-keys page.
JSON output and exit codes
Every data subcommand accepts --json: real, parseable JSON on stdout with
no color — pipe it to jq or JSON.parse. Mutations print a small result
object such as { "ok": true, "id": "…", "executed": true }. Errors always
go to stderr with exit code 1; under --json the error is a single JSON
line: {"error":{"message":"…","status":404}}.
croncool jobs list --json | jq '.[].expression'
croncool schema # the whole command tree as JSON
croncool schema jobs list # one subtree: options, arguments, subcommandsCommands
Session
croncool signup --email [email protected] # create an account and log in
croncool login # interactive choice of browser vs API key
croncool login --browser # browser flow; tokens land in ~/.croncool/
croncool login --with-key # masked prompt for an API key secret
croncool logout # clear the stored session and stored keyProjects
croncool projects list # list projects with name and id
croncool projects get [projectIdOrName] # one project (or all) as an object dump
croncool projects read <projectIdOrName> # formatted view: organizationId, countryCode, timestampsJobs
croncool jobs list # 10 most recent jobs (-n/--limit, --projectId)
croncool jobs get <jobId> # one job as an object dump
croncool jobs get --projectId <id> -n 20 # no jobId: dump an array of jobs
croncool jobs read <jobId> # formatted view: schedule, url, method, enabled,
# last execution, timestamps
croncool jobs execute <jobId> # fire the job's configured request immediately
croncool jobs delete <jobId> # delete the job (no confirmation prompt)--projectId can be omitted when a croncool.json supplies it — see
Configuration below. All of these take --json; without it get prints
Node's inspect format — readable, but not strict JSON.
execute sends the HTTP request configured on the job right away; the
downstream target runs for real, so double-check the job id first with
croncool jobs read. delete removes the job immediately and cannot be
undone.
Introspection
croncool schema # print the command tree as JSON
croncool schema <command...> # print one command's subtreeSkills
croncool skills list # names and descriptions of the bundled agent guides
croncool skills get croncool # print a bundled SKILL.md to stdoutConfiguration
A croncool.json in the working directory (or any directory below it)
supplies the default --projectId for jobs list and jobs get:
{ "projectId": "64a1f2c9e4b0a1b2c3d4e5f6" }Explicit CLI options take priority over the file.
CRONCOOL_API_URL overrides the API endpoint (default
https://api.cron.cool) — only needed against a non-production deployment.
Usage with AI agents
Install the Croncool agent skills — croncool (this CLI) and
scheduler-operations (the MCP-based scheduled-operations workflow) — for
Claude Code, Cursor, Codex, and any other agent that supports the Skills
standard:
npx skills add croncool/skillsThe same guides ship inside the npm package, version-matched to the installed CLI:
croncool skills list # what is bundled
croncool skills get croncool # the CLI guide matching this versionOr paste this into your AGENTS.md / CLAUDE.md:
## Cron jobs
Use the `croncool` CLI for Croncool data: projects, scheduled jobs, their
schedules and last execution status. Run
`npx croncool skills get croncool` for the full guide, and
`croncool schema` for the command tree as JSON. Add `--json` to any data
command for parseable output. Auth: `croncool login` once, or export
`CRONCOOL_API_KEY` in headless environments.Prefer a connector? The Croncool MCP server at https://mcp.cron.cool/mcp
exposes the same data as tools for Claude, ChatGPT, and any MCP-capable host
— see cron.cool/developers.
