The CLI is a keyboard-driven panel that lets you move around Ceum and narrow your workspace using short, shell-style commands. Its commands drive the same operations that the MCP integration exposes to outside tools — the panel is the in-app way to run them, and a standalone terminal binary that connects over MCP is planned.
Opening the panel
Press backquote (`) anywhere outside a text field. The panel slides up from the bottom over the navigation bar. Press Escape to close it.
Inside the panel you'll find:
- A command input with tab completion.
- A transcript of your recent commands and their output (the last 100 entries).
- A handle for resizing the panel's height.
The commands
The CLI is mainly for listing and jumping to your data, plus timer control. The main families are:
<entity> list(e.g.clients list,tasks list,invoices list) — list clients, projects, tasks, invoices, subscriptions, transactions, documents, events, and your status/type/relationship configs. Many lists take filters, e.g.tasks list --projectId P-3,transactions list --type income, ordocuments list --clientId C-1, and--columnsto choose what's shown.timer start|stop|resume|pause|status|discard|list— control the running time session without leaving the keyboard. Stopping reports the session name and elapsed duration.<entity> get— show one invoice or document in detail.clear— clear the transcript.help— the command reference (see below).
Results from <entity> list are clickable: each row links into the matching item (or its settings edit page for config rows), so the CLI doubles as a fast way to jump deep into your workspace. Following any link navigates and closes the panel.
Getting help
help adapts to how specific you are:
help— an overview grouped by command family in three aligned columns: the root noun (shown once per family), the subcommand, and its parameters (e.g. thedocumentsfamily listslist,get,versions,deleteunder a singledocumentsheading, each with its options).help <family>— the same grouped listing narrowed to one family (e.g.help timer).help <command>— full detail for one command, including each option's datatype and whether it's required (e.g.help transactions list).
Options are typed: --start <ISO datetime>, --amount <number>, --type <income|expense>. When a command is missing a required option, the error names each one — one per line — with its datatype rather than just saying "required".
Command grammar
This reference is generated from the commands themselves, so it always matches what the CLI actually accepts. Required options have no brackets; optional ones are wrapped in [ ].
clear
clients list [--columns <id|name|status|email|company|uuid>] [--id <string>]
documents delete [--id <string>]
documents get [--id <string>]
documents list [--columns <id|name|description|clients|projects|updatedAt|uuid>] [--id <string>] [--projectId <string>] [--clientId <string>]
documents versions [--id <string>]
events create --title <string> --start <ISO datetime> --end <ISO datetime> [--description <string>]
events list [--columns <title|start|end|recurring|description|uuid>] [--from <date>] [--to <date>]
exit
help [command]
invoices delete [--id <string>]
invoices flag [--id <string>] [--description <string>]
invoices get <id> [--id <string>]
invoices list [--columns <id|invoiceNumber|client|amount|status|issueDate|dueDate|currency|flagged|uuid>] [--id <string>] [--clientId <string>]
invoices unflag [--id <string>]
mail logs list [--columns <to|subject|status|sentAt|templateType|uuid>]
mail templates create --name <string> --subject <string> --body <string> --template-type <message_client|send_invoice|send_overdue_reminder|send_project_email|send_task_email>
mail templates list [--columns <name|subject|templateType|uuid>]
projects list [--columns <id|name|status|client|uuid>] [--id <string>] [--clientId <string>]
relationship-types list [--columns <scope|typeId|name|enabled|order|color|uuid>] [--scope <project|task>]
statuses list [--columns <entityType|name|statusId|enabled|finished|order|color|uuid>] [--entity-type <client|project|task|invoice>]
subscriptions create --name <string> --cost <number> --billing-period <weekly|monthly|quarterly|yearly> --billing-date <string> [--currency <string>] [--tags <string>] [--notes <string>] [--inactive]
subscriptions list [--columns <name|cost|billingPeriod|billingsPerPeriod|billingDate|currency|active|uuid>]
task-types list [--columns <typeId|name|enabled|billable|standalone|embeddable|order|color|uuid>]
tasks list [--columns <id|name|status|type|deadline|uuid>] [--id <string>] [--projectId <string>] [--clientId <string>]
timer discard
timer list [--columns <name|startTime|endTime|status|task|uuid>]
timer pause
timer resume
timer start [--name <string>] [--taskId <string>]
timer status
timer stop
transactions create --date <date> --desc <string> --amount <number> --type <income|expense> [--currency <string>] [--tags <string>] [--clientId <string>] [--projectId <string>] [--taskId <string>]
transactions list [--columns <date|desc|amount|type|currency|client|project|uuid>] [--type <income|expense>] [--projectId <string>] [--clientId <string>]
While a command runs
Commands that hit the server show a live indicator — a small spinner and the elapsed time in seconds — until they finish, so you can tell a slow request from a stuck one.
Tab completion
Completion works the way it does in a shell:
- One Tab — fills in the longest shared prefix.
- Two Tabs — shows all the candidates.
- It completes command keywords, flag names, and flag values — including multi-value columns, so
tasks list --columns name,<Tab>offers the remaining columns.
Tips and edge cases
- Click to focus. Clicking anywhere in the empty space of the panel focuses the command input, so you can start typing without aiming for the input line.
- Backquote feels awkward? If your keyboard layout makes backquote hard to reach, you can still toggle the CLI through the chord chain in Keyboard shortcuts.
- Quick list lives nearby. The CLI panel comes up from the bottom while the Quick list panel slides in from the side — they don't overlap.
- The transcript is temporary. Closing the panel keeps the transcript; reloading the page clears it.
On mobile
Not available on the mobile app — manage from the web app.