Projects
17 commands · plm projects
Create a project, shape its settings, and manage what belongs to it: domains, links, secrets, team.
A project is the container everything else lives in: goals, problems, decisions, models, files. This chapter is its administration, all from the terminal: create it, keep its settings honest, register the domains and links that belong to it, point at where its secrets live, and manage who is on the team. Team identity is elvix end to end: lookups resolve against PLMHub's elvix app, so anyone with an elvix account is invitable, even before their first PLMHub sign-in.
Step 1 of 7
Create the container
One name, one slug. The slug is the project's address everywhere: the web URL, the plm link binding, the API. Create it from the terminal and bind your repo to it in the same breath.
plm project · new$ plm project new "Zeropost"✓ project "Zeropost" — link a repo to it with: plm link zeropostzeropostfull form · plm project new "<name>"
Step 2 of 7
Keep General honest
The settings page is a PATCH away: rename, rewrite the summary, flip status, point at the primary repo or domain, swap the icon. Same fields the web Settings → General card edits.
plm project · set$ plm project set --summary "Shared dev cockpit across every 021 project."✓ updated plmhub (summary)full form · plm project set [--name --summary --status --repo --domain --icon]
Step 3 of 7
Claim its addresses
Domains and links are the project's registry: where it lives on the internet, where its code is, what belongs in its orbit. Registering them keeps the map complete, and every agent reading the project sees the same picture.
plm domain · add$ plm domain app.zeropost.de --label "Production"✓ domain app.zeropost.defull form · plm domain <hostname> [--label "…"]
Step 4 of 7
Invite through elvix
The team wizard's truth is elvix, not a local cache: lookups search PLMHub's elvix app by email or username, so anyone with an elvix identity is invitable before they ever signed in here. Roles are viewer, editor, admin; the mirror row is minted on the spot.
plm team · add$ plm team add mira@studio.example --role editor --notify✓ mira@studio.example added as editor · invite email sentfull form · plm team add <email|username> [--role viewer|editor|admin] [--notify]
Step 5 of 7
Point at the secrets
Two modes, one doctrine: --at records WHERE a value lives (the vault stays the source of truth), --value stores it in PLMHub when that is the right home. Agents stop guessing where credentials are; the project says so.
plm secret · set$ plm secret RESEND_API_KEY --at "vault.021.is · Infra/Resend"✓ secret RESEND_API_KEY → vault.021.is · Infra/Resendfull form · plm secret <KEY> --at "<where>" | --value <v>
Step 6 of 7
Resolve them one-shot
The agent's door: inline secrets print the value and exit 0; references print where and how to fetch and exit 2, so scripts can branch. plm secrets lists everything plus the project's how-to-fetch preamble.
plm secret-get$ plm secret-get RESEND_API_KEYRESEND_API_KEY is a reference — PLMHub does not hold the value.WHERE: vault.021.is · Infra/Resendfull form · plm secret-get <KEY>
Step 7 of 7
Read the team
Members with their role and elvix identity, one line each. lookup answers the wizard's first question (who is this?) without touching anything.
plm team · ls / lookup$ plm teamcmqj8e813001vdkt7r04gd3u0 [admin] Edvard Grei edvard@edvone.dev @edvardfull form · plm team [ls] · plm team lookup <email|username>
Also in this chapter
Remove a teammate. Identifiers resolve to the member's user id.
List the project's domains with labels, IPs, and proxy state.
Remove a domain from the registry.
List the project's links with ids.
Register a link: dashboards, docs, anything in the project's orbit.
Remove a link.
List secrets (stored-here or referenced) plus the project's how-to-fetch instructions.
Update a secret pointer or value.
Remove a secret pointer.
Read or write HOW agents fetch real values, shown atop plm secrets.
- Everything except project new runs inside a linked repo (plm link <project-slug>).
- Team identity is elvix: usernames shown are PLMHub-local; lookups resolve against the elvix app, and adding someone mints their local mirror row on the spot.
- Team changes are project-admin only. Roles: viewer ⊂ editor ⊂ admin.
- Secrets are inline OR reference: PLMHub holds the value only when you choose --value. secret-get exits 2 on references so scripts can branch.