EM Kit CLI
The EM Kit CLI lets you query and update EM Kit data from your terminal.
- Works with the EM Kit desktop app runtime.
- If EM Kit is not running, the first CLI command launches it automatically.
- Supports both one-shot commands and an interactive TUI.
- Returns JSON responses so it’s easy to script or pipe into AI agents.
- Focuses on EM Kit local data (it is not a GitHub CLI replacement).
Install from EM Kit desktop
Section titled “Install from EM Kit desktop”- Open Settings → Command Line Tool.
- Click Install Command Line Tool.
- Confirm the install location.
On macOS, the default install directory is:
~/.emkitThe executable path is typically:
~/.emkit/emkitAdd to PATH
Section titled “Add to PATH”If you see CLI install directory is not in PATH, add the install directory to your shell PATH.
zsh (default on macOS)
Section titled “zsh (default on macOS)”echo 'export PATH="$HOME/.emkit:$PATH"' >> ~/.zshrcsource ~/.zshrcecho 'export PATH="$HOME/.emkit:$PATH"' >> ~/.bashrcsource ~/.bashrcfish_add_path $HOME/.emkitVerify:
which emkitemkit helpEM Kit MCP
Section titled “EM Kit MCP”If you want to connect EM Kit to Claude Code, Cursor, or Codex through MCP, use the dedicated guide:
Usage modes
Section titled “Usage modes”One-shot commands
Section titled “One-shot commands”emkit doctoremkit workspace listemkit workspace summary --id 1emkit member list --workspace-id 1emkit issue list --workspace-id 1 --status todo,in_progressInteractive TUI
Section titled “Interactive TUI”emkit# oremkit tuiThe TUI supports tab autocomplete, up/down history, and the help and quit commands.
Global options
Section titled “Global options”These flags apply to any command.
--input <json|@file|@-> # JSON payload for create/update commands (inline, @file, or @- for stdin)--compact # Print responses as a single line of JSON--data-dir <path> # Override data directory (only honored when the app starts)JSON output
Section titled “JSON output”CLI responses are JSON, which makes it easy to consume from scripts and AI agents.
{ "ok": true, "command": "workspace list", "data": [ { "id": 1, "name": "Platform", "created_at": "2026-03-06 19:21:00" } ]}Use compact output when piping:
emkit workspace list --compactCommand reference
Section titled “Command reference”Commands are grouped by section, matching the emkit help output. In the syntax below:
<value>marks a required argument.[--flag <value>]marks an optional flag.<a|b|c>marks an enum — one of the listed values.- Payloads passed via
--inputaccept inline JSON,@file.json, or@-to read from stdin.
System
Section titled “System”emkit doctor # Show app + database runtime statusemkit mcp # Run EM Kit as an MCP stdio serveremkit help # Show command helpemkit quit # Exit TUI mode (TUI only)
emkit db query --sql <sql> [--params <json>] # Run a SELECT and return rowsemkit db exec --sql <sql> [--params <json>] # Run a write statement (INSERT/UPDATE/DELETE)Example:
emkit db query --sql 'SELECT id, name FROM workspaces LIMIT 10'emkit db exec --sql 'UPDATE workspaces SET name = ? WHERE id = ?' --params '["Platform",1]'Workspace
Section titled “Workspace”emkit workspace list # List workspacesemkit workspace get --id <id> # Get one workspaceemkit workspace create --name <name> # Create workspaceemkit workspace update --id <id> --name <name> # Rename workspaceemkit workspace delete --id <id> # Delete workspaceemkit workspace summary --id <id> # Counts + latest review period snapshot
emkit member list --workspace-id <id> [--limit <n>] # List team membersemkit member get --id <id> # Get one team memberemkit member create --input <json> # Create team memberemkit member update --id <id> --input <json> # Update team memberemkit member delete --id <id> # Delete team memberExample:
emkit workspace create --name "Platform"emkit member create --input '{"workspace_id":1,"name":"Jane Doe","email":"jane@acme.com"}'emkit workspace summary --id 1Delivery
Section titled “Delivery”Work log
Section titled “Work log”emkit work-log list --workspace-id <id> \ [--category <manager|team>] [--contributor-id <id>] \ [--start-date <YYYY-MM-DD>] [--end-date <YYYY-MM-DD>] \ [--days <n>] [--limit <n>]emkit work-log get --id <id>emkit work-log create --input <json>emkit work-log update --id <id> --input <json>emkit work-log delete --id <id>Example:
emkit work-log list --workspace-id 1 --category manager --days 14 --limit 20emkit work-log create --input '{ "workspace_id": 1, "category": "team", "date": "2026-04-24", "title": "Shipped onboarding refresh", "contributors": [{ "member_id": 3, "sentiment": "positive" }]}'Issues and comments
Section titled “Issues and comments”emkit issue list --workspace-id <id> \ [--status <s1,s2>] [--priority <p1,p2>] \ [--assignee-type <me|member|copilot>] [--assignee-member-id <id>]emkit issue get --id <id>emkit issue create --input <json>emkit issue update --id <id> --input <json>emkit issue delete --id <id>
emkit issue-comment list --issue-id <id>emkit issue-comment create --input <json> # issue_id, content required; author_type: user|copilotemkit issue-comment update --id <id> --content <text>emkit issue-comment delete --id <id>Example:
emkit issue list --workspace-id 1 --priority urgent,high --assignee-type meemkit issue create --input '{"workspace_id":1,"title":"Fix login bug","priority":"high"}'emkit issue update --id 5 --input '{"status":"in_progress"}'emkit note list --workspace-id <id> \ [--note-type-id <id>] [--member-id <id>] \ [--start-date <YYYY-MM-DD>] [--end-date <YYYY-MM-DD>] \ [--days <n>] [--limit <n>]emkit note get --id <id>emkit note create --input <json> # workspace_id, name, date requiredemkit note update --id <id> --input <json>emkit note delete --id <id>
emkit note-type list --workspace-id <id>emkit note-type get --id <id>emkit note-type create --input <json> # workspace_id, name requiredemkit note-type update --id <id> --input <json>emkit note-type delete --id <id> # fails if notes reference it or it is system-definedExample:
emkit note list --workspace-id 1 --days 14 --limit 20emkit note create --input '{ "workspace_id": 1, "name": "Weekly staff sync", "date": "2026-04-24", "note_type_id": 2, "content": "## Agenda\n- roadmap"}'emkit inbox create --input <json> # workspace_id, title requiredPeople & Performance
Section titled “People & Performance”Feedback
Section titled “Feedback”emkit feedback list --workspace-id <id> [--status <to_share|shared|all>] [--limit <n>]emkit feedback get --id <id>emkit feedback create --input <json> # workspace_id, member_id, feedback_type, content requiredObjectives
Section titled “Objectives”emkit objective list --member-id <id>emkit objective get --id <id>emkit objective create --input <json> # member_id, title, period_name, start_date, end_date requiredemkit objective update --id <id> --input <json>One-on-ones
Section titled “One-on-ones”emkit one-on-one list --member-id <id>emkit one-on-one get --id <id>Review periods and performance reviews
Section titled “Review periods and performance reviews”emkit review-period list --workspace-id <id>emkit review-period latest --workspace-id <id> # Latest period + summariesemkit review-period create --input <json> # workspace_id, title, start_date, end_date required
emkit performance-review list --member-id <id>emkit performance-review get --id <id>emkit performance-review create --input <json> # member_id, review_period_id requiredemkit performance-review update --id <id> --input <json> # status, rating, notes
emkit peer-feedback list --review-id <id>emkit peer-feedback get --id <id>
emkit pip list --member-id <id>emkit pip get --id <id>Career path
Section titled “Career path”emkit career-path levels --workspace-id <id>emkit career-path update-level --workspace-id <id> --level-id <id> --input <json>emkit career-path skills --workspace-id <id>emkit career-path skill --workspace-id <id> --skill-id <id>emkit career-path create-skill --workspace-id <id> --input <json>emkit career-path update-skill --workspace-id <id> --skill-id <id> --input <json>emkit career-path team-positioning --workspace-id <id> [--member-id <id>]emkit career-path upsert-assessment --member-id <id> --input <json> # skill_id, skill_level_id requiredReports
Section titled “Reports”emkit report history --workspace-id <id> # List stored report snapshotsemkit report get --report-id <id>emkit report delete --report-id <id>Troubleshooting
Section titled “Troubleshooting”CLI install directory is still reported as not in PATH
Section titled “CLI install directory is still reported as not in PATH”- Make sure your shell config contains
$HOME/.emkit(or your selected install directory). - Open a new terminal window (or
sourceyour shell config). - Check current PATH:
echo $PATH- Re-run Refresh in EM Kit Settings → Command Line Tool.
Install directory is not writable
Section titled “Install directory is not writable”Create the directory and set ownership:
mkdir -p ~/.emkitchown -R "$USER" ~/.emkitThen install again from EM Kit Settings.
Development mode behavior
Section titled “Development mode behavior”If EM Kit is running via npm run dev:electron, the installed dev launcher can target your dev app runtime. Keep the dev app running while testing terminal commands.