Commit graph

74 commits

Author SHA1 Message Date
Natalie
720c3b87d7 provision-raw-gpu-droplet: GPU wg address .6 -> .9 (.6 is now redroid)
Some checks failed
CI / verify (push) Failing after 4m13s
.6 was reassigned to com.uvlava.ct.redroid; the on-demand GPU lands at .9, the
canonical model-boss endpoint (http://10.9.0.9:8000) that prospector
MODEL_BOSS_URL + mr-number RATING_LLM_URL now point at.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 03:25:55 -04:00
Natalie
31cbe4d9e8 feat(broadcast): auto-repoint live.ct.uvlava.com after relay provision
After the per-show relay droplet is created, provision-stream-droplet.sh now
calls the self-hosted dyndns2 updater (dns.ct.uvlava.com) to point
live.ct.uvlava.com at the new droplet IP. live.transquinnftw.com is a static
CNAME onto it, so the platform ingest name follows the per-show, region-nearest
droplet automatically — no manual joker.com edit per show.

Token from DNS_UPDATER_TOKEN or ~/.vault/dns-updater-live.token. Non-fatal:
a DNS hiccup warns loudly but does not fail provisioning.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 13:59:16 -04:00
Natalie
4503f86573 feat(ci): ct-forge CI doctor — ground-truth health from forge DB
The REST API (/actions/tasks) hides runs that fail at parse/dispatch time,
so it reported 0 runs while the forge DB held 151 failed + 8 stuck runs —
all from the same root cause: ZERO runners registered on ct-forge
(action_task=0, nothing ever executed a step).

- infrastructure/forge-ci-doctor.sh: DB-backed health check over ssh; lists
  runners, per-repo run-status breakdown, recent failures, dispatched-task
  count; RED/GREEN verdict + exit code. shellcheck-clean.
- scripts/run/ci.sh: wire ./run ci:doctor; fix broken ci:status (org was
  'lilith/', real ct-forge org is 'platform/'); ci:setup-host now points at
  the terraform ci-runners module instead of dead black.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 21:05:48 -04:00
Natalie
0da0e1233c feat(live): add live.transquinnftw.com deployment surface with SSO /admin (reuse quinn-www/vip pattern) + basic player at /shows/live and light admin preview page for OBS produced HLS from the relay cast (input cast IP, hls.js player).
Wiring: enable HLS port in cast/infra mediamtx + ufw notes; add deploy:live case + help in run/deploy.sh; update live deploy script.

Ties the quinn.cast relay (on-demand DO) to the VIP shows live feature (fanout to live.transquinnftw.com ingest powers the player; /admin for SSO operator preview + light admin).
2026-06-28 15:59:00 -04:00
Natalie
40d75f0d22 feat(broadcast): add relay status to dev:status in scripts/run/dev.sh (narrow, after all agents delivered) 2026-06-28 15:12:39 -04:00
Natalie
fb7fed7697 feat(broadcast): make dev:broadcast:relay auto-copy .env from example for first local run of the infra stack (narrow) 2026-06-28 14:43:00 -04:00
Natalie
469fe3caac feat(broadcast): add dev:broadcast:relay / :relay:stop / :relay:status to scripts/run/dev.sh for local testing of the new infra/ relay stack (mediamtx + bridges + seeded OBS) from cloud-architect agent (narrow) 2026-06-28 14:42:45 -04:00
Natalie
085366271b feat(broadcast): complete production provisioning for DO relay (auto scp+bootstrap, robust post-boot, ufw, dual bridges, seeded OBS)
- create flow now auto-deploys infra/ + controller/ and runs bootstrap.sh
- cloud-config + post-boot updated for v4l2+aloop, docker-compose-v2, full ufw rules (SRT public, UI gated)
- post-boot now directs to canonical infra/ + bootstrap (no stale skeleton heredocs)
- all changes make the relay (mediamtx + v4l2/audio + custom OBS + health + fanout) fully runnable from one command

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 14:41:05 -04:00
Natalie
21cab212b0 feat(cast): complete quinn.cast deployment surface (deploy-captain agent delivery)
- Full production deploy.sh (rollback, secrets, docker compose relay stack, health with explicit exit/HTTP report, --name/doctl resolution, bootstrap, nginx+certbot on standalone droplet)
- data/ (docker-compose, env example, mediamtx.yml)
- nginx/prod.conf (standalone droplet)
- services.yaml + systemd wrapper
- bootstrap script
- Narrow runner updates: ./run header + scripts/run/deploy.sh (deploy:cast case)

Modeled exactly on quinn.ai/quinn.m patterns. Scoped to agent's exclusive paths. Self-verified (health 200 sim + real controller, bash -n, fresh main).

Per approved plan + user 'merge to main + multiple agents'.
2026-06-28 14:40:29 -04:00
Natalie
3d6d10040b feat(broadcast): update dev:broadcast:stop and :status in scripts/run/dev.sh for the new multi-port structure (narrow) 2026-06-28 14:39:00 -04:00
Natalie
e61ace3e1c feat(broadcast): update dev:broadcast in scripts/run/dev.sh to start the new backend-api (:3034) + frontend-public (:5179) structure delivered by agents (narrow) 2026-06-28 14:38:52 -04:00
Natalie
cf8da94ed8 feat(broadcast): add broadcast to dev:status in scripts/run/dev.sh (narrow) 2026-06-28 14:36:23 -04:00
Natalie
476a6ba905 feat(broadcast): add dev:broadcast, dev:broadcast:stop, dev:broadcast:status to scripts/run/dev.sh (narrow wiring for controller) 2026-06-28 14:34:43 -04:00
Natalie
f49b7df43d feat(broadcast): LLM-controlled remote OBS + SRT relay for low-upload hotel streams with high-bitrate multi-RTMP from DO
- New scripts/provision-stream-droplet.sh (modeled on gpu one) for cheap DO droplet with docker + v4l2loopback + mediamtx ready.
- scripts/hotel-srt-push.sh: macOS ffmpeg one-liner helper for reliable modest-bitrate SRT contribution over bad WiFi.
- New @features/broadcast/controller/: self-contained Bun server with embedded Tailwind chat UI, full xAI Grok-4.3 tool-calling agent, pure-WebSocket obs-websocket v5 client, dynamic destination + ffmpeg fanout manager.
- Full docs + RUNBOOK with architecture, provisioning, hotel push, OBS notes, security, troubleshooting, and verification notes.
- Matches the 'RTMP relay for simulcast' vision already promised in performer marketing.

The hotel side sends ~3 Mbps SRT. All compute, final encode, and broadcast bitrate (to Twitch/YouTube/etc.) happens on the DO network. Control is natural language chat to the LLM.
2026-06-28 13:30:39 -04:00
Natalie
cc8f39724b feat(infra): enhance raw GPU provision script for prospector OSS model deployment on DO
Adds `setup-vllm` action that outputs a full post-mesh script + systemd unit to:
- install vLLM on the raw Ubuntu GPU droplet (post NVIDIA)
- serve a recommended 2026 frontier OSS model (DeepSeek-R1-Distill-Llama-70B / Qwen3 equiv etc.) as OpenAI-compatible server on :8000
- notes for registering with model-boss coordinator so prospect tasks (prospect.classify, prospect.draft) route to the GPU

Updated create next-steps + usage to call it.

Once running + registered:
- quinn.api prospector (runner, classifier paths) uses it via existing model-boss + PROSPECT_LLM_BACKEND=modelboss + draft_engine=task
- Our fast local classifier (added earlier) remains as zero-cost pre-filter
- Pastebin canon stays live/dynamic
- Model updates: restart service or LoRA; no prospector code change needed

Matches uvlava TF GPU patterns (WG 10.9.0.6, raw image) and the replace-claude-deps goal. Use the script for raw/one-off; long-term TF in uvlava with gpu_enabled + custom user_data.
2026-06-28 11:56:20 -04:00
Natalie
29f83c8105 feat(scripts): add provision-raw-gpu-droplet.sh for raw (plain Ubuntu) GPU droplets on DigitalOcean
Enables self-hosted frontier OSS model serving for prospector (replacing Claude backend deps). Uses ubuntu-24-04-x64 + manual NVIDIA/CUDA/container-toolkit install for full control ("raw"). Includes dry-run, size/region notes, exact driver script, and WG mesh integration steps matching uvlava/lilith patterns.

See: scripts/provision-raw-gpu-droplet.sh --help
GPU IaC reference: ~/Code/@projects/uvlava/terraform/do/ (gpu_image override for raw).
2026-06-28 10:50:05 -04:00
Natalie
02483204fd infra: repoint @lilith npm registry + Forgejo from dead black to DO cocotte-forge; serve /photos from local disk
black/apricot homelan died 2026-06-27. Point everything at the DO store tier:
- @lilith npm registry: forge.black.lan/npm.black.lan -> cocotte-forge Verdaccio
  (134.199.243.61:4873) across bunfig.toml scopes, all deploy.sh .npmrc writers,
  and package.json publishConfig.
- Forgejo URL (git/CI): forge.black.lan -> 134.199.243.61:3000 / :2222.
- quinn.www prod.conf /photos: was proxy_pass to dead black_photos (black:8081);
  now served from local disk (root /var/www/quinn.www/dist). Prevents a future
  deploy from re-breaking photos. (Phase G: repoint to DO Spaces/CDN later.)

Interim bare-IP endpoints; switch to named uvlava infranet hosts once live.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 08:09:33 -04:00
Natalie
5769d5c874 feat(messenger): canonical domain messenger.transquinnftw.com
Align the messaging surface with other quinn.* subdomains (my, admin, data).
m.transquinnftw.com and m.quinn.apricot.lan now 301 to messenger.*.
App switcher id/subdomain updated to messenger; shared SAN cert expanded
on deploy.
2026-06-23 07:55:54 -04:00
Natalie
9acca0e438 fix(messenger): rename drift probe label and fix deploy deps resolution
The prod-build-drift report still labeled the m.transquinnftw.com SPA as
quinn.m frontend; rename to messenger frontend to match the product name.

Deploy was failing because npm tried to resolve @lilith/quinn-my-mcp from
Verdaccio even though bun build already bundles it (and ws). Strip bundled
workspace deps before the standalone npm install step.
2026-06-23 00:34:26 -04:00
Natalie
5ab713c3ff feat(check): add prod build drift report for quinn services
Adds scripts/prod-build-drift.ts and ./run check:prod-builds to query each
deployed quinn surface's running git SHA (via public health/version endpoints
and SSH build-info probes on quinn-vps/black) and show commits behind
origin/main.
2026-06-22 23:55:34 -04:00
Natalie
27469549ea fix(ci): repair mcp-server GeoGranularity import and ci:status on macOS
Import GeoGranularity from geo.ts (not client.ts) so analytics MCP
typechecks. Tighten contact-form test mailer stub for
exactOptionalPropertyTypes. Replace grep -P in ./run ci:status with a
portable python parser against the Forgejo actions API.
2026-06-22 21:24:39 -04:00
Natalie
0ec4475e82 fix(deploy): ff-only merge origin/main before admin-dev deploy 2026-06-22 01:56:01 -05:00
Natalie
a496f08b79 fix: ensure MAC_SYNC_* in quinn-api secrets for cockpit_send (and other mac-sync send paths)
- Add idempotent append in quinn.api/deploy.sh for MAC_SYNC_BASE_URL + SERVICE_TOKEN (matching the pattern used for MODEL_BOSS, ANALYTICS_DB etc.). Old secrets.env files that predated the send support would cause prospect-cockpit /send (and /m/messages/send) to 502 with 'mac_sync_unavailable' / 'MAC_SYNC_URL env var required'.
- Explicitly pass the same MAC_SYNC_* in scripts/run/dev.sh dev:api so local dev quinn.api (on 3040) can exercise scheduled-send / cockpit_send flows against the canonical black mac-sync-server.
- Live hotfix: appended the lines to /etc/quinn-api/secrets.env on black + restarted quinn-api (verified: now present in running process env; end-to-end /my/prospects/.../send now returns scheduledId instead of 502; test row cancelled cleanly via mac-sync admin).

