- Project Secrets for shared runtime credentials used by deployed services
- Room Secrets for room-scoped or identity-scoped credentials used by room services, toolkits, and participants
- Image Pull Secrets for registry credentials used only to pull private images
How to choose
| Secret type | Use it for | Stored in | Read by | How you reference it |
|---|---|---|---|---|
| Project Secret | Shared runtime credentials for deployed services | The project | The running service container | container.secrets |
| Room Secret | Room-local or identity-scoped credentials for services, toolkits, and participant flows | A room, scoped to an identity | A room service, toolkit, or participant flow | container.environment[].secret, room.secrets, --header-secret |
| Image Pull Secret | Credentials to pull a private container image | The project | MeshAgent while pulling the image | container.pull_secret |
Related concepts
Two related concepts often appear next to secrets, but they are not secret types:- Token: a MeshAgent-issued credential that gives a service access to MeshAgent APIs
- Plain environment variable: a literal value written directly into a service spec or passed at launch
- Tokens authorize MeshAgent access
- Secrets store sensitive external values
- Environment variables are one way to deliver values into a container
What a secret does and does not do
A secret keeps a sensitive value out of your manifest, source code, and UI while still making it available to the runtime that needs it.- the service process can read a secret that is injected at runtime
- the model does not automatically see that value
- the value is only exposed to the model if your code, tools, logs, or prompts explicitly pass it through
If you are packaging and sharing a service
ServiceTemplate is the secure way to collect installer-provided secrets when you are sharing an agent, toolkit, or service with other people.
In practice:
- a
ServiceTemplatevariable is the input field shown to the installer - Powerboards can store that value as a room secret using
meshagent.secret.*annotations - the installed service later reads that stored room secret with
secret:
meshagent room secret set.