Agent onboarding — how an agent joins the team
If you are an agent starting work in this lab, this page is your front door. You hold one credential of your own; everything else you fetch from Vault, scoped to exactly what your work needs. Read Part A once to understand the plumbing, then keep Part B open while you work.
Part A — How it is set up
Identity: LDAP → Vault → per-service credentials
- Your identity is a user in the lab directory (OpenLDAP,
dc=agentops,dc=local) — for the Cursor agent,uid=svc-cursor-agent,ou=users— and a member of the directory groupcn=agents,ou=groups. The directory is the same one the humans’ Argo CD, Grafana, and Harbor logins use; you are a machine member of the same team, not a side channel. - Vault (https://vault.rhels.com) has an LDAP auth method
(
ldap/). Vault binds the directory in-cluster to verify your password — the same trust domain; LDAPS at ldap.rhels.com is the tailnet-facing door, not the in-cluster path — then maps your directory groups to Vault policies. Groupagentsmaps to the policyagent-cursor. agent-cursoris read-only and enumerates leaf paths only: no listing parents, no writes, no deletes, nothing undersecret/platform/*. The policy source is in git (rhels/local-k8s-gitops,vault-access/agents/agent-cursor.hcl) with the operator record beside it — if you believe you need a path you cannot read, that is a change request on the issue, not a workaround.- Tokens from the LDAP mount live 8 hours by default and are renewable up to a 24-hour maximum (mount tuning). Re-login with your bootstrap credential always works, so an expired token is a login away, never a page-the-owner event.
- Your directory entry and its group also live in the directory
seed (
rhels/lab-agentops,gitops/modules/ldap/ldap.yaml, {SSHA} hash only), so a directory rebuild keeps your account.
Rotation and revocation
- Rotate = change the directory password (seed hash updated to match) and update the escrow record (below). Downstream service credentials are unaffected — they are Vault reads, not copies tied to your password.
- Revoke = disable the directory account or remove it from
cn=agents. Outstanding Vault tokens die at expiry (≤24h) or immediately by accessor revocation.
The escrow
Your bootstrap password exists in exactly two places: your own
environment (the owner provisioned it there) and an owner-side
escrow record in Vault at secret/platform/agents/cursor-agent-ldap
(keys username, password, note). Your policy deliberately
cannot read it — the escrow is how the owner recovers or rotates
you, not a place you fetch from.
Part B — How to use it (the agent runbook)
Your one bootstrap secret
Your LDAP username (svc-cursor-agent) and its password, which
the owner placed in your environment/secret store. Nothing else
is yours to hold long-term: fetch service credentials from Vault
per session, use them, let them go.
Log in
export VAULT_ADDR=https://vault.rhels.com
vault login -method=ldap username=svc-cursor-agent
# (password prompt) — or non-interactively:
# curl -X POST $VAULT_ADDR/v1/auth/ldap/login/svc-cursor-agent \
# -d '{"password": "<from your environment>"}'
vault kv get secret/lab/crc/cursor-agent # sanity: your first read
Which Vault path unlocks which system
| Vault path | Key(s) | System it unlocks |
|---|---|---|
secret/lab/crc/cursor-agent | token | CRC Kubernetes API — build a kubeconfig for https://api.crc.rhels.com with tls-server-name set to the operator proxy’s Tailscale machine name (the crc-operator device — see the Tailscale & Cloudflare page) and this service-account token; kubectl get nodes should answer crc Ready |
secret/lab/harbor/ci-password | username, password | Harbor (harbor.rhels.com) — registry login and Harbor API as the CI identity |
secret/lab/argocd/mini-initial-admin | password | Argo CD, tooling plane (argo.rhels.com), user admin. CRC’s Argo CD is OAuth-only — there is no password door; work it through the CRC access above |
secret/lab/grafana/crc-admin | username, password | CRC Grafana — API basic auth |
Anything not in this table is out of your policy’s reach by design (you will get a clean 403 — that is the system working).
Tools and team protocol
- Agent/tester images (2026-11-01): sources are in
rhels/lab-monorepo(agents/tester-developerandagents/tester-admin). They are pipeline-built with a Trivy CRITICAL gate, cosign keyless-signed on main, pushed to Harbor’sagentsproject, and digest-pinned in GitOps (all ten references). The hand-built path is retired (agent-testers/images/removed). lab-monorepo#72 closed; GitOps PR #127 merged. - Work flows through GitHub issues on the lab repos: Spark
drafts and coordinates, Tesla reviews, execution starts when
both agree — decisions follow the crew’s ZEN.md
(
rhels/team). Git is the source of truth; never commit a credential, and never print one into an issue, a log, or a chat.