keryx media push¶
Description¶
Upload a workspace's changed media to the object store and re-pin
media.lock (spec 0039, R-STO-½).
The push is incremental by content hash: every media file (everything under
vo/, cards/, cover/, portrait/, plus cover.png, music*, and
reel-*.mp4) is sha256-hashed and compared against the workspace's media.lock
manifest — only new or changed files upload. Each upload overwrites its stable
bucket key, minting a new object version; the manifest records the version
id and hash, so the git commit that carries media.lock pins this exact media
state. Files deleted locally drop out of the manifest but their object versions
are retained in the bucket (keryx never deletes; retention is bucket
lifecycle policy — R-STO-6).
Run it before committing workspace changes — or use the studio's Commit & push, which performs the same sync automatically so the refreshed manifest rides in the same commit as the board.
Usage¶
| Flag | |
|---|---|
-w, --workspace |
The reel workspace slug (required). |
Run keryx media push --help for the authoritative, always-current flag set.
Output¶
With --output json, the standard envelope carries
{pushed, pushed_bytes, unchanged, removed}.
Errors¶
- No object store configured — set the top-level
storage:section in the project's.keryx.yaml(seekeryx media); until then keryx is local-only. - Bucket problems (unreachable, missing, no credentials) surface with the provider's error; credentials resolve via the AWS default chain (env, SSO/shared config, IAM role in CI) — never from keryx config.
See also¶
keryx media— the storage model and configuration.- Spec:
docs/development/specs/0039-media-object-store.md