@just-easy-tasks/jet
v1.0.6
Published
Command line task management for Just Easy Tasks
Maintainers
Readme
JET CLI
Manage Just Easy Tasks from the command line.
JET is API-first, and the CLI mirrors that shape while keeping common task workflows short for humans and predictable for agents.
Install
npm install -g @just-easy-tasks/jet
jet --helpFor local development:
bun install
bun run dev -- --help
bun run checkThe published package requires Node.js 22 or newer. Bun is used for development, tests, builds, and release checks.
Configure
jet config set api-key jet_your_secret_here
jet config set output json
jet use workspace acme
jet use project JET
jet doctor
jet task listThe CLI uses https://justeasytasks.com by default.
When the same setting is provided in multiple places, later sources override earlier ones:
- Built-in defaults.
- User config:
%APPDATA%/jet/config.jsonon Windows, otherwise$XDG_CONFIG_HOME/jet/config.jsonor~/.config/jet/config.json. - Local project config found by walking up to
.jet/config.json. - Environment variables:
JET_API_URL,JET_API_KEY,JET_WORKSPACE,JET_PROJECT,JET_OUTPUT. - CLI flags:
--api-url,--api-key,--workspace,--project,--json.
API keys are stored as plaintext when saved with jet config set api-key.
Use environment variables or your platform secret manager if local plaintext
storage is not acceptable.
Client Cache
The CLI caches selected GET responses for stable metadata such as workspaces, projects, statuses, labels, boards, task types, priorities, and short-lived task resolution. The cache is scoped by API URL and a SHA-256 fingerprint of the API key, so entries are not shared across servers or API keys. Raw API keys are never stored in the cache.
By default the cache is enabled. To bypass it:
jet --refresh project list # fetch fresh data and update the cache
jet --no-cache project list # skip cache reads and writes
JET_CACHE=off jet task get JET-123
jet config set cache offManage cached data:
jet cache status
jet cache clear
jet cache clear --all
jet cache prunejet cache clear removes entries for the current API URL and API key. Use
--all to remove every local cache entry.
Commands
Core commands:
jet context
jet doctorWorkspace and project commands:
jet workspace list
jet workspace get acme
jet workspace create acme "Acme"
jet workspace member list
jet workspace invite create [email protected]
jet project list
jet project create JET "Just Easy Tasks"Task workflows:
jet task list
jet task list login --status open
jet task create "Fix login" --status open --priority high --label bug
jet task get JET-123
jet task update JET-123 --status in-progress --assignee <user-id>
jet task done JET-123
jet task delete JET-123 --forceTask targets can be JET-123, acme/JET-123, a numeric task number when a
default project is configured, or a title fragment resolved by the API.
Project metadata:
jet status list
jet status create done Done --category done --rank 100
jet label create bug Bug --color red
jet type create task Task
jet priority create high High --rank 100Comments, links, references, and boards:
jet comment add JET-123 "I can reproduce this."
jet comment update JET-123 <comment-id> "Updated note"
jet link create JET-123 JET-124 --type blocks
jet reference create JET-123 https://example.com --title "Spec"
jet board create active "Active work" --filters '{"statusKey":"open"}'Destructive commands prompt by default. Use --force for scripts. Use
--no-input to make the CLI fail instead of prompting.
Agent Usage
Every command supports global --json for machine-readable output:
jet --json task get JET-123
jet --json task list --status openRun doctor before an agent changes work:
jet doctor --jsonIt checks API URL, API key auth, workspace access, project access, and whether JSON output is active. Failed checks include recovery guidance that an agent can follow or report.
Errors in JSON mode include an error code and message; API errors also
include HTTP status and backend detail.
For non-interactive agents, prefer:
jet --json --no-input task list
jet --json --no-input task delete JET-123 --forceAPI Compatibility
The CLI is generated against openapi.json in this repository and the checked-in
types in src/generated/schema.d.ts. Regenerate types from a running API:
JET_OPENAPI_URL=http://127.0.0.1:8000/api/openapi.json bun run generate:apiOr from a pinned file:
JET_OPENAPI_FILE=openapi.json bun run generate:apiCI runs bun run check:schema to catch stale generated types.
Development And Release
bun run typecheck
bun test
bun run check:schema
bun run build
bun run smoke:package
bun run smoke:api
bun run check
bun run pack:checksmoke:api is optional unless JET_SMOKE_API_URL and JET_SMOKE_API_KEY are
set. When JET_SMOKE_WORKSPACE and JET_SMOKE_PROJECT are also set, it checks
project-scoped task, status, label, and board endpoints.
Set JET_SMOKE_WRITE=1 with a staging workspace and project to run the full
agent proof workflow: create temporary tasks, comment, attach a reference, link
tasks, resolve/search, mark done when possible, and clean up the temporary
tasks.
