@oneport-dev/cli
v0.1.0
Published
Oneport from the terminal — feedback, roadmap & changelog for teams (and agents) that ship.
Readme
@oneport-dev/cli
Oneport from the terminal — feedback, roadmap & changelog for teams (and agents) that ship. Built to be equally good for humans (interactive, guided) and AI agents (scriptable, non-interactive, JSON-first).
Install
npm install -g @oneport-dev/cli
# or run without installing
npx @oneport-dev/cli loginQuick start
oneport login # paste your API key, then pick a workspace
oneport posts list # any command prompts you to log in if you aren't
oneport use <workspace> # switch the active workspace anytimeGet an API key from the dashboard (Settings → API keys, the Agents page). Any command that needs auth will prompt you to log in first when run interactively, or exit with a clear error when run in a script.
Auth & workspaces
| Command | What it does |
| --- | --- |
| oneport login [--api-key <k>] | Store an API key; pick a workspace |
| oneport logout | Clear stored credentials |
| oneport whoami | Show the current identity, workspace, and API URL |
| oneport workspace list | List the workspaces your key can access |
| oneport use <slug> | Switch the active workspace (alias of workspace select) |
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 — 100% coverageRun oneport <command> --help for flags. Example raw call (the {slug} is
filled 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 optionallyONEPORT_WORKSPACE); nologinstep required. --jsonprints raw API JSON to stdout. All status/progress/prompts go to stderr, sooneport posts list --json | jqis always clean.- Never blocks — when not a TTY (or with
--no-input, orCI=true) the CLI fails fast with an actionable message instead of prompting. - Stable exit codes:
0ok ·1runtime error ·2usage ·3auth required ·4not found.
export ONEPORT_API_KEY=sk_...
export ONEPORT_WORKSPACE=acme
oneport posts list --json | jq '.[].title'
oneport context --json # fetch brand voice before drafting a changelogConfiguration
Resolution order: flag → environment → config file → prompt (prompt only when interactive).
| Setting | Flag | Env | Config key |
| --- | --- | --- | --- |
| API key | oneport login --api-key | ONEPORT_API_KEY | apiKey |
| Workspace | --workspace, -w | ONEPORT_WORKSPACE | workspace |
| API URL | --api-url | ONEPORT_URL (ONEPORT_API_URL also works) | 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 is disabled when output isn't a TTY.
License
MIT
