orariox
v0.4.1
Published
Command-line client for the Orariox scheduling API (https://orariox.com).
Readme
orariox
Command-line client for the Orariox scheduling API. Manage tasks, issues, phases, people, and shareable links from the terminal, your CI, or a shell script.
Install
npm install -g orariox(or run ad-hoc via npx orariox.) Node 20+ required.
Quickstart
Sign in to https://orariox.com and open 個人アクセストークン from the menu (
/settings/tokens).Issue a new token. Copy the
pat_…string shown ONCE.Save it locally:
orariox auth login # paste at the prompt orariox auth whoami # verifyUse the CLI:
orariox org list orariox project list --org <orgId> orariox task list --project <projectId> # タイムライン (bar) — start + end dates orariox task add \ --project <projectId> \ --name "Design review" \ --start 2026-06-01 --end 2026-06-05 \ --actor design # ガント (deadline marker) — only --end is needed orariox task add \ --project <projectId> \ --name "リリース締切" \ --display-type gantt --end 2026-07-31 \ --actor team orariox task done <taskId> orariox issue add --project <projectId> --title "ログイン画面のバグ" --priority high
Configuration
The CLI stores its config at ~/.orariox/config.json (mode 0600):
{
"apiBaseUrl": "https://api.orariox.com",
"token": "pat_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}Override per-invocation:
ORARIOX_API=https://dev.api.orariox.com orariox org listCommands
orariox auth login [--token <pat>] [--api <url>]
orariox auth whoami
orariox auth logout
orariox org list [--json]
orariox org get <orgId> [--json]
orariox project list --org <orgId> [--json]
orariox project get <projectId> [--json]
orariox phase list --project <projectId> [--json]
orariox phase add --project <projectId> --label <name>
--start <YYYY-MM-DD> --end <YYYY-MM-DD>
[--subtitle <text>] [--id <phaseId>] [--json]
orariox phase edit <phaseId> --project <projectId>
[--label|--subtitle|--start|--end] [--json]
orariox phase rm <phaseId> --project <projectId> --yes
orariox task list --project <projectId> [--json]
orariox task add --project <projectId> --name <name>
--end <YYYY-MM-DD>
[--start <YYYY-MM-DD>] # required for timeline, optional for gantt / milestone
--actor <actor>
[--display-type timeline|gantt|milestone] # default: timeline
[--phase <id>] [--order <n>]
[--assignees <id,id>] [--done] [--json]
orariox task edit <taskId>
[--name|--start|--end|--actor|--phase|--order
|--assignees|--done|--display-type] [--json]
orariox task done <taskId>
orariox task rm <taskId> --yes
orariox issue list --project <projectId> [--json]
orariox issue add --project <projectId> --title <text>
[--description <text>] [--status open|in_progress|done|closed]
[--priority high|medium|low] [--assignee <personId>]
[--due <YYYY-MM-DD>] [--labels <l1,l2>] [--json]
orariox issue edit <issueId>
[--title|--description|--status|--priority
|--assignee|--due|--labels] [--json]
orariox issue status <issueId> <open|in_progress|done|closed>
orariox issue rm <issueId> --yes
orariox person list --project <projectId> [--json]
orariox person add --project <projectId> --name <name> --role <role>
[--last-name <n>] [--first-name <n>] [--group <id>] [--email <e>]
orariox person edit <personId> [...]
orariox person rm <personId> --yes
orariox share list --project <projectId> [--json]
orariox share create --project <projectId> --name <name>
[--expires-days <n>] [--json]
orariox share rm <shareId> --yesTask display type
Each task renders as one of three visuals on the schedule. Pick the one that matches the work's shape:
| --display-type | Visual | When to use |
| ---------------- | ------ | ------------------------------------------------------------ |
| timeline | Bar | Multi-day work with a start AND end. Requires --start. |
| gantt | ◆ | Deadline / due date only. --start is ignored (mirrors end).|
| milestone | ★ | A project milestone or check-point. --start is ignored. |
Omit the flag → defaults to timeline.
Token scopes
PATs can be scoped to read-only or limited operations. An empty scope set means "everything the issuing email is permitted to do" (the default for tokens created via the "Full" preset).
| Scope | Grants |
| -------------- | ----------------------------------------------- |
| org:read | org list/get |
| project:read | project list/get, phase list |
| project:write| phase add/edit/rm, share list/create/rm |
| task:read | task list |
| task:write | task add/edit/done/rm |
| person:read | person list |
| person:write | person add/edit/rm |
| issue:read | issue list |
| issue:write | issue add/edit/status/rm |
The CLI sends the token as a Bearer header; per-record auth still runs
on top — a task:write PAT can only update tasks the issuing user could
update through the web app.
Scripting
All read commands accept --json for machine-readable output. Errors go
to stderr; the exit code is 1 on any failure (including 4xx API
responses).
# active (= not done) tasks
orariox task list --project p_abc --json \
| jq '.[] | select(.done == false) | {id, name, end}'
# all open issues assigned to me, sorted by due date
orariox issue list --project p_abc --json \
| jq --arg me $(orariox auth whoami --json | jq -r .personId) \
'.[] | select(.status == "open" and .assignee == $me) | {title, dueDate}' \
| jq -s 'sort_by(.dueDate)'
# bulk import from CSV
while IFS=, read -r name role email; do
orariox person add --project p_abc --name "$name" --role "$role" --email "$email"
done < people.csvReleasing (maintainers only)
cd cli
# 1. Bump the version in package.json (npm version respects semver).
npm version patch # or minor / major
# 2. Tag with the cli-v prefix matching package.json.
git tag cli-v$(node -p "require('./package.json').version")
# 3. Push the tag — GitHub Actions publishes from cli-publish.yml.
git push origin cli-v$(node -p "require('./package.json').version")The workflow needs an NPM_TOKEN repo secret with publish rights on the
orariox package.
License
MIT