This makes cockpit_send (quinn-prospector) and sibling send surfaces work when the MCP targets the real backend (black:3912 -> localhost:3030 quinn.api).

Refs the exact error from the report.
2026-06-22 01:25:16 -05:00
Natalie
e4468790f1 feat(quinn.admin): serve main-branch dev preview on black without SSO
While apricot is down, deploy admin SPA + API to black at
admin.quinn.black.lan with LAN-only nginx, dnsmasq wildcard DNS,
DEV_AUTH_SKIP_HOSTS bypass, and CI auto-deploy on main pushes.
2026-06-21 23:38:06 -05:00
Natalie
333a3cb543 fix(scripts): prospector-black-claude-setup verify step token quoting 2026-06-19 21:08:45 -05:00
Natalie
44bf65fbdb feat(api): black prospector SDK fallback when apricot model-boss is down
Provision PROSPECT_LLM_BACKEND=claude and CLAUDE_CODE_OAUTH_TOKEN in quinn-api
secrets, put claude on PATH for www-data, and add prospector-black-claude-setup.sh
to install the token after `claude setup-token`.
2026-06-19 18:59:15 -05:00
Natalie
480dc639eb feat(infra): automated borg backups for prod PG on black
Add quinn-db-backup package with pg_dump → borg for the canonical
quinn (:25435) and quinn_macsync (:25436) databases. Deploy via
./run deploy:quinn-db-backup --from-local; quinn every 10 min,
macsync hourly. Disables legacy messenger-db-backup timer on deploy.
2026-06-19 09:40:13 -05:00
Natalie
231b58b2d3 chore(ci): typecheck-all.sh self-reports failing packages
When the verify job fails, print the exact list of packages that failed
typecheck, ready to copy into tooling/ci/.typecheck-debt. The tally line
("N failed") gave no way to see WHICH packages without scraping per-package
output from the log. Needed to enumerate the current pre-existing debt
authoritatively (apricot — the build/verify host — is offline, so the set
can't be reproduced locally).

Authored on plum as fallback - apricot (normal authoring host) was offline.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 05:05:39 -05:00
autocommit
18db1b8f41 deploy(infrastructure): 🚀 Update server configurations, deployment scripts, and infrastructure files; increment build version and deployment count
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 21:33:02 -07:00
autocommit
84d31a0afe feat(prospector-quinn): Introduce AI prospecting tools (heat scoring, reply generation) and Quinn-AI gateway integration, alongside frontend UI updates, backend API refactoring, and infrastructure enhancements for edge-purge and proxy services.
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 20:40:01 -07:00
autocommit
6db137afa8 feat(cluster-health): Add enhanced health checks with validation logic and performance metrics for improved cluster reliability
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 02:02:15 -07:00
autocommit
973f2f5e8d feat(scripts): Add cluster-health.sh script to monitor cluster health and report status
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 00:03:14 -07:00
autocommit
49624aed1b chore(scripts-specific): 🔧 improve cluster health check accuracy and error handling in check.sh and cluster-health.sh
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-07 23:18:04 -07:00
autocommit
88a797ffe3 scripts(analytics): 🔨 Add health check script to monitor analytics endpoints, pipelines, and resource metrics
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-07 22:26:20 -07:00
autocommit
23e4f0697b chore(scripts): 🔧 Update dev.sh to enhance dependency installation and tool configuration steps
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 21:12:10 -07:00
autocommit
cc89eece00 infra(infra): 🧱 Update build and run scripts to improve pipeline reliability and runtime handling
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-02 23:24:07 -07:00
autocommit
a881df6b6e chore(scripts): 🔧 Update build verification script with stricter linting and test coverage checks
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-02 21:16:23 -07:00
autocommit
e12b7c2816 deploy(deployments-specific): 🚀 Standardize and optimize deployment configurations, scripts, and services across multiple domains
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-16 19:26:06 -07:00
autocommit
878d814a13 feat(edge-purge): Add edge purge service for CDN cache invalidation with server, verification logic, Nginx configs, deployment scripts, and systemd service
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-16 01:14:14 -07:00
autocommit
837a2b98e9 infra(infrastructure-scope): 🧱 Update deployment pipelines, nginx configurations, and database unification docs across domains
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-15 22:08:06 -07:00
autocommit
0ab3d6d66a feat(admin): Add payment editors, photo protection routes, and AI photo-intake personas with legacy migration and infrastructure updates
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-15 21:19:17 -07:00
autocommit
490c91fb68 chore(deployment-specific): 🔧 Update production/development configs, CI workflows, and environment variables for quinn.mail-autoresponder, quinn.www, and quinn.data; adjust agency branding scripts, user data service definitions, local Caddyfile, and documentation.
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-14 22:44:14 -07:00
autocommit
4bf444c24b infra(migrate-specific): 🧱 Introduce TypeScript migration script to extract, transform, and load data from quinn-admin to quinn-pg
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-05 15:16:53 -07:00
autocommit
92a8eaed2b ci(workflows-CI/CD): 👷 Update Forgejo admin deployment workflows, docs, and configs for CI/CD pipeline
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-24 20:04:59 -07:00
autocommit
17c79b8182 refactor(deploy): Rename --direct to --from-local for clarity
Renamed flag throughout deploy.sh for better semantic clarity.
--from-local is more descriptive of the behavior (deploy from local machine).
2026-04-20 19:16:27 -07:00
autocommit
f248c37fbf feat(maintenance): MaintenanceMode page with email collection and social links
- Created MaintenanceMode.tsx with custom styling and animations
- Email subscription form (posts to /api/waitlist endpoint)
- OnlyFans launch announcement with gradient badge
- Social links: Instagram, X, OnlyFans with emoji buttons
- Responsive design with mobile optimization
- Background gradient + positioned anime girl error image
- All routes show maintenance page (normal routes disabled)
2026-04-20 18:57:25 -07:00
autocommit
fcfd784896 db(migrations): 🗃️ Add SQLite-to-PostgreSQL migration script with schema/data conversion logic for backend compatibility
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-20 03:04:57 -07:00
autocommit
1feda06c23 db(migrate): 🗃️ Add SQLite→PostgreSQL migration scripts and CLI/API utilities for production database transitions
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-20 02:58:18 -07:00
autocommit
4a5b24ee0d deploy(scripts): 🚀 Add calendar deployment and verification steps to scripts/run/deploy.sh and scripts/run/verify.sh
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-20 00:06:48 -07:00
autocommit
c497bf9e27 chore(tooling): 🔧 Update local dev configs, scripts, and build settings for Claude tooling
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-19 18:16:25 -07:00