Trible CLI is a friendly companion for exploring and managing Tribles from the command line.
Note: The project depends on the unreleased
tribles
crate directly from Git.
cargo install --path .
-
Create a new pile to hold your data:
trible pile create demo.pile
-
Add a file as a blob. This command prints a handle for the stored blob:
echo "hello" > greeting.txt trible pile blob put demo.pile greeting.txt
-
List the blobs in the pile to confirm the handle:
trible pile blob list demo.pile
-
Retrieve the blob using its handle:
trible pile blob get demo.pile <HANDLE> copy.txt
The file copy.txt
now contains the original contents of greeting.txt
.
Run trible <COMMAND>
to invoke a subcommand.
genid
— generate a random identifier.
completion <SHELL>
— output a completion script forbash
,zsh
, orfish
.
pile create <PATH>
— initialize an empty pile, creating parent directories as needed.pile diagnose <PILE>
— verify pile integrity.
pile branch list <PILE>
— list branch identifiers.pile branch create <PILE> <NAME>
— create a new branch.pile branch consolidate <PILE> <NAME>
— consolidate multiple branches that share the same logical name into a single new branch. The command creates a single merge commit whose parents are the matching branch heads and prints the new branch id.
Signing key format
- Commands that create commits (e.g.
create
,merge-import
,consolidate
) accept a signing key file path via the--signing-key
flag. The file must contain a single 64-character hex string (32 bytes encoded as hex). You can also set TRIBLES_SIGNING_KEY to the path of such a file. Generated keys (when created by Codex tooling) are written as hex text to the configured path.
pile blob list [--metadata] <PILE>
— list stored blob handles. Pass--metadata
to include timestamps and sizes.pile blob put <PILE> <FILE>
— store a file as a blob and print its handle.pile blob get <PILE> <HANDLE> <OUTPUT>
— extract a blob by handle.pile blob inspect <PILE> <HANDLE>
— display metadata for a stored blob.
store blob list <URL>
— list objects at a remote store.store blob put <URL> <FILE>
— upload a file to a remote store and print its handle.store blob get <URL> <HANDLE> <OUTPUT>
— download a blob from a remote store.store blob forget <URL> <HANDLE>
— remove an object from a remote store.store blob inspect <URL> <HANDLE>
— display metadata for a remote blob.
store branch list <URL>
— list branches at a remote store.branch push <URL> <PILE> <ID>
— push a branch to a remote store.branch pull <URL> <PILE> <ID>
— pull a branch from a remote store.
See INVENTORY.md
for notes on possible cleanup and future functionality.
Command implementations live in src/cli/
with modules for branch
, pile
,
and store
. The modules expose their subcommands and are re-exported from
main.rs
to preserve the existing CLI interface. Contributions are always
welcome!