turnstone/app/glean
pyr0ball 7a2ab0bb46 feat(orchard): auto-enrollment API for branch node provisioning (#27)
Implements the Orchard branch grafting system for harvest.circuitforge.tech:

- POST /api/orchard/graft: provisions data dir, starts a new
  turnstone-submissions-<slug> Docker container on the next free port
  (ORCHARD_PORT_BASE=8538+), injects a handle_path block into the
  Caddyfile dynamic-branches marker section, restarts caddy-proxy,
  returns {submit_endpoint, api_key}
- GET /api/orchard/branches: list active/inactive branches (admin-only)
- DELETE /api/orchard/branches/<slug>: deactivate branch + stop container
- POST /api/orchard/branches/<slug>/anonymize: HMAC-based IP/username
  pseudonymization worker over a branch DB
- POST /api/glean/batch: optional TURNSTONE_BRANCH_KEY auth guard
- anonymized column added to log_entries schema (migration-safe)
- Updated Caddyfile with /huginn/* route (port 8536), /node2/* (8537),
  and dynamic-branch marker section
- All endpoints admin-gated via TURNSTONE_ORCHARD_ADMIN_KEY

Closes: #27
2026-06-14 14:30:18 -07:00
..
__init__.py refactor: rename ingest → glean throughout codebase 2026-05-20 23:02:55 -07:00
base.py feat: domain-view mapping for patterns and diagnose output (#32) 2026-06-01 19:57:16 -07:00
caddy.py refactor: rename ingest → glean throughout codebase 2026-05-20 23:02:55 -07:00
dmesg_log.py refactor: rename ingest → glean throughout codebase 2026-05-20 23:02:55 -07:00
doc_upload.py feat: dual-backend SQLite/Postgres + multi-tenant source namespacing 2026-06-08 08:37:54 -07:00
docker_log.py refactor: rename ingest → glean throughout codebase 2026-05-20 23:02:55 -07:00
journald.py refactor: rename ingest → glean throughout codebase 2026-05-20 23:02:55 -07:00
mqtt_subscriber.py fix(db): add timeout=30s to all sqlite3.connect() calls across app 2026-05-26 23:12:48 -07:00
pipeline.py feat(orchard): auto-enrollment API for branch node provisioning (#27) 2026-06-14 14:30:18 -07:00
plaintext.py feat(corpus): synthetic log corpus generator for demos and testing 2026-06-11 10:57:20 -07:00
plex.py refactor: rename ingest → glean throughout codebase 2026-05-20 23:02:55 -07:00
qbittorrent.py refactor: rename ingest → glean throughout codebase 2026-05-20 23:02:55 -07:00
servarr.py refactor: rename ingest → glean throughout codebase 2026-05-20 23:02:55 -07:00
ssh.py feat: SSH remote host glean — transport layer and pipeline integration (closes #22, backend) 2026-05-20 23:03:13 -07:00
syslog.py refactor: rename ingest → glean throughout codebase 2026-05-20 23:02:55 -07:00
tautulli.py refactor: rename ingest → glean throughout codebase 2026-05-20 23:02:55 -07:00
wazuh.py refactor: rename ingest → glean throughout codebase 2026-05-20 23:02:55 -07:00