Zephr

Governance · Fleet

Your connections,without your secrets.

Fleet holds the persistent state behind every client connection: which servers a profile names, which device it is enrolled on, and which secrets it needs — as references, never as values. The profile is only valid while the scope it is bound to stays admitted.

Profiles + adaptersReference-only secretsAdapter conformanceDevice key plane
How it works

Enrol, bind, describe, plan, apply.

The order matters. A profile that has not been bound to an admitted scope cannot be projected onto a machine, and a projection that cannot resolve a required secret does not partially succeed.

  1. Step 1

    The device enrols itself

    A device-flow enrolment issues a per-device key. The key is revocable server-side, and revoking it invalidates every profile that depends on it.

  2. Step 2

    The profile binds to an admitted scope

    A profile is only valid against a scope Guard has admitted, at a specific binding epoch. A profile with no admission is not distributable — that is a design decision, not a gap.

  3. Step 3

    Servers are described, not copied

    Each entry records a transport, a platform constraint, and where it was imported from. No resolved paths, no device-local state, no secret values — ever.

  4. Step 4

    Projection is planned against the host

    Before anything is written, the profile is analysed against the machine: is the command present, is the platform right, is every required secret resolvable here.

  5. Step 5

    Blocking issues hold the whole plan

    A server whose secret cannot resolve is held with a named reason. Fleet does not half-apply a profile and leave you to discover which half.

The artifact

One profile, read end to end.

Below is a whole profile: the servers it connects, the secret bindings it needs, and the plan Fleet produced when it was projected onto a machine that was missing one of them. Read the middle card carefully — the values are not there, and that is the feature.

Fleet · profileVerified

billing-service · default

Three connected tools, described declaratively. The profile is canonically serialized, so its hash is the same on every machine that holds it.

Version
v1
Scope
acme/billing-service · origin/main
Binding
bnd_01HQ8R2V4C7YKD · epoch 4
Device
dev_01HQ7B8N5J4PQR
Servers
  • zephr stdio · linux · x64 · imported_claude_code
  • issue-tracker http · any · any · imported_cursor
  • runbooks stdio · linux · any · manual
Fleet · secret bindingsReferences only

What Zephr stores about your secrets

A binding is a name, a provider class, and whether the connection can start without it. The value is resolved on the enrolled device at connection time and is never transmitted, stored, or synchronized.

Secret bindings in this profile, showing reference identifiers rather than values
BindingProviderValue
ISSUE_TRACKER_TOKENsb_4f1c · requiredlocal_keychainnot stored
RUNBOOK_API_KEYsb_9a02 · requiredlocal_envnot stored
TELEMETRY_TOKENsb_c7d5 · optionallocal_envnot stored
no values · no resolved paths
Fleet · projection plan1 blocking issue

Planned against this host — nothing written

Compatibility is analysed against real host facts before any file is touched. Two servers would apply cleanly; one cannot resolve a required secret on this machine, so the plan holds rather than half-applying.

  • Applyzephr

    Compatible. Command resolves on this host; no secret bindings required.

  • Applyissue-tracker

    Compatible. Header binding ISSUE_TRACKER_TOKEN resolves from the local keychain.

  • Holdrunbooks

    Blocking: RUNBOOK_API_KEY is not available on this device. Nothing is written.

plan only · no partial apply

Illustrative example — not live data

Boundaries

Fleet is not MCP config sync.

Discovery, packaging, and catalogs are a solved and crowded problem, and Zephr is not going to pretend otherwise. What is not solved is binding a connection to a project scope and keeping credentials as references on the machine that owns them. That is the only ground Fleet claims.

What Fleet owns

  • Connection profiles per client, versioned and content-hashed.
  • Device identity and per-device keys as the credential plane.
  • Secret references bound into profiles — never plaintext values.
  • Adapter conformance: a client is listed only once it passes the contract.
  • Scope binding: a profile without an admitted scope is not valid.

What Fleet refuses to become

  • A general MCP server registry or catalog.
  • An install and packaging tool for third-party servers.
  • A plain "sync my config across machines" utility.
  • A store of secret values, encrypted or otherwise.
  • A dashboard populated with connection data that does not exist yet.

If you want the last one, the honest answer is that a simpler third-party tool will serve you better. Fleet is opinionated on purpose.

What Fleet does

Every capability, with its real state.

The profile domain and the adapters are real. The credential plane they ultimately depend on is not finished, and the live fleet view has no real data behind it — both are badged accordingly rather than mocked up.

  • Versioned connection profiles

    Shipped

    A deterministic, canonically-serialized profile schema with a content hash, so two machines can agree byte-for-byte on what a connection is.

  • Client adapters

    Shipped

    Claude Code, Cursor, and Codex config dialects are parsed and rendered through the adapter contract. opencode is on the same contract.

  • Secret references, never values

    Shipped

    Bindings carry a name, a provider class, and a required flag. The value resolves on the enrolled device at connection time; the cloud stores the reference and the audit event.

  • Compatibility analysis and projection plans

    Shipped

    Platform, executable availability, and secret availability are checked against real host facts, producing a plan with blocking and advisory issues before any write.

  • Adapter conformance suite

    Evolving

    Every listed adapter must pass the contract suite before it appears in Fleet. General availability of that gate is still moving.

  • Per-device keys with server-side revocation

    Planned

    The credential plane the profile lifecycle depends on is specified and not yet complete. Until it lands, Fleet does not claim managed device identity.

  • Live connection state

    Planned

    Real connection telemetry does not exist yet, so the Fleet surface shows an honest empty state instead of a dashboard of machines that are not there.

  • Generic MCP config sync

    Explicit non-goal

    Fleet does not compete with bundle formats, catalogs, or the official registry. It may consume those formats; it will not reimplement discovery, packaging, or curation.

Connect a client and watch what is not stored.

Fleet is easiest to trust once you have seen a profile round-trip without a single secret value leaving the machine.