Use Remotes
Configure remote registries, then push and pull Evidence Packs with repeatable release metadata.
Prerequisites
- epack full CLI installed (built with
-tags components) - An
epack.yamlin your project root - A pack file to publish (for example
packs/evidence.epack)
1. Configure a remote in epack.yaml
Add a remote under remotes:. This follows the CLI's supported config shape.
credential_sets: locktivity_push: credset_def456 remotes: locktivity: source: locktivity/epack-remote-locktivity@^0.2.0 insecure_endpoint: https://registry.example.com target: workspace: myorg environment: prod credentials: - locktivity_push release: labels: [monthly] runs: sync: true
For managed runners, credential_sets let epack resolve short-lived access tokens
from a Locktivity-managed broker before invoking the remote adapter. For local development, adapters may still
support interactive login or direct environment-based auth. A run on a laptop has no CI identity to present,
so a remote whose adapter supports credentials.resolve resolves the managed credentials with your
epack remote login sign-in instead.
If you need a non-default credential broker for managed credentials, set
EPACK_INSECURE_CREDENTIAL_BROKER_URL.
2. Sign in and confirm the remote
Sign in from your terminal. epack opens the remote's sign-in page in your browser, and once you allow epack there, the browser returns to epack on this machine. The adapter keeps the session, so later commands need no token.
# Sign in with your browser epack remote login locktivity # Over SSH: forward a port when you connect, then open the printed link on your own computer epack remote login locktivity --port 8400 --no-browser
Outside a project, epack installs the adapter for your user from the catalog, verifies it, and pins it in
~/.epack/remotes.lock. Run epack remote update to move that pin to the newest release.
Inside a project that names the remote, the adapter pinned in epack.lock.yaml is used.
Check that your remote is recognized and see current authentication state.
# List configured remotes epack remote list # Check one remote epack remote whoami locktivity # Or check all configured remotes epack remote whoami
3. Push a pack to a remote
Use epack push <remote> <pack> to publish releases.
# Basic push epack push locktivity packs/evidence.epack # Add release labels epack push locktivity packs/evidence.epack \ --label soc2 \ --label february # Use an environment override and notes epack push locktivity packs/evidence.epack \ --env staging \ --notes "Staging validation release"
Useful push flags:
--workspaceoverride target workspace--no-runsskip run ledger sync--dry-runpreview without uploading--detachrun push in the background-y, --yesnon-interactive mode
4. Pull packs from a remote
Use epack pull <remote> [ref] to download latest or specific releases.
# Pull latest release epack pull locktivity # Pull a specific version epack pull locktivity v1.2.3 # Pull by release ID or digest epack pull locktivity --release rel_abc123 epack pull locktivity --digest sha256:abc123... # Control output location epack pull locktivity -o ./packs/vendor.epack
Useful pull flags:
--envapply environment remote overrides--workspaceoverride target workspace--forceoverwrite existing output file--verify=falseskip post-download verification--dry-runpreview without downloading--detachrun pull in the background
5. Run a configuration a remote generated
A remote can hand over a whole configuration: epack.yaml, its hooks, profile files, and the
lock. epack run fetches one by name from the remote you last signed in to, installs the locked
components, collects, runs tools, signs, and pushes. A configuration that arrives without a lock is locked
by its first run or check. When the newest revision needs something this machine lacks, such as a variable or
a newer epack, the run lists what is missing and where to add it, and runs the newest earlier revision that
works here.
# Fetch the configuration into ./northwind-production and run it epack run northwind-production # Keep the variables it lists in your keychain, for this configuration only cd northwind-production && epack secret setup # Check sign-in, the lock, variables, credentials, and publishers without collecting epack run --check # Fetch it without running, or pick up a newer revision epack remote clone northwind-production
The variables a configuration lists under secrets come from your environment first and from your
keychain second. epack secret setup asks for each missing value, hidden, and approves it for the
components that read it. When a later revision changes one of those components, the check says so and
epack secret approve shows the change before the value is used again. The check never prompts,
and a CI job never reads the keychain. See epack secret.
A fetched configuration may only run collectors, tools, and remote adapters from publishers you trust. In a
terminal, epack asks once for each new publisher and remembers your answer in ~/.epack/config.yaml.
Signing in to a remote trusts its adapter's publisher. In a job, pass --trust-publisher or set
EPACK_TRUSTED_PUBLISHERS.
A run from a terminal signs the pack in your browser, as you. For runs with nobody at the keyboard, give the
machine a key with epack key create. Once the remote approves it, runs from this machine sign
with it. See CI/CD for runners you manage.
6. Use per-environment remote overrides
Keep one named remote and vary its target or labels by environment.
remotes: locktivity: source: locktivity/epack-remote-locktivity@^0.2.0 target: workspace: myorg environment: prod environments: staging: remotes: locktivity: target: environment: staging release: labels: [staging]
Related
- Config reference: remotes — Full field reference
- CLI reference — Complete command flags
- Remotes concept — Adapter architecture and protocol
- Review & Publish — End-to-end release workflow