plmhub
All commands

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.

  1. 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 zeropost
    zeropost

    full form · plm project new "<name>"

  2. 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]

  3. 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.de

    full form · plm domain <hostname> [--label "…"]

  4. 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 sent

    full form · plm team add <email|username> [--role viewer|editor|admin] [--notify]

  5. 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/Resend

    full form · plm secret <KEY> --at "<where>" | --value <v>

  6. 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_KEY
    RESEND_API_KEY is a reference — PLMHub does not hold the value.
    WHERE: vault.021.is · Infra/Resend

    full form · plm secret-get <KEY>

  7. 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 team
    cmqj8e813001vdkt7r04gd3u0 [admin] Edvard Grei edvard@edvone.dev @edvard

    full form · plm team [ls] · plm team lookup <email|username>

Also in this chapter

plm team rm
$ plm team rm <usr_id|email|username>
✓ removed cmq153nal0002vnt7mvj7pehx

Remove a teammate. Identifiers resolve to the member's user id.

plm domains
$ plm domains
dom_plmhubeu_prod plmhub.eu (Production) 172.67.207.39 [proxied]

List the project's domains with labels, IPs, and proxy state.

plm domain-rm
$ plm domain-rm <id|hostname>
✓ removed dom_56caafbe1a62

Remove a domain from the registry.

plm secrets
$ plm secrets
HOW TO FETCH:
vault CLI on edvone-dev; collections per concern.
RESEND_API_KEY vault.021.is · Infra/Resend

List secrets (stored-here or referenced) plus the project's how-to-fetch instructions.

plm secret-edit
$ plm secret-edit <KEY> [--rename <K>] [--at "…"] [--value <v>] [--desc "…"] [--unit <u>]
✓ updated RESEND_API_KEY

Update a secret pointer or value.

plm secret-rm
$ plm secret-rm <KEY>
✓ removed pointer RESEND_API_KEY

Remove a secret pointer.

plm secrets-how
$ plm secrets-how [--set "…" | --stdin]

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.