> ## Documentation Index
> Fetch the complete documentation index at: https://docs.internal.nscale.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 1Password

> The 1Password vaults every Fleet Manager agent and worker reads runtime secrets from.

* **Kind:** Dependency
* **Version:** 1
* **Fleet Manager owner:** Fleet Manager squad, #fleet-manager-chat (individual claimant pending)
* **Counterpart owner:** unassigned, SRE (secrets platform)
* **Last reviewed:** 2026-09-09

## What flows

Fleet Manager reads runtime secrets from [1Password](../start-here/glossary#1password) at startup and on cache refresh (ADR-0008,
`src/fleet_manager/core/clients/one_password/`). Vaults are scoped per deployment and environment: `Fleet Manager {deployment} {env}` for runtime secrets and `Fleet Manager {deployment}-operators {env}` for operator-managed
credentials such as [BMC](../start-here/glossary#bmc) and [IPMI](../start-here/glossary#ipmi) logins. Items read today include the [NetBox](../start-here/glossary#netbox) API token, the OpenStack application
credentials (`openstack-undercloud`, `openstack-overcloud`, `openstack-slurm`), `mimir-login`, the [SLURM](../start-here/glossary#slurm) JWT,
`object-storage`, `azure-kusto` and `azure-kusto-admin`, the LLM API key, and the hub root CA that signs the
private-key JWT client certificates. Fleet Manager also writes: enrolment creates the per-[device](../start-here/glossary#node) BMC credential items in the operators vault
(`src/fleet_manager/core/domain/bmc_provisioning.py`), and the site-standup CLI seeds a new site's items (see
[hashicorp-vault](./hashicorp-vault)). Reads go through a 300 s TTL cache (`OnePasswordCacheStore`), and a dozen
workflow activities (enrolment, connectivity verification, BMC cold reset, power cycle, image node, quarantine,
node release, NVLink and [NVSwitch](../start-here/glossary#nvlink) credentials, maintenance, firmware inventory, [Ironic](../start-here/glossary#ironic) clean) fetch BMC or service
credentials at run time rather than at startup. [NATS](../start-here/glossary#nats) client certificates are the exception: they come from [Vault](../start-here/glossary#vault) through
ExternalSecrets, not from 1Password. HashiCorp Vault is becoming the system of record with an SRE-owned sync
copying secrets into 1Password; whether Fleet Manager should read Vault directly is an open decision recorded in
ADR-0046's context and pending an ADR-0008 update.

## What breaks if this changes

A 1Password outage stops enrolment outright, because enrolment must create the device's BMC credential item and
cannot. It also fails any running workflow whose activity fetches a credential after the 300 s cache entry has
expired: connectivity verification, re-enrolment, BMC cold reset, power cycle, image node, quarantine and release,
NVLink and NVSwitch operations. A revoked service-account token or a renamed item has the same effect at the next
fetch, and a wrong vault selector points a satellite at another site's credentials. Because the root CA lives here
too, an outage at rollout time blocks new client certificates even though running pods keep their cached secrets.

## Enforcement

* **Principal:** the per-environment 1Password service account each agent runs with.
* **Mechanism:** 1Password service-account token injected by the charts; `OP_VAULT_SELECTOR` picks the deployment
  (`src/fleet_manager/settings/base/logging.py`, `OnePasswordSettings`).
* Deployment guide: [Site Dependencies and External Systems](../deployment-guide/new-site-deployment/dependencies-and-external-systems)
  and [PKI and Certificate Trust](../deployment-guide/pki-and-certificate-trust).

## Gaps

* The Vault-to-1Password sync is owned by SRE and not described in this repository; a sync failure surfaces as a
  stale secret with no Fleet Manager signal.
* Direct Vault read is undecided.

## Change log

* 2026-09-09 v1: created; describes present behaviour.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.