Documentation
ZynOps CLI reference
Installing, signing in, pointing the CLI at a model provider, and what to do when something does not work. Requires Node.js 18 or newer on macOS, Linux, or Windows.
$ npm install -g @zynopssolutions/zynops-cliThat puts a single zynops binary on your PATH. Sign in once with zynops login, then run zynops inside any project.
Command reference
- zynops
- Starts an interactive session in the current directory. This is the main way to use it.
- zynops login
- Connects your account. Prints a short device code, opens your browser to approve it, then stores the session locally.
- zynops logout
- Clears the local session and revokes it on the server. If the server cannot be reached, the local copy is still removed and the session expires on its own.
- zynops account
- Prints the signed-in email, plan name and price, subscription status, and today’s request and credit counts.
- zynops usage
- Prints today’s usage against your plan limits and the time the counters reset.
- zynops plans
- Lists every plan with its daily limits and marks the one you are on. Works offline; the current-plan marker is skipped if the backend is unreachable.
- zynops upgrade
- Opens the pricing page in your browser.
- zynops --version
- Prints the installed version. Also available as -v.
- zynops --help
- Prints the command list. Also available as -h or zynops help.
Anything not in this list is handed to the ZynOps engine, so flags and subcommands you pass through are interpreted there rather than by the wrapper.
Choosing a provider
ZynOps talks to any endpoint that implements the OpenAI chat API. Provider settings are read from your environment when the CLI starts, so they can live in your shell profile, in a per-project script, or in your CI configuration.
| Variable | What it sets |
|---|---|
| OPENAI_API_KEY | Your key for the provider. Read from the environment at run time and never sent to us. |
| OPENAI_BASE_URL | The endpoint to call. Point this at DeepSeek, at a local Ollama server on port 11434, or at LM Studio on port 1234. |
| OPENAI_MODEL | The model name to request, as that provider spells it. |
One further environment flag switches the engine into OpenAI-compatible mode. It is listed with worked examples for each provider in the README.md that ships inside the npm package — see it after installing, or on the package page.
Requests you send to your own provider are billed by that provider. A model running on your own machine costs nothing and needs no internet connection, and neither case counts against the daily limits on your ZynOps plan.
Config and tokens
- ~/.zynops/
- Per-user configuration directory. Nothing is written into your project, so there is nothing to add to .gitignore.
- ~/.zynops/auth.json
- Where the session token goes when no operating system keychain is available. File permissions are restricted to your user account. Only a hash of the token is held server-side, so the value in this file is the only copy.
- ZYNOPS_API_URL
- The API the CLI talks to for login, account, and usage. It has a built-in default of https://cli.zynopssolutions.online/api, so those commands work without any configuration. Set this to override it — https://your-deployment/api when you self-host, or http://localhost:3000/api against a local checkout. Setting it to an empty value (ZYNOPS_API_URL=) disables the backend deliberately: those three commands then print how to set it and exit instead of failing. Coding sessions do not use it, and neither do upgrade or plans.
- ZYNOPS_CONFIG_DIR
- Overrides the configuration directory. Useful for keeping separate accounts, or for tests that should not touch your real session.
Troubleshooting
- Account commands say the backend cannot be reached
- login, account, and usage reach https://cli.zynopssolutions.online/api by default, so an unset ZYNOPS_API_URL is not the cause. Check your network first. If you self-host or are working against a local checkout, set ZYNOPS_API_URL to your own deployment, or to http://localhost:3000/api; setting it to an empty value turns the backend off on purpose. These commands degrade with a message rather than crash, and coding sessions do not touch the API at all, so neither case ever stops you working. upgrade and plans are unaffected: upgrade only opens a browser URL, and plans reads its table from the CLI itself.
- The browser did not open during login
- The CLI prints the authorization URL and an eight-character code before it starts waiting. Copy the URL into any browser, on any machine, and enter the code if you are asked for it. The code is single-use and short-lived, so run zynops login again if it has expired.
- Your session expired
- Sessions have an expiry, and you can revoke one from another machine. When the CLI sees a rejected token it clears the local copy and asks you to run zynops login again.
- A request came back over quota
- You have used the day’s requests or credits. Either move up a plan, which applies immediately, or wait for the reset at 00:00 UTC. zynops usage shows exactly which of the two counters ran out.
- The keychain was unavailable
- Keychain support is optional. Without it the session token is written to ~/.zynops/auth.json with permissions restricted to your user account, and the CLI tells you it has done so. Set ZYNOPS_TOKEN_STORAGE=file to skip the keychain deliberately.