CLI

Meridian in your terminal.
Five commands. One token.

Meridian's tools, from a terminal. meridian login signs you in over OAuth. meridian check NG-GB runs the eight readiness checks against your vault and prints the verdict. Visa lookups work without sign-in.

Sign in once, no passwordFree lookups, OAuth for readinessJSON output for scripts and agents

Install

Node 20 or newer. Pick a package manager.

bash
$ npm install -g @usemeridian/cli
meridian login

npm

Global binary. Available as `meridian` from any shell after install.

npx

Zero-install. Useful for CI runs or trying it once before committing.

pnpm / yarn

Same global install path. Pick the package manager your team already standardized on.

Commands

Five commands, two tiers. Lookups work without a token. Readiness reads your vault and needs OAuth.

  1. 1
    meridian login

    Sign in via browser. OAuth device flow; new accounts bootstrap via magic link.

  2. 2
    meridian whoami

    Show the signed-in account. Smoke test that your token still works.

  3. 3
    meridian requirements NG-GB

    Anonymous. Verified visa requirements for a corridor. Documents, fee, processing time, sources.

  4. 4
    meridian check NG-GB

    Auth'd. Run the eight readiness checks against your vault. Returns a 0-100 score and per-check status.

  5. 5
    meridian feedback NG-GB "fee is wrong"

    Tell the Meridian team something's off (or right). Anonymous-friendly.

Sign in without a password

Device flow with pairing-code parity (RFC 8628). Your terminal and the browser show the same code; you verify they match before approving. New accounts bootstrap via magic link on the same screen. No password ever touches your keyboard.

text
$ meridian login
Open: https://usemeridian.app/oauth/device?user_code=MERI-AB3-X9K

  code: MERI-AB3-X9K
  (your terminal shows MERI-AB3-X9K. verify it matches before approving)

Waiting for approval...
✓ Signed in as you@example.com

Why the codes have to match

A phishing site can't make your terminal show its code. The CLI prints the code first, the browser shows the same code next to the Approve button, and approval gates on a 'this matches my terminal' checkbox. Same pattern Stripe CLI uses.

Where the token lives

Tokens live at ~/.config/meridian/credentials.json (mode 0600). Override with --token, MERIDIAN_TOKEN, or pick a profile with MERIDIAN_PROFILE.

Scripting + agents

Pass --json on any command and the response shape matches the MCP tool's structuredContent. Pipe to jq, fan out, feed to another agent.

text
$ meridian requirements NG-GB --json | jq '.data.documents[] | .name'
"Passport"
"Visa application form"
"Two recent passport photos"
"Proof of accommodation"
"Bank statements (last 3 months)"
...

Install. Sign in. Check.
That's the whole thing.

No password. No API key juggling. Run meridian login once. Every readiness check from there is a single command.