ArchiveBox-compatible plugin suite (hooks, configs, binaries manifests)
Project description
abx-plugins
ArchiveBox-compatible plugin suite (hooks, config schemas, binaries manifests).
This package contains only plugin assets and a tiny helper to locate them. It does not depend on Django or ArchiveBox.
Usage
from abx_plugins import get_plugins_dir
plugins_dir = get_plugins_dir()
# scan plugins_dir for plugins/*/config.json, binaries.jsonl, on_* hooks
Tools like abx-dl and ArchiveBox can discover plugins from this package
without symlinks or environment-variable tricks.
Plugin Contract
Directory layout
Each plugin lives under plugins/<name>/ and may include:
config.json(optional) - config schemabinaries.jsonl(optional) - binary manifestson_*hook scripts (required to do work)
Hooks run with:
- SNAP_DIR = base snapshot directory (default:
.) - CRAWL_DIR = base crawl directory (default:
.) - Snapshot hook output =
SNAP_DIR/<plugin>/... - Crawl hook output =
CRAWL_DIR/<plugin>/... - Other plugin outputs can be read via
../<other-plugin>/...from your own output dir
Key environment variables
SNAP_DIR- base snapshot directory (default:.)CRAWL_DIR- base crawl directory (default:.)LIB_DIR- binaries/tools root (default:~/.config/abx/lib)PERSONAS_DIR- persona profiles root (default:~/.config/abx/personas)ACTIVE_PERSONA- persona name (default:Default)
Event JSONL interface (bbus-style, no dependency)
Hooks emit JSONL events to stdout. They do not need to import bbus.
The event envelope matches the bbus style so higher layers can stream/replay.
Minimal envelope:
{
"event_id": "uuidv7",
"event_type": "SnapshotCreated",
"event_created_at": "2026-02-01T20:10:22Z",
"event_parent_id": "uuidv7-or-null",
"event_schema": "abx.events.v1",
"event_path": "abx-plugins",
"data": { "...": "event-specific fields" }
}
Conventions:
- Active verb names are requests (e.g.
BinaryInstall,ProcessLaunch). - Past tense names are facts (e.g.
BinaryInstalled,ProcessExited). - Plugins can emit additional fields inside
datawithout coordination.
Common event types emitted by hooks:
ArchiveResultCreated(status + output files)Binaryrecords (dependency detection/install)ProcessStarted/ProcessExited
Higher-level tools (abx-dl / ArchiveBox) can:
- Parse these events from stdout
- Persist or project them (SQLite/JSONL/Django) without plugins knowing
Legacy note:
Some hooks still emit a lightweight JSONL record with a top-level type field
(e.g., {"type": "ArchiveResult", ...}). Runtimes should accept those and
optionally translate them into the event envelope above.
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 abx_plugins-0.9.0.tar.gz.
File metadata
- Download URL: abx_plugins-0.9.0.tar.gz
- Upload date:
- Size: 389.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28feb1cc8aed503cb688676f9b7e58cd0b6f9479d6ef59365535891d7ae48ab5
|
|
| MD5 |
ba431b6130e613dbe33852003ef52640
|
|
| BLAKE2b-256 |
c18030e083812a78ef8499655a2a5eb3e02d3f9f41fb524b6b0758877f0105b6
|
File details
Details for the file abx_plugins-0.9.0-py3-none-any.whl.
File metadata
- Download URL: abx_plugins-0.9.0-py3-none-any.whl
- Upload date:
- Size: 543.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9963878dba41d6a6e881515456f114fc6655fc823c2b6e58d453050aee7d4794
|
|
| MD5 |
029e4823be25d916ec49c94f53a5f945
|
|
| BLAKE2b-256 |
ccf1da58dff6c41bc652a255d6cbf24a5872d49a2fd929df2906728cfed9d372
|