Metadata-Version: 2.4
Name: aldi-live
Version: 1.0.0
Summary: ALDI TV live stream assembly: local v3 player server (127.0.0.1:8000/live), publisher, verifier, diagnostics and original code. Seal: SEC 17684-273-411-436
Author: Albert Lane
License-Expression: LicenseRef-AlbertLane-Proprietary
Project-URL: Homepage, https://albertlane.net/live
Project-URL: License, https://albertlane.net
Classifier: Private :: Do Not Upload
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Android
Classifier: Environment :: Console
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: capture
Requires-Dist: numpy>=1.24; extra == "capture"
Requires-Dist: Pillow>=10.0; extra == "capture"
Provides-Extra: qa
Requires-Dist: playwright>=1.45; extra == "qa"
Dynamic: license-file

---
© Albert Lane. All Rights Reserved. | Proprietary and Confidential
Albert Lane Proprietary Software License | https://albertlane.net
Unauthorized use, copying, or distribution is prohibited.
---

# aldi-live 1.0.0: ALDI TV™ live stream assembly

Seal: SEC 17684-273-411-436

`aldi-live` is the ALDI TV™ live stream assembly as one installable Python CLI. It contains:

- the local player server (`/live`, `/live/tv`, `/live/meta.json`, `/live/pack.bin`)
- the v3 publisher, verifier and diagnostics
- the original capture and redaction code, Worker page code, embed code, QA harnesses and deploy scripts

Public page: https://albertlane.net/live. Operator copy (this device): `http://127.0.0.1:8000/live/tv`.

## Quick start (Linux or Termux, Python 3.11+)

```sh
pip install aldi_live-1.0.0-py3-none-any.whl          # or: pip install https://albertlane.net/downloads/aldi_live-1.0.0-py3-none-any.whl
aldi-live doctor
aldi-live publish --from-url https://albertlane.net    # mirror the current public package (one pack.bin)
aldi-live serve --mirror https://albertlane.net        # keeps following it; Ctrl-C to stop
```

Then open `http://127.0.0.1:8000/live/tv` (operator) or `http://127.0.0.1:8000/live` (public page copy) on the same device.

## Commands

| Command | What it does |
|---|---|
| `aldi-live serve [--host 127.0.0.1] [--port 8000] [--mirror BASE]` | stdlib HTTP server: `/live`, `/live/tv`, `/live/frame`, `/live/meta.json`, `/live/pack.bin?v=3` (`&seq=N` immutable), `/live/latest.jpg`, `/live/status.json`, `/live/embed` |
| `aldi-live publish --from-file PATH` | Installs a pack.bin (new seq is stamped) or a video file (needs ffmpeg) as the one current package |
| `aldi-live publish --from-url BASE` | Mirrors the public package once, fetching it only when seq changes |
| `aldi-live publish --capture` / `aldi-live capture` | Linux/X11 only: the redacting capture engine writes v3 packages into the local store |
| `aldi-live publish ... --remote` | Also writes the package to Workers KV (one write per package, daily cap 750). Credentials come from env only |
| `aldi-live verify [PATH] [--meta M] [--url BASE]` | Re-hashes the bytes it holds and validates meta and pack against spec v3 |
| `aldi-live debug [PATH]` | Display, ffmpeg and capture health, plus the player self-test (parses and decodes every fragment) |
| `aldi-live doctor` | Environment readiness |
| `aldi-live embed` | Prints the iframe embed snippet for third-party pages |
| `aldi-live files [--extract DIR]` | Lists or extracts the bundled original code, player files and docs |

## Using it alongside Meta AI

No Meta API key is included or needed. Run `aldi-live serve` on the phone and keep `http://127.0.0.1:8000/live/tv` open beside Meta AI. For any local assistant that can read a URL or a file on the device, `http://127.0.0.1:8000/live/status.json` is a read-only JSON summary. It holds seq, bytes, segs, media age, validation problems, the SHA-256 of the stored bytes (hashed on this device), mirror state and the seal. There is no chat route. See `docs/META-AI.md`.

## What is in the box

- `aldi_live/web/`: local player.
  - `live.html` is the public page copy. The PayPal QR becomes a link to albertlane.net/pay.
  - `frame.html` is the v3-only player. It never calls `/live/vid`.
  - `tv.html` is the operator page, plus `embed*.html`, the join sting and the favicon.
- `aldi_live/bundle/capture/`: capture engine (`capture_video.py`), OCR redaction (`redact.py`), env-driven `kv.py`, supervisor and watchdog (`run_capture.sh`), display keeper (`ensure_display.sh`), live work terminal (`worktail.py`), `config.example.json`.
- `aldi_live/bundle/worker/`: Cloudflare Worker page code. Includes `live-routes.js`, `live-do.js`, the join audio, the `build_live.py` builder (env credentials via `cfapi.py`) and `deploy_locked.sh`. Player sources are in `player-src/` and the deployed build 666a16370fd2 is in `player-built-666a16370fd2/`.
- `aldi_live/bundle/ops/`: break daemon, montage, schedule and trailer config/QA. The trailer MP4 itself is not included (see INSTALL.md).
- `aldi_live/bundle/qa/`: observer (`observe.py`), full-screen visual matrix gate (`test_p0b_gate.py`), hot-update, latency and player tests.
- `aldi_live/bundle/deploy/rtmp-hardening.sh` (also `deploy/` in the sdist): corrected nginx-rtmp ingest hardening script.
- `MANIFEST.json`: every file with its SHA-256.

## Secrets

None are shipped. Everything sensitive is read from the environment; see `.env.example`. The package never holds `mesh.key`, `chain.key` or the ALDI chain secret, and it signs nothing.

## License

Albert Lane Proprietary Software License. See `LICENSE`. License inquiries: https://albertlane.net

---
© Albert Lane. All Rights Reserved. | Proprietary and Confidential
Albert Lane Proprietary Software License | https://albertlane.net
Unauthorized use, copying, or distribution is prohibited.
---

