7 releases
Uses new Rust 2024
| 0.3.3 | Oct 18, 2025 |
|---|---|
| 0.3.2 | Oct 17, 2025 |
| 0.3.0 | Sep 29, 2025 |
| 0.2.1 | Sep 25, 2025 |
| 0.1.0 | Sep 18, 2025 |
#775 in Database interfaces
88KB
2K
SLoC
Allegedly
Some public ledger tools and services for servers
Allegedly can
-
Tail PLC ops to stdout:
allegedly tail | jq -
Export PLC ops to weekly gzipped bundles:
allegdly bundle --dest ./some-folder -
Dump bundled ops to stdout FAST:
allegedly backfill --source-workers 6 | pv -l > /ops-unordered.jsonl -
Wrap the reference PLC server and run it as a mirror, copying ops from upstream:
allegedly mirror \ --wrap "http://127.0.0.1:3000" \ --wrap-pg "postgresql://user:pass@pg-host:5432/plc-db" -
Wrap a plc server, maximalist edition:
# put sensitive values in environment so they don't leak via process name. export ALLEGEDLY_WRAP_PG="postgresql://user:pass@pg-host:5432/plc-db" # sudo to bind :80 + :443 for acme tls, but it's better to give user net cap. # will try to autoprovision cert for "plc.wtf" from letsencrypt staging. sudo allegedly mirror \ --upstream "https://plc.directory" \ --wrap "http://127.0.0.1:3000" \ --wrap-pg-cert "/opt/allegedly/postgres-cert.pem" \ --acme-domain "plc.wtf" \ --acme-domain "alt.plc.wtf" \ --experimental-acme-domain "experimental.plc.wtf" \ --acme-cache-path ./acme-cache \ --acme-directory-url "https://acme-staging-v02.api.letsencrypt.org/directory" \ --acme-ipv6 \ --experimental-write-upstream -
Reverse-proxy to any PLC server, terminating TLS and forwarding writes upstream
sudo allegedly wrap \ --wrap "http://127.0.0.1:3000" \ --acme-ipv6 \ --acme-cache-path ./acme-cache \ --acme-domain "plc.wtf" \ --experimental-acme-domain "experimental.plc.wtf" \ --experimental-write-upstream \ --upstream "https://plc.wtf" \
add --help to any command for more info about it
install
cargo install allegedly
the version on crates might be behind while new features are under development. to install the latest from source:
-
make sure you have rust/rustup set up
-
clone the repo
-
install
cargo install --path . --bin allegedly
future improvements
existing stuff
- signals and shutdown handling
- monitoring of the various tasks
- health check pings
- expose metrics/tracing
- read-only flag for mirror wrapper
- bundle: write directly to s3-compatible object storage
- helpers for automating periodic
bundleruns
new things
-
experimental: websocket version of /export
-
experimental: accept writes by forwarding them upstream
-
experimental: serve a tlog
-
experimental: embed a log database directly for fast and efficient mirroring
-
experimental: support multiple upstreams?
-
new command todo:
ziporcheckordiff: compare two plc logs over some time range -
new command to consider:
scatteror something: broadcast plc writes to multiple upstreams
if you have an idea for a new command, open a request!
license
This work is dual-licensed under MIT and Apache 2.0. You can choose between one of them if you use this work.
SPDX-License-Identifier: MIT OR Apache-2.0
Dependencies
~43–63MB
~1.5M SLoC