CLI reference
Default index cluster: http://127.0.0.1:8001,http://127.0.0.1:8002,http://127.0.0.1:8003.
That is the default --index-addrs for the client, account, payment, repair, and storage commands (and the [storage] index_addrs key in arkel-node.toml) — point those at the index cluster you run.
Overview
Index:
Arkel Distributed Blob Index & Storage Node
Usage: arkel [OPTIONS] <COMMAND>
Subcommands:
storage— Boot up as a high-throughput raw block storage endpointclient— Upload/download objects as an iroh-native clientaccount— Account & quota toolspayment— Payment-operator tooling (register the quota credit key; first-wins)repair— Heal objects below target k/m (standalone, idempotent; run by cron)
Options:
--data-dir <DATA_DIR>— Dedicated data directory for this specific node's cryptographic identities and storage state--config <CONFIG>— Node config file (arkel-node.toml); command-line flags override it
Using Arkel
arkel client
Upload/download objects as an iroh-native client
Usage: arkel client <COMMAND>
Subcommands:
put— Upload a file (EC + encrypt locally, shards to storage nodes, manifest via Raft)get— Download an object and write it to a file (or stdout)rm— Delete an object (removes its manifest via Raft; shards freed by GC)
arkel client put
Upload a file (EC + encrypt locally, shards to storage nodes, manifest via Raft)
Usage: arkel client put [OPTIONS] <FILE>
Arguments:
<FILE>— Path to the file to upload
Options:
--bucket <BUCKET>Default value:
default--key <KEY>— Object key; defaults to the file name--index-addrs <INDEX_ADDRS>— Index node HTTP URLs (comma-separated)Default value:
http://127.0.0.1:8001,http://127.0.0.1:8002,http://127.0.0.1:8003--storage-addrs <STORAGE_ADDRS>— Storage nodes to distribute shards to, as pubkey@ip:port (comma-separated)
arkel client get
Download an object and write it to a file (or stdout)
Usage: arkel client get [OPTIONS] <BUCKET> <KEY>
Arguments:
<BUCKET><KEY>
Options:
--index-addrs <INDEX_ADDRS>— Index node HTTP URLs (comma-separated)Default value:
http://127.0.0.1:8001,http://127.0.0.1:8002,http://127.0.0.1:8003--storage-addrs <STORAGE_ADDRS>— Storage nodes that may hold shards, as pubkey@ip:port (comma-separated)--output <OUTPUT>
arkel client rm
Delete an object (removes its manifest via Raft; shards freed by GC)
Usage: arkel client rm [OPTIONS] <BUCKET> <KEY>
Arguments:
<BUCKET><KEY>
Options:
--index-addrs <INDEX_ADDRS>— Index node HTTP URLs (comma-separated)Default value:
http://127.0.0.1:8001,http://127.0.0.1:8002,http://127.0.0.1:8003
arkel account
Account & quota tools
Usage: arkel account <COMMAND>
Subcommands:
quota— Show quota and usage for an account (default: this identity)
arkel account quota
Show quota and usage for an account (default: this identity)
Usage: arkel account quota [OPTIONS]
Options:
--account <ACCOUNT>— Account (hex iroh pubkey); defaults to this node's identity--index-addrs <INDEX_ADDRS>— Index node HTTP URLs (comma-separated)Default value:
http://127.0.0.1:8001,http://127.0.0.1:8002,http://127.0.0.1:8003
Running a storage node
arkel storage
Boot up as a high-throughput raw block storage endpoint
Usage: arkel storage [OPTIONS]
Options:
--private-relay-url <PRIVATE_RELAY_URL>— Optional private Iroh relay architecture URL override--index-addrs <INDEX_ADDRS>— Index node HTTP URLs to register against (comma-separated; the registrar discovers the current Raft leader among them)--addr <ADDR>— Address the iroh QUIC endpoint binds to--advertise-addr <ADVERTISE_ADDR>— Address advertised for registration (defaults to --addr)--gc-interval-secs <GC_INTERVAL_SECS>— How often to scan and delete unreferenced shards (seconds)--capacity <CAPACITY>— Storage allocation this node commits to the network; the index fills it and pays against real stored bytes (default 1TB)
Operating the network
arkel payment
Payment-operator tooling (register the quota credit key; first-wins)
Usage: arkel payment <COMMAND>
Subcommands:
register— Register this identity as the payment operator (one-time, first-wins)credit— Credit quota to an account (idempotent on --ref-id)set-default-quota— Set the cluster-wide default quota for accounts with no quota row yet (applies at first use; idempotent upsert, changeable)
arkel payment register
Register this identity as the payment operator (one-time, first-wins)
Usage: arkel payment register [OPTIONS]
Options:
--index-addrs <INDEX_ADDRS>— Index node HTTP URLs (comma-separated)Default value:
http://127.0.0.1:8001,http://127.0.0.1:8002,http://127.0.0.1:8003
arkel payment credit
Credit quota to an account (idempotent on --ref-id)
Usage: arkel payment credit [OPTIONS] --account <ACCOUNT> --bytes <BYTES> --ref-id <REF_ID>
Options:
--account <ACCOUNT>— Account (hex iroh pubkey) to credit--bytes <BYTES>— Bytes of quota to add--source <SOURCE>— Credit source label (e.g. 'payment')Default value:
payment--ref-id <REF_ID>— Idempotency reference (e.g. Stripe checkout id); replay is a no-op--index-addrs <INDEX_ADDRS>— Index node HTTP URLs (comma-separated)Default value:
http://127.0.0.1:8001,http://127.0.0.1:8002,http://127.0.0.1:8003
arkel payment set-default-quota
Set the cluster-wide default quota for accounts with no quota row yet (applies at first use; idempotent upsert, changeable)
Usage: arkel payment set-default-quota [OPTIONS] --bytes <BYTES>
Options:
--bytes <BYTES>— Default quota, e.g. "1GB" (same syntax as --capacity)--index-addrs <INDEX_ADDRS>— Index node HTTP URLs (comma-separated)Default value:
http://127.0.0.1:8001,http://127.0.0.1:8002,http://127.0.0.1:8003
arkel repair
Heal objects below target k/m (standalone, idempotent; run by cron)
Usage: arkel repair [OPTIONS]
Options:
--index-addrs <INDEX_ADDRS>— Index node HTTP URLs (comma-separated)Default value:
http://127.0.0.1:8001,http://127.0.0.1:8002,http://127.0.0.1:8003--register— Register this identity as the repair operator (one-time), then exit--k <K>— Re-encode target data shards (default 8)Default value:
8--m <M>— Re-encode target parity shards (default 6)Default value:
6--rate-limit <RATE_LIMIT>— Max objects fixed per run (rate limit)Default value:
600