Command-line tool for My Next Adventure.
mna is an open-source CLI for managing your trips on My Next Adventure.
It also ships as a Claude Code skill so Claude
can plan, research, build, cost, and manage whole trips on your behalf — see
skills/mna/SKILL.md.
Status: pre-1.0, alpha. Tagged releases publish binaries to GitHub Releases. npm and Homebrew distribution land with the first tag.
npm install -g @mantacodedevs/mna-cliThis installs the mna binary. It bundles all dependencies as a single
JS file; no Bun required.
brew install mantacodedevs/tap/mnaInstalls a precompiled native binary. The tap is updated per release; see RELEASING.md.
# Pick the right artifact for your OS/arch:
# mna-darwin-arm64.tar.gz (Apple Silicon)
# mna-darwin-x64.tar.gz (Intel Mac)
# mna-linux-x64.tar.gz (Linux x86_64)
curl -L -o mna.tar.gz \
https://github.com/MantaCodeDevs/mna-cli/releases/latest/download/mna-darwin-arm64.tar.gz
tar -xzf mna.tar.gz
mv mna-darwin-arm64 /usr/local/bin/mna
mna --versiongit clone https://github.com/MantaCodeDevs/mna-cli
cd mna-cli
bun install
bun run codegen
bun run build
bun linkbun run build is required before bun link — it produces dist/mna.js, the bin
target. bun link only creates the mna symlink if that file already exists, so
skipping the build leaves you with command not found: mna.
mna should then be on your PATH. See DEVELOPMENT.md.
mna login # opens browser for one-click consent
mna trips list # see your trips
mna trips show <tripId> # detail viewIf you prefer headless / paste-token login:
mna login --paste-token <key> # generate the key from the user menu on app.mynextadventure.cloudmna doubles as a Claude Code skill — install it and Claude
can plan, research, cost, and manage whole trips for you. One command:
git clone --depth 1 https://github.com/MantaCodeDevs/mna-cli /tmp/mna-cli && mkdir -p ~/.claude/skills && cp -r /tmp/mna-cli/skills/mna ~/.claude/skills/This drops the skill at ~/.claude/skills/mna/. Start (or /reload) Claude Code and just ask
it to plan a trip — the skill triggers on its own. (Already have the repo cloned? Just
cp -r skills/mna ~/.claude/skills/.)
Installed via npm? The skill ships inside the package — no clone needed:
mkdir -p ~/.claude/skills && cp -r "$(npm root -g)/@mantacodedevs/mna-cli/skills/mna" ~/.claude/skills/Other AI coding agents can use the same skills/mna/SKILL.md playbook — it's plain
markdown driving the CLI.
The skill drives the mna CLI, so install the CLI (above) and run mna login first.
Every command supports --json for piping into jq or Claude.
| Command | Description |
|---|---|
mna login [--paste-token <key>] |
Browser-mediated login (default) or headless paste-token. |
mna logout [--local-only] |
Revoke the current API key server-side and delete local credentials. |
mna whoami [--verify] |
Show the current user; --verify re-fetches from /v1/me. |
mna keys list |
List active API keys with current flag on the calling key. |
mna keys revoke <name> [--yes] |
Revoke an API key by name. |
mna config get|set apiBaseUrl [<url>] |
Read/override the API base URL locally. |
| Command | Description |
|---|---|
mna trips list [--status=planning|ready|finished|cancelled] [--include-example] |
List trips. |
mna trips show <tripId> [--all-options] |
Show one trip in detail. |
mna trips create --name <name> [--cover-photo <url>] |
Create a new trip. |
mna trips edit <tripId> [--name=...] [--cover-photo=...] [--status=...] |
Update trip-level fields. |
mna trips delete <tripId> [--yes] |
Delete a trip permanently. |
mna trips share <tripId> |
Generate a shareable link for the trip. |
mna trips unshare <tripId> |
Revoke all share links. |
| Command | Description |
|---|---|
mna variants add <tripId> --name <name> [--notes=...] |
Add a new variant. |
mna variants duplicate <tripId> <variantId> |
Duplicate a variant. |
mna variants edit <tripId> <variantId> [--name=...] [--notes=...] |
Update variant fields. |
mna variants select <tripId> <variantId> |
Set the selected variant. |
mna variants delete <tripId> <variantId> [--yes] |
Delete a variant. |
| Command | Description |
|---|---|
mna destinations add <tripId> <variantId> --place <name> [--notes=...] [--start-date=YYYY-MM-DD] [--end-date=YYYY-MM-DD] [--return-to-home] |
Add a destination. |
mna destinations edit <tripId> <variantId> <destinationKey> [--place=...] [--notes=...] [--start-date=YYYY-MM-DD] [--end-date=YYYY-MM-DD] [--no-return-to-home] |
Update destination. |
mna destinations reorder <tripId> <variantId> --order=key1,key2,key3 |
Reorder destinations. |
mna destinations delete <tripId> <variantId> <destinationKey> [--yes] |
Delete a destination. |
| Command | Description |
|---|---|
mna options add <tripId> <variantId> <destinationKey> <kind> --from-json=<file> [--free-cancellation-until=<date>] |
Add an option from JSON. --free-cancellation-until (accommodation only) merges into the body. |
mna options edit <tripId> <variantId> <destinationKey> <kind> <optionKey> [--from-json=<file>] [--free-cancellation-until=<date>] |
Edit an option. For accommodation, --free-cancellation-until alone updates the date without a JSON file. |
mna options delete <tripId> <variantId> <destinationKey> <kind> <optionKey> [--yes] |
Delete an option. |
mna options select <tripId> <variantId> <destinationKey> <kind> <optionKey> |
Select an option. |
mna options deselect <tripId> <variantId> <destinationKey> <kind> |
Deselect the current option. |
| Command | Description |
|---|---|
mna events add <tripId> <variantId> --from-json=<file> |
Add an event. |
mna events edit <tripId> <variantId> <eventKey> --from-json=<file> |
Edit an event. |
mna events toggle <tripId> <variantId> <eventKey> |
Toggle the event's selected state. |
mna events delete <tripId> <variantId> <eventKey> [--yes] |
Delete an event. |
| Command | Description |
|---|---|
mna access list <tripId> |
List collaborators on a trip. |
mna access invite <tripId> --email=... --role=VIEW|VOTER|EDIT|OWNER |
Invite a collaborator by email. |
mna access set-role <tripId> --user=<userId> --role=... |
Change a collaborator's role. |
mna access revoke <tripId> --user=<userId> [--yes] |
Remove a collaborator. |
mna access create-invite-link <tripId> --role=VIEW|VOTER|EDIT |
Generate an invite-link token. |
mna access list-invite-links <tripId> |
List active invite links. |
mna access revoke-invite-link <tripId> <tokenId> [--yes] |
Revoke an invite link. |
mna vote option <tripId> <variantId> <destinationKey> <kind> <optionKey> --value=up|down|clear |
Vote on an option. |
mna vote event <tripId> <variantId> <eventKey> --value=up|down|clear |
Vote on an event. |
mna votes list <tripId> <variantId> |
List votes for a variant. |
| Command | Description |
|---|---|
mna goals list [--collection=<id>] [--status=visited|dreaming|planning] |
List goals. |
mna goals show <goalId> |
Show one goal. |
mna goals add --from-json=<file> |
Create a goal from JSON. |
mna goals quick-add --text="..." |
Quick-add a goal by name or URL. |
mna goals edit <goalId> --from-json=<file> |
Update a goal. |
mna goals delete <goalId> [--yes] |
Delete a goal. |
mna goals link-trip <goalId> <tripId> |
Link a goal to a trip. |
mna goals unlink-trip <goalId> |
Unlink a goal from its trip. |
mna goals mark-visited <goalId> [--date=<ISO>] |
Mark a goal as visited. |
mna goals mark-dreaming <goalId> |
Reset a goal to "dreaming". |
| Command | Description |
|---|---|
mna collections list |
List your collections. |
mna collections show <collectionId> |
Show a collection with nested goals. |
mna collections create --name=<name> [--description=...] [--emoji=...] [--visibility=private|shared|public] |
Create a collection. |
mna collections edit <collectionId> --from-json=<file> |
Update a collection. |
mna collections delete <collectionId> [--yes] |
Delete a collection. |
mna collections add-goal <collectionId> <goalId> |
Add a goal to a collection. |
mna collections remove-goal <collectionId> <goalId> |
Remove a goal from a collection. |
mna collections share <collectionId> |
Generate a public share URL. |
mna collections open-shared <token> |
Open a publicly shared collection (no login required). |
All command groups (auth/keys/config, trips, variants, destinations, options, events, access, vote/votes, goals, collections) are wired, CI-tested, and backed by live /v1/ endpoints in production. Pre-1.0 means the public API contract is still allowed to break under /v1/. Once 1.0.0 ships, /v1/ becomes stable; breaking changes require /v2/.
The contract of record is https://api.mynextadventure.cloud/v1/openapi.json. If a write seems to "succeed" but a field doesn't stick, re-fetch with mna trips show <id> --json to confirm — and check the request body shape against the OpenAPI schema for that endpoint.
| Env var | Description |
|---|---|
MNA_API_KEY |
Override the key from the credentials file. Useful for CI. |
MNA_API_BASE_URL |
Override the API base URL. Useful for local dev. |
XDG_CONFIG_HOME |
Where the credentials file is stored. Default: ~/.config. |
MNA_DEBUG=1 |
Print error stack traces. |
NO_COLOR=1 |
Disable ANSI colors. |
See DEVELOPMENT.md. MIT licensed.