seal files now, open them later
Project description
magicicapsula
install
pip install -e .
needs python 3.10+. one dependency: cryptography.
how it works
the workflow is staged, so you don't have to add everything at once:
magicicapsula init -u 2030-01-01 # start a draft here
magicicapsula add letter.txt photos/ # stage files/folders
magicicapsula add diary.txt # add more later
magicicapsula status # see what's staged
magicicapsula seal # pack it all into capsule.mcap
the draft lives in a .capsule/ directory (found by walking up from the
current dir). seal reads everything staged and writes the .mcap file.
later, when the date has passed:
magicicapsula open capsule.mcap -d ./out
.mcap is one portable binary file. store it anywhere, copy it around. it
holds any file type (images, pdfs, binaries) byte for byte, not just text.
passwords
- with a password (default): contents are encrypted (aes-128 via
cryptography), unreadable without the password.openandverifyprompt for it. - without a password (
seal --no-password): no encryption. the unlock date is the only gate, so anyone with the file can open it after that date. don't put anything private in a no-password capsule.
note: the unlock date is enforced by the tool, not by cryptography. if you hold the password you could decrypt early with other means. the date stops casual early opening, not a determined holder.
commands
init
start a new capsule draft in the current directory.
magicicapsula init [-u DATE] [-n NOTE] [-o OUT]
-u, --unlock DATE unlock date, can also be set at seal
-n, --note NOTE plaintext note shown by info
-o, --out OUT output file name (default: capsule.mcap)
add
stage files or folders to put in the capsule.
magicicapsula add <paths...>
status
show the draft: unlock date and staged files.
magicicapsula status
rm
unstage files. does not delete them from disk.
magicicapsula rm <paths...>
seal
seal everything staged into a capsule file. flags override the draft's settings and stick.
magicicapsula seal [-u DATE] [-o FILE] [-n NOTE] [-f] [-P]
-u, --unlock DATE unlock date, overrides the draft's
-o, --out FILE output capsule file, overrides the draft's
-n, --note NOTE plaintext note, overrides the draft's
-f, --force overwrite the output if it exists
-P, --no-password seal without a password (anyone can open it after the date)
info
show a capsule's dates and status. no password needed.
magicicapsula info <file>
open
open a capsule and extract it, once the unlock date has passed.
magicicapsula open [-d DEST] <file>
-d, --dest DEST directory to extract into (default: current dir)
verify
check a capsule's integrity (and the password, if any) without opening it.
magicicapsula verify <file>
version
show the version and logo.
magicicapsula version
date format
YYYY-MM-DD or YYYY-MM-DDTHH:MM, read as local time. examples:
2030-01-01, 2030-01-01T08:00.
colors
output is colored in a terminal and plain when piped or redirected. set
NO_COLOR=1 to turn colors off.
dates and gotchas
- staged entries are paths, read at seal time, not copied when you add them.
if a staged file is moved or deleted before sealing,
statusmarks it(missing)andsealrefuses until it's fixed. - files are stored under their base name, so two staged files with the same name would collide.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file magicicapsula-0.1.0.tar.gz.
File metadata
- Download URL: magicicapsula-0.1.0.tar.gz
- Upload date:
- Size: 14.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7740c04838340a991560bdc2d01c5facc053328386f401ca3c9d32acd059dc2
|
|
| MD5 |
0b6f5dd803ed1740076cbb0bdfb09fc7
|
|
| BLAKE2b-256 |
db2dff7507504790dcd94c69edaed1d790b4fc3eebcadfb7c0690f8ffc686255
|
Provenance
The following attestation bundles were made for magicicapsula-0.1.0.tar.gz:
Publisher:
publish.yml on iDavi/magicicapsula
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
magicicapsula-0.1.0.tar.gz -
Subject digest:
b7740c04838340a991560bdc2d01c5facc053328386f401ca3c9d32acd059dc2 - Sigstore transparency entry: 1902696651
- Sigstore integration time:
-
Permalink:
iDavi/magicicapsula@d274a0ca67df6fc3c6fe34c6c91c42adfd1c584f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/iDavi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d274a0ca67df6fc3c6fe34c6c91c42adfd1c584f -
Trigger Event:
push
-
Statement type:
File details
Details for the file magicicapsula-0.1.0-py3-none-any.whl.
File metadata
- Download URL: magicicapsula-0.1.0-py3-none-any.whl
- Upload date:
- Size: 17.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19a14745aefda1031d48e76d270e77bd1876029000f266873b52a88c6a36f2bf
|
|
| MD5 |
96ac21b6026b17054f78a4eb838c7519
|
|
| BLAKE2b-256 |
8ee831e3160b86ee338433ce787d14e0c4fbf19cd1d9577f7747f458d245a863
|
Provenance
The following attestation bundles were made for magicicapsula-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on iDavi/magicicapsula
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
magicicapsula-0.1.0-py3-none-any.whl -
Subject digest:
19a14745aefda1031d48e76d270e77bd1876029000f266873b52a88c6a36f2bf - Sigstore transparency entry: 1902696825
- Sigstore integration time:
-
Permalink:
iDavi/magicicapsula@d274a0ca67df6fc3c6fe34c6c91c42adfd1c584f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/iDavi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d274a0ca67df6fc3c6fe34c6c91c42adfd1c584f -
Trigger Event:
push
-
Statement type: