Core concepts

Projects & environments

A company holds projects; a project holds environments; an environment holds an ordered history of encrypted versions.

Companies

A company is your workspace and the unit that plans apply to. You can belong to several companies, and the dashboard lets you switch between them. Create one during init or from the Team page in the dashboard.

terminal
$ packshell init "api-gateway" --company-name "Acadable Labs"

Projects

A project maps to a codebase or service and owns one project encryption key. Running initin a repository generates that key locally and writes a small local config that links the directory to the project, so subsequent push and pull commands know what they operate on.

Projects are created from the CLIProject creation requires generating the encryption key on your machine, so it happens throughpackshell init. The dashboard then lists the project, its environments, and version history.

Environments

Each project has named environments such as development, staging, orproduction. The default environment is set at init time (developmentunless you pass --env). Target a specific environment on any sync command:

terminal
$ packshell push --env staging$ packshell pull --env production --file .env.production

Versions

Every push creates a new immutable version with its cipher blob, checksum, key count, and who pushed it. Nothing is overwritten, so history is a reliable record of how an environment evolved. The number of environments per project and how long history is retained depend on your plan — see plans & limits.

Staying current

Pull the latest manually, or keep a working copy continuously updated:

terminal
# one-off$ packshell pull# continuous: re-pull whenever a newer version appears$ packshell watch --interval 15