Pithos CLI
pithos creates, reads, and extends Pithos archives from the command line. It is the filesystem-oriented companion to the pithos_lib Rust API.
Installation
Published releases are available from crates.io. Install Rust through rustup first.
cargo install pithos
Create and read an archive
Create a directory for a key pair, then generate an owner key pair. The private key decrypts the archive; the public key identifies a recipient that may read it.
Create a plain base archive for a file or directory without keys. Base output is local, uncompressed, and unencrypted:
Create an encrypted archive for a file or directory. This example gives the owner access and writes research.pith; replace input with your source path.
Encrypted archives can be listed without a key, but reading their content requires the matching private key. Plain archives can be read without --secret-key:
read data also accepts --ranges START:END,... for half-open byte ranges. Use read info to inspect an entry and read directory to inspect every entry's metadata.
Block and encryption options
create and append files accept these options:
--block-size BYTESsets the size of fixed blocks. The default is 4 MiB (4194304 bytes). It cannot be combined with--cdc.--cdc MIN,AVG,MAXuses content-defined chunking instead of fixed blocks.--cipher chacha20-poly1305|aes-256-gcmselects the cipher for new encrypted blocks. The default ischacha20-poly1305.--unique-keysgives every block its own random key. Equal blocks are then stored again instead of once, so their equality stays hidden.
--unique-keys and --cipher aes-256-gcm need encryption, so they fail with --plain. When appending, they also need a version 1.1 archive.
More operations
append filesadds filesystem input to an existing archive.append readersgrants additional recipient public keys access to selected entry IDs.export --format crypt4ghexports a readable entry as a Crypt4GH stream.
Use built-in help for required arguments, available options, and the complete command reference:
pithos --help
pithos create --help
pithos read --help
pithos append --help
pithos export --help
Platform behavior
Filesystem-facing operations are Linux-only in 0.8. New archive output, file output, export output, and extraction are staged without replacing existing destinations; they require a destination filesystem with Linux O_TMPFILE and linkat(AT_EMPTY_PATH) support. Direct append modifies an existing archive and does not require those operations.
For programmatic use, see the pithos_lib documentation and compiled examples.