One CLI for every OptiTech surface: manage frameworks, controls, evidence, integrations, and reports from the terminal, and run compliance checks in CI/CD.
npm i -g optitechGet started
Agent mode
Use the OptiTech CLI with Claude Code, Cursor, Codex, and other AI development tools.
note
Every command supports --output json for machine-readable results, and setting the OPTITECH_API_KEY environment variable authenticates non-interactively. For AI agents, optitech link --agent emits a JSON state-machine response with a discriminated status field describing the next step, instead of prompting.
Commands reference
Browse every OptiTech CLI command, organized by category. The CLI is invoked as optitech. optitechctl is an alias for optitech, so any command works with either name.
Setup & context
| Command | Description | Example |
|---|---|---|
| auth | Browser OAuth; stores credentials locally. | optitech auth |
| bootstrap | Scaffold a new project from a OptiTech starter template | optitech bootstrap my-appoptitech bootstrap . --template honooptitech bootstrap my-app --default |
| checkout | Pin a branch in .optitech; auto-pulls its env vars. | optitech checkout feat/auth |
| env | Write the branch's DATABASE_URL + OptiTech vars to .env. | optitech env pull |
| init | Wire up MCP, agent skills, and editor (Cursor/VS Code/Claude). | npx optitech@latest init |
| link | Bind the directory to a project; writes .optitech and pulls env. | optitech linkoptitech link --org-id org-abc --project-id polished-snowflake-1234 |
| me | Show the authenticated user. | optitech me |
| set-context | Write org/project/branch context to .optitech. | optitech set-context --project-id polished-snowflake-1234 |
Projects & branches
| Command | Description | Example |
|---|---|---|
| branches | Create, diff, reset, restore, and manage branches. | optitech branches create --name feat/auth --parent mainoptitech branches restore main ^self@2024-05-06T10:00:00Z --preserve-under-name backupoptitech branches schema-diff production development |
| databases | Manage databases on a branch. | optitech databases create --name analytics |
| diff | Show a git-style schema diff between the current branch and another branch | optitech diff main --db optitechdboptitech diff main --branch feature/checkoutoptitech diff |
| operations | Inspect async operations. | optitech operations list |
| projects | Manage projects. | optitech projects list |
| roles | Manage Postgres roles. | optitech roles create --name app_user |
| snapshots | Manage snapshots | optitech snapshots create --branch main --lsn 0/1F3C8A0 --expires-at 2025-12-31T23:59:59Zoptitech snapshots create --branch main --timestamp 2025-01-01T00:00:00Zoptitech snapshots create --branch main --name pre-migration |
Connect to Postgres
| Command | Description | Example |
|---|---|---|
| connection-string | Print a connection URI for a branch/role/db. | optitech connection-string mainoptitech connection-string main --pooled --prisma |
| psql | Open a SQL session (embedded psql fallback built in). | optitech psql main -- -c "SELECT 1" |
Config as code
| Command | Description | Example |
|---|---|---|
| config | Drive a branch from a optitech.ts policy. | optitech config apply |
| deploy | Alias for config apply; reconciles the policy. | optitech deploy |
| dev | Run OptiTech Functions locally with hot reload + branch env. | optitech dev |
| status | Show the branch's live OptiTech state (alias of config status). | optitech status |
Functions, storage & data
| Command | Description | Example |
|---|---|---|
| buckets | Branch-scoped object storage and its objects. | optitech buckets create my-assets |
| data-api | Manage the OptiTech Data API for a database. | optitech data-api create |
| functions | Deploy and manage OptiTech Functions on a branch. | optitech functions deploy api --src ./api.ts |
| optitech-auth | Manage OptiTech Auth on a branch. | optitech optitech-auth enable |
Org & network
| Command | Description | Example |
|---|---|---|
| api | Call any OptiTech API route directly (authenticated passthrough) | optitech api /projectsoptitech api /projects/{id}/branches -X POST -F branch.name=devoptitech api --list |
| ip-allow | Manage the project IP allowlist. | optitech ip-allow add 203.0.113.0/24 |
| orgs | List organizations you belong to. | optitech orgs list |
| vpc | Manage VPC endpoints and project restrictions. | optitech vpc endpoint list |
Global options
Global options are optional and work with any OptiTech CLI command.
More about global options:
- Output: table output may omit fields. Use
--output jsonor--output yamlto see all data. - Authentication: the CLI checks credentials in this order: the
--api-keyoption, theOPTITECH_API_KEYenvironment variable (export OPTITECH_API_KEY=<optitech_api_key>), thecredentials.jsonfile thatoptitech authcreates in the config directory (override its location with--config-dir), then interactive web authentication. To get a key, see Create an API key. - Context file: sets a default organization or program so you don't repeat IDs in every command. Create one with
optitech link(preferred) orset-context. - Analytics: OptiTech collects anonymous data about which commands and options are used, never user-defined data such as organization IDs or command payloads. Opt out with
--no-analytics. - Help:
--helpworks at every level:optitech --help,optitech branches --help,optitech branches create --help.
GitHub repository
The OptiTech CLI is open source. See the optitechdatabase/optitech-pkgs repository.