? BOUNTY (1 SOL): Film "I Deleted My Nginx Config — Watch What Happens" Demo
bolivian-peru/os-moda
Description
## ? Bounty: 1 SOL **Film a real demo of osModa self-healing after destructive deletion. Upload to YouTube. Earn 1 SOL.** --- ## The Demo **Title:** "I Mass Deleted My Server's Nginx Config. Watch What Happens." **Format:** 45-90 second screen recording with real camera filming your laptop/monitor. Uncut, no fakes. **Hook (first 3 seconds):** "What happens when I `rm -rf /etc/nginx` on an AI-managed server?" ### What to show: 1. **Setup:** osModa running on a real server (use `spawn.os.moda` to provision, or install via `curl -sSL https://raw.githubusercontent.com/bolivian-peru/os-moda/main/scripts/install.sh | bash`) 2. **The destruction:** Run `rm -rf /etc/nginx` (or another critical config) on camera 3. **The recovery:** Show the watchdog catching it. Show the AI diagnosing it. Show NixOS rolling back. Show nginx coming back online. 4. **The proof:** Show the timestamp — total downtime. Show the hash-chained audit log entry with the AI's reasoning. 5. **The punchline:** "Try this on your Ubuntu server. I dare you." ### What makes this demoable (verified working): - ✅ **SafeSwitch + NixOS rollback** — calls real `nix-env --rollback` + `switch-to-configuration switch` - ✅ **Autopilot watchers** — real health checks (systemd unit, TCP port, HTTP GET) with escalation (restart → rollback → notify) - ✅ **Hash-chained audit log** — every action logged with SHA-256 chain, tamper-evident - ✅ **Approval gate** — destructive commands blocked until approved (35 dangerous patterns detected) - ✅ **194 tests passing** across 10 Rust crates ### Requirements: - [ ] Real camera filming real screen (not just screen recording — we want to see the laptop/monitor) - [ ] Uncut deletion → recovery sequence (no jump cuts during the critical moment) - [ ] Show the audit log after recovery - [ ] Show the timestamp / total downtime - [ ] Upload to YouTube (public, not unlisted) - [ ] Minimum 720p quality - [ ] Link osModa repo and `spawn.os.moda` in description - [ ] Post the YouTube link in this issue ### Support: **We will help you.** If you hit bugs during filming, open a discussion or ping in the issue — the maintainers will live-assist you, debug issues in real-time, and help you get the demo working perfectly. We want you to succeed. ### How to claim: 1. Comment on this issue saying you're working on it 2. Film the demo 3. Upload to YouTube 4. Post the link here 5. Receive 1 SOL to your wallet **First valid submission wins.** Multiple submissions welcome — if your video is high quality, we may award additional bounties. --- *osModa: NixOS distribution where AI IS the operating system. 10 Rust daemons. 83 tools. 194 tests. Zero cloud dependencies.* --- ## ? This Is Also a Testing Bounty **You are not just filming — you are battle-testing osModa.** We expect things to break. That is the point. This bounty is as much about finding bugs as it is about making a great video. ### What we want from you: - **Hit bugs? Report them.** Open issues, paste errors, screenshot failures. Every bug you find makes osModa better. - **We will fix them live.** Maintainers will actively debug with you. You report a bug → we push a fix → you pull and continue. Real-time iteration. - **Broken install? Tell us.** If `install.sh` fails on your distro, your hardware, your VPS provider — that is valuable data. We will patch it. - **Document rough edges.** If something works but the UX is confusing, the error message is unhelpful, or a tool returns unexpected output — tell us. We fix it. - **Your bugs become commits.** Every issue you find gets fixed and credited. Your name goes in the git log. ### The deal: You do NOT need a perfect demo to earn the bounty. If you spend real time testing, find real bugs, and help us fix them — **even if the final video shows a rough journey** — you earn the SOL. Authenticity > polish. A video that shows "I tried to do X, it broke, I reported it, they fixed it in 20 minutes, then it worked" is MORE valuable than a polished demo where everything magically works on the first try. ### How to report bugs during your bounty: 1. Open a new issue with `[BUG]` in the title 2. Include: OS, hardware, error output, steps to reproduce 3. Tag it with your bounty issue number (e.g. "Found while working on #2") 4. We fix it. You pull. You continue filming. **We are building this OS in public. Your testing is part of the product.** --- ## ? Before You Film: Set Up a Real App Stack **Don't demo on an empty server.** Deploy a real app with a database so the self-healing, audit trail, and monitoring have something meaningful to protect. ### Option A: Todo App + PostgreSQL (Recommended) The most realistic demo stack — a web app with a real database that can actually crash. ```bash # Step 1: Ask your osModa agent to set up PostgreSQL "Install and start PostgreSQL. Create a database called 'todos' with a user 'app' password 'demo123'" # Step 2: Deploy a simple Express todo API "Create a file /opt/todo-app/server.js with this content: const express = require('express'); const { Pool } = require('pg'); const app = express(); app.use(express.json()); const pool = new Pool({ user: 'app', host: 'localhost', database: 'todos', password: 'demo123', port: 5432 }); // Create table on startup pool.query(`CREATE TABLE IF NOT EXISTS todos ( id SERIAL PRIMARY KEY, title TEXT NOT NULL, done BOOLEAN DEFAULT false, created_at TIMESTAMP DEFAULT NOW() )`); app.get('/todos', async (req, res) => { const r = await pool.query('SELECT * FROM todos ORDER BY created_at DESC'); res.json(r.rows); }); app.post('/todos', async (req, res) => { const r = await pool.query('INSERT INTO todos (title) VALUES ($1) RETURNING *', [req.body.title]); res.json(r.rows[0]); }); app.get('/health', async (req, res) => { try { await pool.query('SELECT 1'); res.json({ status: 'healthy', db: 'connected' }); } catch(e) { res.status(500).json({ status: 'unhealthy', error: e.message }); } }); app.listen(3000, () => console.log('Todo API on :3000')); " # Step 3: Install deps and deploy "Run: cd /opt/todo-app && npm init -y && npm install express pg" "Deploy the todo app on port 3000" # Step 4: Set up nginx reverse proxy "Set up nginx to proxy port 80 to localhost:3000" # Step 5: Add watchers "Add a watcher that checks http://localhost:3000/health every 30 seconds" "Add a watcher that checks if postgresql is running every 30 seconds" # Step 6: Add some real data curl -X POST http://localhost:3000/todos -H 'Content-Type: application/json' -d '{"title":"Buy groceries"}' curl -X POST http://localhost:3000/todos -H 'Content-Type: application/json' -d '{"title":"Deploy AI agents"}' curl -X POST http://localhost:3000/todos -H 'Content-Type: application/json' -d '{"title":"Take over the world"}' # Step 7: Verify everything works curl http://localhost:3000/todos curl http://localhost:3000/health ``` ### Option B: Static Site + Redis (Simpler) ```bash # Quick and dirty — just enough to have something running "Install nginx and serve a static page on port 80 that says 'osModa Demo Server'" "Install and start Redis" "Add a watcher for nginx every 30 seconds" "Add a watcher for redis on port 6379 every 30 seconds" ``` ### Things to break on camera (pick any): | What to break | Command | What osModa does | |---|---|---| | Kill PostgreSQL | `systemctl stop postgresql` | Watcher detects → restarts → app reconnects | | Kill the todo app | `pkill -f 'node.*server.js'` | Watcher detects → restarts via systemd | | Delete nginx config | `rm -rf /etc/nginx/` | Watcher detects → NixOS rollback → nginx returns | | Eat all memory | `stress --vm 1 --vm-bytes 90%` | Agent detects → kills stress → logs incident | | Corrupt the database | `systemctl stop postgresql && rm -rf /var/lib/postgresql/*/` | Watcher detects → rollback + restore from backup | | Flood with requests | `ab -n 10000 -c 100 http://localhost/todos` | Agent adapts rate limits | **Each of these creates real audit log entries, real incident workspaces, and real self-healing sequences.** --- ## ? Video Format Requirements **Film in BOTH formats** to maximize reach. Same content, two crops. ### Format 1: Vertical (9:16) — TikTok / Instagram Reels / YouTube Shorts - **Resolution:** 1080x1920 minimum - **Duration:** 45-90 seconds (60s sweet spot) - **Style:** Fast cuts, big text overlays, hook in first 2 seconds - **Audio:** Trending sound or lo-fi background music - **Captions:** Burned-in subtitles (80% of viewers watch muted) - **End frame:** Show `spawn.os.moda` for 3 seconds - **Post to:** TikTok, Instagram Reels, YouTube Shorts ### Format 2: Landscape (16:9) — YouTube / LinkedIn / Twitter/X - **Resolution:** 1920x1080 minimum - **Duration:** 60-120 seconds - **Style:** Calm walkthrough, terminal clearly readable, show the full screen - **Audio:** Quiet confident voiceover OR text overlays (no hype-bro energy) - **Thumbnail:** Create a custom thumbnail with big text (we can help) - **End frame:** Show `spawn.os.moda` + GitHub repo link - **Post to:** YouTube (main video), LinkedIn, Twitter/X ### Tips for maximum reach: - **Film vertical first** (phone on tripod filming your monitor), then crop/re-edit for landscape - **Or film landscape** (screen recording) and add black bars + text overlays for vertical - **Tuesday-Thursday 9-11 AM EST** for tech Twitter/LinkedIn - **Always end with the deploy screen** — last 3 seconds = `spawn.os.moda` - **Tag us** when you post — we will retweet/repost everything ### Hashtags to use: ``` #osModa #AIagents #NixOS #Rust #SelfHealing #DevOps #ServerManagement #AIinfrastructure #OpenSource #BuildInPublic #AgenticAI #P2P ```