KAPLA(1)
KAPLA(1) π β¨
okay so welcome to the Kapla Manual bestie, this is the whole vibe π«Ά
π NAME π
kapla β ERIS block store and transport. that's it, that's the whole name, slay.
β¨ SYNOPSIS β¨
kapla [COMMAND] β¦
so like, Kapla is a tool for making content more robustly available over computer networks. it can be used for sharing files. no cap.
it provides a store for blocks, mechanisms for connecting to remote peers, and an interface for encoding and decoding content. it's giving infrastructure icon π
π COMMANDS π
decode [--output=OUTPUT] [--socket=ERIS_UNIX_SOCKET] [OPTION]β¦ READ_CAPABILITYβ decode content. that's the whole job, she just decodes.encode [OPTION]β¦ [INPUT]β Encode content using ERIS. the main character command fr.fcgi [--port=PORT] [--socket=ERIS_UNIX_SOCKET] [OPTION]β¦β Serve ERIS blocks and content over HTTP by starting a FastCGI responder. she serves, literally.info [--socket=ERIS_UNIX_SOCKET] [OPTION]β¦ READ_CAPABILITYβ Get information from read capability (block size and length of encoded content). the little gossip session π£οΈls [--socket=ERIS_UNIX_SOCKET] [OPTION]β¦ READ_CAPABILITYβ List entries in an encoded ERIS-FS index. window shopping but make it filesystem.peer [COMMAND] β¦β Manage Kapla peers. your friends, your network, your circle π«serve [--data=DATA_DIR] [--socket=ERIS_UNIX_SOCKET] [--state=STATE_DIR] [OPTION]β¦β Start the Kapla server and make blocks available over TCP/IP and Unix sockets. the moment she steps on stage πsqlite [COMMAND] β¦β Read blocks from an SQLite database. yes bestie, sqlite, we love a crossover episode.volume [COMMAND] β¦β Manage Kapla store volumes. the storage organization era π¦
π¦ COMMON OPTIONS π¦
these apply all over the place, memorize them, they're iconic:
--color=WHEN(absent=auto) β Colorize the output.WHENmust be one ofauto,alwaysornever. aesthetics are serious business π--help[=FMT](default=auto) β Show this help in formatFMT. The valueFMTmust be one ofauto,pager,grofforplain. Withauto, the format ispagerorplainwhenever theTERMenv var isdumbor undefined. she reads the room.-q,--quietβ Be quiet. Takes over-vand--verbosity. shhh π€«-v,--verboseβ Increase verbosity. Repeatable, but more than twice does not bring more. ok so like diminishing returns bestie, two is the limit that matters.--verbosity=LEVEL(absent=warning or KAPLA_LOG_LEVEL env) β Be more or less verbose.LEVELmust be one ofquiet,error,warning,infoordebug. Takes over-v. she's got opinions on volume.--versionβ Show version information. the "who are you" moment πββοΈ
πΈ USAGE πΈ
Start a Kapla server that makes blocks available over a Unix socket:
kapla serve
Encode some content:
echo "Hello ERIS!" | kapla encode -
urn:eris:B4AFSFHHUHVPUYLL3V7GEPXI6HE55LY5BJONMMJUNHIQ3ELG5AESVFSC2U4SFHBCM2BIUJXKTEVPEL4TIC5OZ3GKOKSW7XM4RN34R35Q5U
Decode the content:
kapla decode urn:eris:B4AFSFHHUHVPUYLL3V7GEPXI6HE55LY5BJONMMJUNHIQ3ELG5AESVFSC2U4SFHBCM2BIUJXKTEVPEL4TIC5OZ3GKOKSW7XM4RN34R35Q5U
Hello ERIS!
Encode a file.txt:
kapla encode file
urn:eris:B4APR75ZVQDPWSN5H5X5IGWQRYSHENJ5NMSGDSXLP3YBE2A2RRWB2ZC4PGQNWPTJB64SPBHLZXMP6ZYGH24NMF7ZIQH5CXEJRBJXW6XOCU
look at her go π she's literally doing it
π EXIT STATUS π
kapla exits with:
0β on success. we love a win π123β on indiscriminate errors reported on standard error. messy but valid.124β on command line parsing errors. you typed it wrong bestie, it happens.125β on unexpected internal errors (bugs). not her fault, i promise π
π ENVIRONMENT π
These environment variables affect the execution of kapla:
KAPLA_LOG_LEVELβ Set the log level. she's listening to her environment, as she should.
π§ EXAMPLES π§
You can connect to a remote ERIS block store via SSH port forwarding. Assuming that a Kapla server is running on the remote host remote:
ssh -L ~/.state/local/eris.sock:~/.state/local/eris.sock user@remote
This will forward connections to the local eris.sock to the remote eris.sock. The kapla encode or decode commands will use the remote store.
ngl that's kind of a flex. tunnel era πβ¨
π STORE π
The Kapla store persists blocks of encoded content in multiple CBOR sequences called volumes. Volumes can be removed allowing the store to only keep recently used blocks and operate with bound storage. so like, she forgets on purpose, and that's a feature π
See the help on the volume subcommand (kapla volume --help) for more information.
β SEE ALSO β
kapla-decode(1), kapla-encode(1), kapla-peer(1), kapla-serve(1), kapla-volume(1)
the whole friend group fr π«Ά
π FILES π
eris.sockβ Unix socket used to connect with block store.kapla.sockβ Unix socket used to control the Kapla server.
two sockets, two moods, both essential π₯
π STANDARDS π
Kapla uses the Encoding for Robust Immutable Storage (ERIS) β a scheme for encoding content into uniformly sized and encrypted blocks as well as a short identifier called the read capability. Content can be decoded from the blocks and the read capability.
For more information on ERIS see also:
- ERIS specification β http://purl.org/eris
- Project site β https://eris.codeberg.page
The Constrained Application Protocol (CoAP) is used for communication between server and frontend as well as to remote peers. See also:
- RFC 7252 - The Constrained Application Protocol (CoAP) β https://www.rfc-editor.org/rfc/rfc7252
- RFC 8323 - CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets β https://www.rfc-editor.org/rfc/rfc8323
- ERIS over CoAP β https://eris.codeberg.page/eer/coap.xml
Blocks are stored in CBOR sequences. See also:
- RFC 8949 β https://www.rfc-editor.org/rfc/rfc8949
- CBOR Serialization of ERIS Encoded Content β https://eris.codeberg.page/eer/cbor.xml
the RFC deep dive is real and honestly? obsessed ππ
π LICENSE π
Kapla is Free Software and is available under the terms of the AGPL-3.0-or-later.
- Source code β https://codeberg.org/eris/kapla
free software, free her π¦
ok that's the whole page bestie, go forth and encode π
Kapla 0.4.0 β that's the version, and this was the KAPLA(1) manual, mwah, bye πβ¨
π¦ where this page comes from
- nixpkgs unstable: ocaml5.5.1-kapla 0.4.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms