production explicitly; without --env, the CLI also defaults to production. Replace PROJECT_ID with your project ID. With Node, substitute npx akter for bunx akter.
List, set and unset
set reads the file’s contents verbatim, including a trailing newline. Create the file securely outside your deployment context. Values are never accepted as command arguments. You can instead pipe input to set; an interactive terminal without --file is refused so a secret is not echoed while you type it.
Setting an existing name replaces its value. Unsetting a customer variable removes it from future captures; neither action changes a running deployment.
Import a dotenv file
-, or no file argument, reads from stdin.
Use one NAME=value per line, optionally prefixed with export. Blank lines and lines starting with # are ignored. Single or double quotes surrounding a value are stripped. There is no shell expansion, escape decoding or multiline-value syntax, and duplicate names are rejected. An inline # is part of an unquoted value, not a comment.
Naming and size rules
- Names begin with a letter or
_, followed by letters, digits or_, with at most 256 characters. - A value cannot contain a NUL character. The CLI accepts at most 64 KiB of UTF-8 input for one value and 1 MiB for a dotenv import.
- You cannot set or remove platform-managed names such as
DEPLOYMENT_IDandFLY_API_TOKEN, or names beginning withAKTER_,ASSERTION_orRUNNER_.DATABASE_URLis a customer variable on every plan.
Database connection
Every environment on every plan requires your ownDATABASE_URL before deploying. Akter does not provision a database or supply this value. akter env list lists its name and update metadata only. Like every secret, the URL cannot be read back.
Use a direct, non-pooled Postgres URL. Transaction-pooler URLs are refused because the runtime requires session semantics. The URL must use postgres:// or postgresql://, include a host, omit fragments and raw whitespace or control characters, and contain exactly one sslmode of require, verify-ca or verify-full. See Connect your Postgres for TLS and migration permissions. Invalid input is refused without echoing the URL.
DATABASE_URL is allowed on every plan. It leaves a running deployment on its captured connection and never touches your database, but the next deploy is refused until you set it again. There is no fallback database or plan-based exception. Changing the URL does not copy data; after setting it, deploy again to use the new connection.
To remove the connection from future deployments: