Think of environments as named contexts for your configuration — isolated, auditable, and built for secure collaboration.
Listing Environments
Theenv:list command displays all environments associated with the current project as defined in
your .ghostable/ghostable.yaml manifest.
Note: You must be logged in and have an initialized project (ghostable init) before using this
command.
Creating Environments
To create a new environment, run theenv:init command:
- Select an environment type (e.g., Production, Staging)
- If
--nameisn’t provided, choose a suggested name or enter a custom slug-formatted name
Environment name (slug)
Pushing Variables
To upload your local.env file to Ghostable, use the push command:
Ghostable only pushes keys that exist in your local .env file.
It will not remove remote keys unless explicitly told to using —prune-server.
Specify which environment to push (e.g.
If omitted, Ghostable will prompt you to choose.
production, staging).If omitted, Ghostable will prompt you to choose.
Path to the
Defaults to
.env file to read from.Defaults to
.env.<env> or .env if unspecified.Skip confirmation prompts and proceed automatically.
Perform a two-way sync instead of a one-way push — remote changes will be merged with local values.
Replace all existing variables on the server with your local
.env contents.Delete remote variables that no longer exist in your local
.env file.Syncing Variables
Theenv:sync command provides a one-way synchronization between your local .env file and the remote environment in Ghostable.
Specify which environment to pull (e.g.
If omitted, Ghostable will prompt you to select one.
production, staging).If omitted, Ghostable will prompt you to select one.
Path to the
Defaults to
.env file where variables will be written.Defaults to
.env.<env> or .env if unspecified.Skip confirmation prompts and proceed automatically.
Pushing a Single Variable
var:push encrypts one environment variable from your local .env file and uploads it to Ghostable.
It reads project + environment info from .ghostable/ghostable.yaml, respects your ignore rules, and uses your local CLI keys to encrypt before upload.
This command only sends the one variable you select. It won’t touch other keys locally or remotely.
Environment to push to (e.g.
If omitted, you’ll be prompted to choose from your manifest.
production, staging).If omitted, you’ll be prompted to choose from your manifest.
The environment variable name to push (e.g.
If omitted, the CLI lists variables from the resolved .env and prompts you to choose.
APP_URL).If omitted, the CLI lists variables from the resolved .env and prompts you to choose.
Path to the .env file to read from.
Defaults to
Defaults to
.env.<env> when --env is provided, otherwise .env.Pulling Variables
To fetch a remote environment and write it to your local.env file, use the pull command:
Your local
.env file will be overwritten unless you use --dry-run.
By default, Ghostable automatically creates a timestamped backup of your existing .env file before writing.You can disable this behavior with --no-backup.Specify which environment to pull (e.g.
If omitted, Ghostable will prompt you to select one.
production, staging).If omitted, Ghostable will prompt you to select one.
Path to the
Defaults to
.env file where variables will be written.Defaults to
.env.<env> or .env if unspecified.Pull only specific variable keys.
Can be repeated, e.g.
Can be repeated, e.g.
--only APP_KEY --only DB_PASSWORD.Preview which variables would be pulled without writing any files.
Show variables that were skipped (ignored) during pull due to local configuration or filters.
Replace the entire local
.env file instead of merging values.Remove local variables that no longer exist on the server.
Create a timestamped backup of your existing
.env file before writing changes.Skip automatic backup creation.
Pulling a Single Variable
var:pull fetches one environment variable from Ghostable, decrypts it locally using your CLI keys, and upserts it into your target .env file (creates the file if missing, replaces the line if it exists, or appends a new line). If the variable’s metadata marks it as commented, the line is written as a comment.
This command only touches the one variable you request. It won’t prune or rewrite other keys.
Environment to pull from (e.g.
If omitted, you’ll be prompted to choose from your manifest.
production, staging).If omitted, you’ll be prompted to choose from your manifest.
The environment variable name to pull (e.g.
If omitted, you’ll be shown a selectable list from the remote environment.
APP_KEY).If omitted, you’ll be shown a selectable list from the remote environment.
Destination file to update.
Defaults to
Defaults to
.env.<env> when --env is provided, otherwise .env.Comparing Environments
The env:diff command helps you see what’s changed between your local .env file and the version stored in Ghostable.- The command pulls the latest encrypted environment bundle from Ghostable for the selected project and environment.
- It then decrypts that bundle locally using your master seed (stored in the OS keychain).
- It reads your local
.envfile, parses each variable, and compares the two sets of values.
Because Ghostable is zero-knowledge, the diff is performed entirely on your machine — no plaintext values are ever sent to Ghostable’s servers.
What’s Compared
For each environment variable, Ghostable compares:
| Field | Description |
|---|---|
| Name | The variable key (for example, APP_KEY, DB_HOST). |
| Value | The decrypted plaintext value from Ghostable compared against the value in your local .env. |
| Commented State | Indicates whether the variable is commented or active, based on Ghostable’s stored metadata. |
Possible Outcomes
The diff output highlights three types of changes:
If there are no differences, you’ll see:
| Symbol | Meaning | Example Output |
|---|---|---|
+ | Added locally – exists in your .env but not in Ghostable | + NEW_FEATURE_FLAG=true |
~ | Updated – exists in both but values differ | ~ APP_URL: https://old -> https://new |
- | Removed locally – exists in Ghostable but not in your .env | - LEGACY_SETTING=on |
No differences detected.Specify which environment to pull (e.g.
production, staging). Skips the interactive
environment selection prompt.Path where the
Defaults to
.env file will be written.Defaults to
.env.<env> or .env if unspecified.Diff only specific variable keys.
Can be repeated, e.g.
Can be repeated, e.g.
--only APP_KEY --only DB_PASSWORD.Show variables that were skipped (ignored) during comparison due to local configuration or filters.