Oneport Docs

CLI

Drive feedback, roadmap, and changelogs from the terminal — interactive for humans, scriptable for agents.

The oneport CLI puts your whole workspace in the terminal. It's built to be equally good for humans (interactive, guided) and AI agents like Claude Code, Cursor, or Codex (scriptable, JSON-first, never blocks on a prompt).

Install

npm install -g oneport
# or run without installing
npx oneport login

Log in

oneport login        # paste your API key, then pick a workspace

Create an API key in Dashboard → Agents (details). Any command that needs auth prompts you to log in first when run interactively, or exits with a clear error when run in a script.

oneport whoami               # who am I, which workspace, which API
oneport workspace list       # workspaces this key can access
oneport use <slug>           # switch the active workspace anytime

Commands

posts      list | get | create | update | search | merge | unmerge
           | comment | comments | vote | unvote
boards     list | create
roadmap
changelog  list | create | update
ship <postId> --title --content     # mark shipped + publish a changelog
webhooks   list | create | delete
domain     get | set | remove
settings   get | set | logo set|remove
context                              # brand voice + style exemplars (for agents)
api <METHOD> <path>                  # raw authenticated request — full coverage

Run oneport <command> --help for flags. The raw api command reaches 100% of the REST API and fills {slug} from your active workspace:

oneport api GET '/v1/workspaces/{slug}/posts' --query 'sort=top'
oneport api POST '/v1/workspaces/{slug}/posts' \
  --data '{"boardSlug":"features","title":"Hi","content":"from the API"}'

For AI agents

The CLI is designed to be driven non-interactively:

  • Auth from the environment — set ONEPORT_API_KEY (and optionally ONEPORT_WORKSPACE); no login step needed. These are the same variables the MCP server uses.
  • --json prints raw API JSON to stdout; all status, progress, and prompts go to stderr, so oneport posts list --json | jq is always clean.
  • Never blocks — when output isn't a TTY (or with --no-input, or CI=true) the CLI fails fast with an actionable message instead of prompting.
  • Stable exit codes: 0 ok · 1 runtime error · 2 usage · 3 auth required · 4 not found.
export ONEPORT_API_KEY=your-key
export ONEPORT_WORKSPACE=acme
oneport posts list --json | jq '.[].title'
oneport context --json        # fetch brand voice before drafting a changelog

Configuration

Resolution order is flag → environment → config file → prompt (the prompt only appears in an interactive terminal).

SettingFlagEnvironmentConfig key
API keyoneport login --api-keyONEPORT_API_KEYapiKey
Workspace--workspace, -wONEPORT_WORKSPACEworkspace
API URL--api-urlONEPORT_URL (or ONEPORT_API_URL)apiUrl

Credentials are stored at ~/.config/oneport/config.json (mode 0600; honors $XDG_CONFIG_HOME, override with ONEPORT_CONFIG_DIR). Color honors NO_COLOR and turns off automatically when output isn't a terminal.

Prefer MCP?

Coding agents can also connect over the Model Context Protocol — see Connect an agent. The CLI, MCP server, and SDK all speak the same REST API; pick whichever fits your workflow.

On this page