Access Method for Bibliographic Electronic Records — a Dynix-style terminal search for the local LibraryThing (JSON export) and Calibre databases.
Catalog files live in ./data/, e.g. in my case:
data/librarything_*.json— LibraryThing JSON export (loaded by default)data/metadata-dmd.dbasDANIELin the format/library columndata/metadata-cad.dbasCELESTEin the format/library column
Use --no-ebooks to search only the LibraryThing export, or --ebook-db NAME=PATH to add another Calibre metadata database. Override the catalog path with --catalog PATH.
./amber.py
./amber.py --theme green
./amber.py --check
./amber.py --no-ebooksStart the local telnet bridge:
./amber_telnet.py --host 127.0.0.1 --port 2323Connect locally from another terminal:
telnet 127.0.0.1 2323With the telnet server running locally, expose it through ngrok:
ngrok tcp 2323Ngrok prints a forwarding address like tcp://0.tcp.ngrok.io:12345. Connect to it with:
telnet 0.tcp.ngrok.io 12345The telnet server binds to localhost by default. Use --host 0.0.0.0 only when you explicitly want it reachable on the local network without a tunnel.
Build and run the Docker image. The catalog is not baked into the image — mount ./data as a read-only volume at /app/data:
docker build -t amber-web .
docker run --rm -p 2380:2380 -v "$PWD/data:/app/data:ro" amber-webOr via compose (the volume mount is already wired up):
docker compose up --buildOpen:
http://localhost:2380/
The browser UI is an 80x25 xterm.js terminal connected to the same AMBER curses app over a WebSocket PTY bridge.