Skip to content

bos-auth: 04 custody preview environment — Outlayer custody wallet publish via publish.auth: "custody" seam #291

Description

@elliotBraem

Sprout of #274 (v2 platform services spec); sibling of #288/#289 in the gasless-auth sprint. Builds on the publish.auth seam from #288.

What to build

A custody preview environment for agents and workshop attendees: a publish identity with zero key exposure, powered by Outlayer agent custody.

  1. publish.auth: "custody" credential kind (seam reserved in bos-auth: 01 bos login — session + scoped FC key export, bos.config.json driven #288) becomes real: bos login --custody (or auto-provision on first publish) calls Outlayer POST /register once to mint a custody wallet (API key wk_... + TEE-derived implicit NEAR account). The API key is stored in .bos/ (gitignored).
  2. Policy handoff: on registration the CLI opens the Outlayer dashboard handoff URL so the wallet owner whitelists the FastKV registry contract with per-transaction gas/deposit caps (mirrors the relayer whitelist posture). Publishing is blocked until policy is confirmed.
  3. Publish path: bos publish under the custody credential routes the FastKV set_values write through Outlayer POST /wallet/v1/call — signed inside the TEE, broadcast by the CLI. Publishes land under the custody wallet's own implicit namespace (bos://<implicit-account>/<gateway>), never a named account/org.
  4. Headless NEP-413 auth: use Outlayer POST /wallet/v1/sign-message to authenticate the agent into the everything-dev auth plugin — no local key at all, same session surface as bos-auth: 01 bos login — session + scoped FC key export, bos.config.json driven #288.
  5. Preview loop: the published custody config is served as a preview runtime (sandbox/preview tier of the host), so an agent can deploy → publish → see it live with zero stored keys.

Acceptance criteria

  • An agent with only a wk_ API key can register, whitelist the FastKV contract via policy, and publish a config under its own implicit namespace
  • Zero private keys on disk at any point (API key only)
  • Policy caps (whitelisted contract, gas/deposit) are enforced before first publish is accepted
  • NEP-413 sign-message auth into the auth plugin works headlessly
  • publish.auth: "custody" rejects publishing under a named account with a clear error (namespace=signer constraint)
  • Preview URL serves the custody-published runtime

Non-goals

Blocked by

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agent

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions