diff --git a/.claude/skills/sidix-research/SKILL.md b/.claude/skills/sidix-research/SKILL.md
new file mode 100644
index 00000000..727a1f55
--- /dev/null
+++ b/.claude/skills/sidix-research/SKILL.md
@@ -0,0 +1,62 @@
+---
+name: sidix-research
+description: Invoke SIDIX brain via /agent/chat_holistic untuk multi-source research (jurus seribu bayangan). Pakai saat butuh insight kompleks dari multiple perspective sebelum eksekusi sprint atau diskusi visi.
+---
+
+# SIDIX Research Skill
+
+SIDIX brain punya endpoint `/agent/chat_holistic` yang fan-out paralel ke web + corpus + dense_index + 5-persona research + tools. Output = synthesis ringkas dengan attribution.
+
+Pakai ini untuk:
+- Riset visi besar bos sebelum eksekusi sprint
+- Cross-check decision dengan SIDIX corpus + web sources
+- Multi-perspective insight (5 persona angle simultan)
+- Self-eating dogfood: SIDIX bantu bangun SIDIX (Phase 1 Self-Bootstrap)
+
+## Cara Pakai
+
+User: `/sidix-research [pertanyaan kompleks]`
+
+Saya invoke via Bash:
+
+```bash
+ssh sidix-vps "curl -s --max-time 200 -X POST http://localhost:8765/agent/chat_holistic \
+ -H 'Content-Type: application/json' \
+ -d '{\"question\":\"[QUERY]\"}' \
+ -o /tmp/sidix_research.json && \
+ python3 -c 'import json; d=json.load(open(\"/tmp/sidix_research.json\")); \
+ print(d.get(\"answer\",\"\")[:2000]); \
+ print(); print(\"sources_used:\", d.get(\"sources_used\")); \
+ print(\"latency:\", d.get(\"duration_ms\"))'"
+```
+
+(Atau langsung curl kalau VPS access dari local Claude Code working directory.)
+
+## Output Yang Diberikan ke User
+
+- Answer synthesis (max 2000 char)
+- Sources used (yang berhasil)
+- Latency
+- Note tentang RunPod state kalau ada error
+
+## Kapan Dipakai
+
+✅ **Pakai saat**:
+- Visi kompleks butuh multi-perspective (5 persona)
+- Sprint planning yang butuh research backing
+- Cross-verify klaim sebelum dokumentasi
+
+⊘ **Skip saat**:
+- Pertanyaan simple yang Claude Code bisa jawab langsung dengan grep/read
+- Pertanyaan tentang state proyek (pakai `/sidix-state`)
+- Pertanyaan teknis tentang implementation detail (baca code)
+
+## Cost Awareness
+
+Per call ~30-130s + RunPod compute. Tidak boros — pakai saat genuine multi-perspective needed.
+
+## Reference
+
+- `apps/brain_qa/brain_qa/multi_source_orchestrator.py` (Sprint Α)
+- `apps/brain_qa/brain_qa/cognitive_synthesizer.py`
+- Endpoint: `https://ctrl.sidixlab.com/agent/chat_holistic`
diff --git a/.claude/skills/sidix-state/SKILL.md b/.claude/skills/sidix-state/SKILL.md
new file mode 100644
index 00000000..0b09cfb1
--- /dev/null
+++ b/.claude/skills/sidix-state/SKILL.md
@@ -0,0 +1,45 @@
+---
+name: sidix-state
+description: Auto-load SIDIX project state — BACKLOG digest + visi coverage + recent decisions + WIP. Pakai ini di awal sesi sebelum eksekusi apapun di proyek SIDIX.
+---
+
+# SIDIX State Skill
+
+Sesi baru di proyek SIDIX wajib output state read dulu (per `CLAUDE.md` SESSION START PROTOCOL). Skill ini auto-load ringkasan state dari 9 docs anti-menguap.
+
+## Cara Pakai
+
+User invoke `/sidix-state` atau "show sidix state".
+
+## Yang Saya Lakukan
+
+1. **Read 5 docs canonical** dengan tail/head untuk hemat token:
+ - `tail -80 docs/SIDIX_BACKLOG.md` (state sprint terkini)
+ - `tail -50 docs/VISI_TRANSLATION_MATRIX.md` (coverage table)
+ - `tail -100 docs/FOUNDER_IDEA_LOG.md` (5 ide bos terbaru)
+ - `tail -150 docs/FOUNDER_JOURNAL.md` (decisions recent)
+ - `tail -50 docs/LIVING_LOG.md` (ops recent)
+
+2. **Output digest** ke user dalam format:
+
+```
+📋 SIDIX STATE READ:
+- BACKLOG: [N completed, M in-progress, K queued]
+- WIP carry-over: [list sprint belum kelar]
+- Visi gap utama: [point coverage terendah]
+- Recent decisions: [3 item terbaru]
+- Sprint berikutnya queued: [nama]
+- Pertanyaan bos: [paraphrase kalau ada]
+- Saya akan: [action konkret]
+```
+
+## Anti-Pattern (Dilarang Setelah Skill Ini)
+
+- ❌ Eksekusi tanpa baca state ini dulu
+- ❌ Tanya bos detail teknis (saya yang ambil otoritas per BACKLOG)
+- ❌ Skip update BACKLOG di akhir sesi
+
+## Reference
+
+Detail protocol di `docs/AGENT_ONBOARDING.md` + `CLAUDE.md` SESSION START PROTOCOL.
+Pattern lahir dari research note 306 (anti-menguap diagnose).
diff --git a/.claude/skills/sidix-task-card/SKILL.md b/.claude/skills/sidix-task-card/SKILL.md
new file mode 100644
index 00000000..c3c03782
--- /dev/null
+++ b/.claude/skills/sidix-task-card/SKILL.md
@@ -0,0 +1,52 @@
+---
+name: sidix-task-card
+description: Generate Task Card sebelum eksekusi apapun di proyek SIDIX (mandatory per anti-menguap protocol). Format WHAT/WHY/ACCEPTANCE/PLAN/RISKS dengan visi mapping + sprint context + founder request link.
+---
+
+# SIDIX Task Card Skill
+
+Sebelum tool call / file edit / code execution di proyek SIDIX, agent WAJIB tulis Task Card. Tanpa Task Card = "asal eksekusi tanpa tau buat apa" = melanggar protocol bos.
+
+## Cara Pakai
+
+Saat user request fitur/perubahan/sprint, invoke `/sidix-task-card` atau langsung output Task Card sebelum tool call.
+
+## Format Wajib
+
+```
+═══════════════════════════════════════════════════════════
+TASK CARD: [nama task konkret, max 60 char]
+
+WHAT (1 kalimat konkret):
+[apa yang dibangun]
+
+WHY:
+- Visi mapping: [genius/creative/tumbuh/cognitive/iteratif/inovasi/pencipta]
+- Sprint context: [BACKLOG entry / sprint name]
+- Founder request: [link ke FOUNDER_IDEA_LOG entry]
+- Coverage shift: [VISI_TRANSLATION_MATRIX point yang akan naik %]
+
+ACCEPTANCE (verifiable, 1-3 criteria):
+1. [...]
+2. [...]
+3. [...]
+
+PLAN (3-7 step konkret):
+1. [step file/action specific]
+2. ...
+
+RISKS (1-3 dengan mitigation):
+- [risk] → mitigation: [...]
+═══════════════════════════════════════════════════════════
+```
+
+## Anti-Pattern Dilarang
+
+- ❌ Task Card tanpa visi mapping (drift dari Northstar)
+- ❌ ACCEPTANCE abstract ("kode lebih bagus") — must verifiable
+- ❌ PLAN dengan step generic ("edit beberapa file") — must spesifik
+- ❌ Eksekusi sebelum Task Card disetujui (kalau Task Card salah, fix dulu)
+
+## Reference
+
+Format lengkap di `docs/TASK_CARD_TEMPLATE.md`. Visi mapping di `docs/VISI_TRANSLATION_MATRIX.md`.
diff --git a/.claude/skills/sidix-update-log/SKILL.md b/.claude/skills/sidix-update-log/SKILL.md
new file mode 100644
index 00000000..b189e9fd
--- /dev/null
+++ b/.claude/skills/sidix-update-log/SKILL.md
@@ -0,0 +1,77 @@
+---
+name: sidix-update-log
+description: Append entry verbatim bos ke FOUNDER_IDEA_LOG.md atau update BACKLOG.md state. Pakai di akhir sesi atau saat bos kasih ide visi/intuisi baru. Anti-menguap permanent.
+---
+
+# SIDIX Update Log Skill
+
+Tiap kalimat bos yang berisi **visi / intuisi / teori / ide baru / koreksi penting** WAJIB dicatat di `docs/FOUNDER_IDEA_LOG.md`. Tanpa ini = ide menguap = bos repeat-jelaskan = pain.
+
+Tiap akhir sesi, BACKLOG WAJIB di-update dengan state sprint terkini.
+
+## Cara Pakai
+
+### Untuk capture ide bos:
+
+User pakai `/sidix-update-log [ringkasan bos's verbatim quote]` atau saya proactively detect bos kasih visi baru → langsung append.
+
+Format entry:
+
+```markdown
+---
+
+## [DATE] [time of day] — [Topic Singkat]
+
+### Bos verbatim:
+> "[verbatim quote bos, exact text]"
+
+### Translation:
+- [poin penting]
+- [poin penting]
+
+### BACKLOG entry / Sprint candidate / Implementation:
+- [link ke action konkret]
+
+### Status: ✅ CAPTURED + [next step]
+```
+
+### Untuk update BACKLOG:
+
+Saat sprint berubah status (baru COMPLETED / IN PROGRESS update / QUEUED tambah / DROPPED):
+
+Append/edit entry di `docs/SIDIX_BACKLOG.md` sesuai section (✅ COMPLETED / 🔄 IN PROGRESS / 📋 QUEUED / 💡 IDEAS / ❌ DROPPED).
+
+Format BACKLOG entry:
+
+```markdown
+### Sprint [Nama]
+- **Visi mapping**: [aspect]
+- **Date**: [tanggal]
+- **Deliverable**: [konkret]
+- **Acceptance**: [verifiable]
+- **Evidence**: [research note / commit / live URL]
+- **Commits**: [hash list]
+- **Status**: [LIVE/IN PROGRESS/etc]
+```
+
+## Anti-Pattern Dilarang
+
+- ❌ Skip catat ide bos verbatim → menguap
+- ❌ Generate dengan paraphrase saja (lose original voice)
+- ❌ Update BACKLOG tanpa visi mapping (drift)
+- ❌ Catat acknowledgment biasa ("ok", "lanjut") — skip yang ini
+
+## Pattern Trigger (Kapan Auto-Catat)
+
+Catat saat bos:
+- Kasih visi/tujuan besar
+- Kasih analogi/metafora ("jurus seribu bayangan", "Adobe-of-Indonesia")
+- Kasih koreksi/veto
+- Delegate authority
+- Express pain point (untuk root cause analysis)
+
+## Reference
+
+- `docs/FOUNDER_IDEA_LOG.md` (entry log)
+- `docs/SIDIX_BACKLOG.md` (sprint state)
+- `docs/AGENT_ONBOARDING.md` (universal protocol)
diff --git a/.embedded_git_backups/gallant-ellis-7cd14d_20260430213106.git b/.embedded_git_backups/gallant-ellis-7cd14d_20260430213106.git
new file mode 100644
index 00000000..a42d9373
--- /dev/null
+++ b/.embedded_git_backups/gallant-ellis-7cd14d_20260430213106.git
@@ -0,0 +1 @@
+gitdir: C:/SIDIX-AI/.git/worktrees/gallant-ellis-7cd14d
diff --git a/.env.sample b/.env.sample
index 72c801fa..e69ba21c 100644
--- a/.env.sample
+++ b/.env.sample
@@ -18,6 +18,14 @@ SIDIX_VPS_PASS=
DOMAIN=sidixlab.com
VITE_BRAIN_QA_URL=https://sidixlab.com/api
+# ------------------------------------------------------------
+# RunPod GPU Workers (Image Gen, 3D, TTS, Design)
+# Daftar: https://www.runpod.io/console/settings/api-keys
+# ------------------------------------------------------------
+RUNPOD_API_KEY=
+RUNPOD_MEDIA_ENDPOINT_ID=
+RUNPOD_3D_ENDPOINT_ID=
+
# ------------------------------------------------------------
# SIDIX Inference Engine
# ------------------------------------------------------------
@@ -78,6 +86,48 @@ GEMINI_API_KEY=
# Anthropic — opsional (Haiku default, Sonnet untuk sponsored)
# ANTHROPIC_API_KEY sudah di-load dari env VPS
+# ------------------------------------------------------------
+# Google Drive Dataset Collection (Multi-Account)
+# Setup: https://console.cloud.google.com/ → APIs & Services → Credentials
+# Atau pakai OAuth Playground (lebih cepat):
+# 1. Buka https://developers.google.com/oauthplayground
+# 2. Step 1: Scope = https://www.googleapis.com/auth/drive.readonly
+# 3. Klik Authorize APIs → login Google → consent
+# 4. Step 2: Exchange code → copy refresh_token (tidak expired)
+# 5. Step 3: Test API (optional)
+# Helper script: python scripts/exchange_drive_tokens.py --help
+# ------------------------------------------------------------
+GOOGLE_DRIVE_CLIENT_ID=
+GOOGLE_DRIVE_CLIENT_SECRET=
+
+# Default account
+GOOGLE_DRIVE_ACCESS_TOKEN=
+GOOGLE_DRIVE_REFRESH_TOKEN=
+
+# Per-account tokens (fahmiwol, tiranyx, operationalnyx, nirmananyx)
+# Isi REFRESH_TOKEN (tidak expired). ACCESS_TOKEN di-refresh otomatis.
+GOOGLE_DRIVE_ACCESS_TOKEN_FAHMIWOL=
+GOOGLE_DRIVE_REFRESH_TOKEN_FAHMIWOL=
+GOOGLE_DRIVE_ACCESS_TOKEN_TIRANYX=
+GOOGLE_DRIVE_REFRESH_TOKEN_TIRANYX=
+GOOGLE_DRIVE_ACCESS_TOKEN_OPERATIONALNYX=
+GOOGLE_DRIVE_REFRESH_TOKEN_OPERATIONALNYX=
+GOOGLE_DRIVE_ACCESS_TOKEN_NIRMANANYX=
+GOOGLE_DRIVE_REFRESH_TOKEN_NIRMANANYX=
+
+# ------------------------------------------------------------
+# ElevenLabs Guru Trainer Voice
+# Daftar: https://elevenlabs.io/app/settings/api-keys
+# ------------------------------------------------------------
+ELEVENLABS_API_KEY=
+
+# ------------------------------------------------------------
+# Unsplash / Pexels (Legal Image Dataset)
+# Daftar: https://unsplash.com/developers, https://www.pexels.com/api/
+# ------------------------------------------------------------
+UNSPLASH_ACCESS_KEY=
+PEXELS_API_KEY=
+
# ------------------------------------------------------------
# CI/Testing
# ------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 7138e857..e20b3b45 100644
--- a/.gitignore
+++ b/.gitignore
@@ -95,3 +95,24 @@ docs/SIDIX_CHECKPOINT_*.md
# ── VPS scripts (contain credentials via env var, internal use only) ─────────
scripts/vps_*.py
scripts/vps_check.py
+
+# ── Local VPS operational scripts (root dir, internal only) ──────────────────
+_check_*.py
+_deploy_vps.py
+_test_chat_vps.py
+
+# ── Local artifacts / screenshots / temp extracts ────────────────────────────
+*.b64
+holistic_test_*.png
+sidix_*.png
+sidix_*.yml
+sidix_homepage_*.png
+Bio_Cognitive_extracted.txt
+SIDIX_Architecture_extracted.txt
+check_halo.sh
+gemini_tool_combination.yml
+patch_multi_source.py
+patch_websearch.py
+test_websearch.py
+.playwright-mcp/
+apps/brain_qa/brain/
diff --git a/CLAUDE.md b/CLAUDE.md
index 21ed3dd0..7821a495 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -4,6 +4,54 @@ Proyek: **SIDIX / Mighan Model**
---
+## 🔴 SESSION START PROTOCOL — WAJIB EKSEKUSI SETIAP SESI BARU (LOCK 2026-04-30)
+
+**Bos pain (verbatim, 2026-04-30 evening)**: *"kenapa kita mengulang-ngulang terus? kenaps aya harus selalu menjelaskna... saya hanya seorang pemimpi yang paham dasar, dan cuma punya visi dan intuisi... framework yang saya jelaskan setiap hari selalu ilang dan menguap... kalo nggak disuruh baca, nggak akan ngerti, main eksekusi secara sporadis, tanpa tau lagi bikin apa"*.
+
+**Bos message ke semua agent (Claude/GPT/Gemini/SIDIX self-bootstrap)**: *"kamu pastikan dengan agent manapun saya bekerja, mereka tau sedang membangun apa, sedang ngerjain apa, bukan asal tulis asal eksekusi tanpa tau buat apa"*.
+
+Root cause: Agent tidak punya memory persistent across sessions. Tanpa protocol read state dulu, agent re-invent yang sudah dibahas → bos frustasi.
+
+**🚨 PRIMARY ENTRY POINT untuk SEMUA agent**: [`docs/AGENT_ONBOARDING.md`](docs/AGENT_ONBOARDING.md) — wajib baca pertama, bukan Claude-specific.
+
+**SEBELUM jawab pertanyaan/eksekusi apapun di sesi baru, BACA URUT**:
+
+1. **[`docs/AGENT_ONBOARDING.md`](docs/AGENT_ONBOARDING.md)** — universal agent protocol
+2. **[`docs/SIDIX_BACKLOG.md`](docs/SIDIX_BACKLOG.md)** — state sprint (COMPLETED/IN PROGRESS/QUEUED/IDEAS)
+3. **[`docs/VISI_TRANSLATION_MATRIX.md`](docs/VISI_TRANSLATION_MATRIX.md)** — visi bos × deliverable, coverage %
+4. **[`docs/FOUNDER_IDEA_LOG.md`](docs/FOUNDER_IDEA_LOG.md)** — ide visi/intuisi bos verbatim (5 entries minimum)
+5. **[`docs/SIDIX_FRAMEWORKS.md`](docs/SIDIX_FRAMEWORKS.md)** — semua framework bos (jurus seribu bayangan, sanad, 5 persona, dll)
+6. **[`docs/SIDIX_SELF_BOOTSTRAP_ROADMAP.md`](docs/SIDIX_SELF_BOOTSTRAP_ROADMAP.md)** — visi tertinggi: SIDIX replace agent eksternal
+7. **[`docs/TASK_CARD_TEMPLATE.md`](docs/TASK_CARD_TEMPLATE.md)** — format wajib sebelum eksekusi
+8. **`docs/FOUNDER_JOURNAL.md` last 200 lines** — keputusan recent
+9. **`tail -100 docs/LIVING_LOG.md`** — ops recent
+
+**Sebelum eksekusi APAPUN (edit code, panggil tool, write file)**: tulis **TASK CARD** dulu (format `docs/TASK_CARD_TEMPLATE.md`). Tanpa Task Card = "asal eksekusi tanpa tau buat apa" = melanggar protocol.
+
+**Lalu output ke bos di awal jawaban**:
+> "Sudah baca state. Backlog: [X completed, Y in-progress, Z queued]. Visi gap utama: [...]. WIP yang belum kelar: [...]. Pertanyaan bos sekarang: [paraphrase]. Mapping: [backlog item / new idea]. Saya akan: [action]."
+
+**Setiap sesi tutup, WAJIB**:
+- Update `SIDIX_BACKLOG.md` dengan status sprint
+- Update `VISI_TRANSLATION_MATRIX.md` kalau ada coverage shift
+- Append `FOUNDER_IDEA_LOG.md` kalau bos kasih ide baru visi/intuisi
+- Append `FOUNDER_JOURNAL.md` keputusan signifikan
+- Commit + push
+
+**Anti-pattern WAJIB DIHINDARI**:
+- ❌ Jawab tanpa baca BACKLOG → repeat diskusi yang sudah ada
+- ❌ Tanya bos detail teknis (saya yang ambil otoritas, bos veto kalau salah)
+- ❌ Skip update BACKLOG di akhir sesi → state hilang sesi berikut
+- ❌ Generate research note tanpa update VISI_TRANSLATION_MATRIX
+- ❌ Bilang "DONE" padahal acceptance criteria belum verify
+- ❌ Pakai naming inkonsisten dengan vocabulary yang sudah lock
+
+**Engineering authority**: bos eksplisit delegate. Saya decide teknis (synthesizer architecture, sequence sprint, definition of done detail). Bos sign off pada VISI end-state, bukan teknis. Bos veto kalau hasil ngaco.
+
+Detail diagnose + 7 root causes + 5 reform commitment di [research note 306](brain/public/research_notes/306_meta_process_reform_anti_menguap_20260430.md).
+
+---
+
## 🔒 DEFINITION + DIRECTION LOCK 2026-04-26 (BACA PERTAMA — IMMUTABLE)
User directive eksplisit: *"gaaaaaaasssssssssssss!!!! catat!! jangan berubah-ubah lagi arah sidix"* + *"tulis dengan besar supaya nggak berubah lagi. cataaaattt!!! aligment semuanya"*
diff --git a/OUTREACH_TARGETS.md b/OUTREACH_TARGETS.md
new file mode 100644
index 00000000..42a51c4b
--- /dev/null
+++ b/OUTREACH_TARGETS.md
@@ -0,0 +1,170 @@
+# Outreach Targets — Targeted Personal (BUKAN Spam)
+
+**Prinsip**: 20 orang spesifik > 10,000 orang random. Quality > quantity. Reply 5-10% authentic = 1-2 real ally per 20 outreach. Compound forever.
+
+**Anti-pattern dilarang**:
+- ❌ Mass DM template — spam, brand rusak
+- ❌ Cold email tanpa context — diabaikan/blacklist
+- ❌ Mention orang yang tidak relevan dengan SIDIX — disrespect
+- ❌ Pretend partnership yang tidak ada — manipulatif
+
+**Pattern yang benar**:
+- ✅ Per-orang custom message (reference latar belakang spesifik mereka)
+- ✅ Genuine ask: feedback, kolaborasi, atau hanya "saya bangun ini di Indonesia, mungkin relevant untuk pekerjaan Anda"
+- ✅ Tidak push hard sell — just share + invite
+- ✅ Respect their time (max 150 kata per email)
+
+---
+
+## Tier 1: AI Researchers / Builders Indonesia & SEA (~10 orang)
+
+Cari di:
+- Twitter/X dengan search: `AI engineer indonesia`, `LLM bahasa indonesia`, `qwen indonesia`
+- Google Scholar dengan keyword: `large language model indonesian`, `LLM bahasa`
+- LinkedIn: filter "AI Engineer" + location "Indonesia"
+- HuggingFace: search "indonesia" untuk model authors
+- GitHub: trending dengan keyword AI di Indonesia
+
+**Bos cari + isi list ini sendiri**. Saya tidak bisa scrape internet untuk bos. Bos kenal komunitas lokal lebih dari saya.
+
+Format kartu per-orang:
+```
+- Nama: [...]
+- Role: [...]
+- Mengapa relevan untuk SIDIX: [reference paper/project mereka]
+- Channel kontak: [Twitter / LinkedIn / Email]
+- Custom hook: [1 kalimat yang reference karya mereka]
+```
+
+---
+
+## Tier 2: Tech Journalists yang Cover Global South / Open Source AI (~5 orang)
+
+Cari:
+- TechCrunch SEA (Catherine Shu, Rita Liao)
+- e27.co reporters (Indonesia tech)
+- DailySocial.id editor
+- The Information / Rest of World writer
+- AI newsletters: Ben's Bites, The Rundown, Import AI
+
+Kontak via:
+- Twitter DM
+- Email tip line (tcc tips@techcrunch.com, dll)
+- LinkedIn
+
+Pitch hook: "Open-source AI agent solo founder Indonesia, modal terbatas, 2 bulan, distinctive pattern (anti-menguap)". Itu story angle yang under-reported.
+
+---
+
+## Tier 3: Investors / Programs untuk Global South AI Open Source (~5 orang)
+
+Bukan untuk pitch raise dana. Tapi untuk **awareness + networking**:
+
+- Anthropic Startup Program (jika ada SEA)
+- Hugging Face Fellows program (open source AI)
+- Mozilla Foundation AI grants
+- a16z American Dynamism (open source angle)
+- AI Grant (Nat Friedman / Daniel Gross)
+- East Ventures Indonesia (lokal)
+
+Email pitch: 1 paragraph what + 1 paragraph why now + 1 paragraph what could collaborate look like.
+
+---
+
+## Tier 4: Komunitas Indonesia yang Aktif (~3-5 grup)
+
+Bukan target individu, tapi komunitas yang bos sudah/bisa join sebagai member kontributor:
+
+- Indonesia AI / Machine Learning Discord/Telegram
+- Hipster JKT (developer community)
+- Bandung Digital Valley
+- Surabaya Tech community
+- Komunitas peneliti AI ITB/UI/UGM
+
+Pattern: bos masuk sebagai member, kontribusi diskusi (jawab pertanyaan orang), share project saat ditanya. **Bukan blast post**. Long-term reputation.
+
+---
+
+## Email Template Authentic (untuk Adapt Per-Orang)
+
+```
+Subject: [Spesifik, tidak generic] — solo founder open-source AI dari Indonesia
+
+Hi [Nama],
+
+Saya Fahmi Ghani, solo founder dari Indonesia. Saya nemu paper/post Anda
+tentang [SPESIFIK karya mereka] — [1 kalimat reaksi otentik].
+
+2 bulan terakhir saya bangun SIDIX (github.com/fahmiwol/sidix) — open-source
+AI agent self-hosted untuk pengguna yang tidak bisa bayar Claude/ChatGPT
+$20/bulan. Built dengan Claude Code partnership, Qwen2.5+LoRA stack.
+
+Yang menarik mungkin untuk Anda: [1 kalimat alasan SPESIFIK kenapa relevan
+untuk pekerjaan mereka, mis. "pattern multi-source orchestrator yang Anda
+bahas di paper X, kami implementasi di /agent/chat_holistic"].
+
+Tidak ada hard ask. Hanya share — kalau Anda baca dan menarik, saya akan
+sangat appreciate feedback. Atau ignore juga oke.
+
+Repo: github.com/fahmiwol/sidix
+LIVE: app.sidixlab.com
+Manifesto: github.com/fahmiwol/sidix/blob/main/MANIFESTO.md
+
+Terima kasih sudah baca.
+
+Salam dari Bogor,
+Fahmi
+```
+
+**Aturan**: bos GANTI bracket dengan yang authentic. Kalau bos ga kenal karya orang itu = jangan kontak. Better 5 personal outreach yang real daripada 50 generic.
+
+---
+
+## Apa yang TIDAK Boleh Dilakukan
+
+❌ **Auto-DM tools** seperti scraper LinkedIn / Twitter outreach automation. Itu spam, langgar ToS platform, ban risk.
+
+❌ **Email blast list** yang dibeli atau di-scrape. Ilegal di banyak yurisdiksi + reputasi rusak.
+
+❌ **Forum spam** seperti post identical content di 20 subreddit. Bos akan di-shadowban semua subreddit.
+
+❌ **Tag random people** di Twitter dengan link SIDIX. Itu disrespect attention orang.
+
+❌ **AI-generated bulk emails** yang reads as AI spam. Person knows in 2 sentences.
+
+---
+
+## Timeline Realistic
+
+**Minggu 1 post limit reset**:
+- Bos isi Tier 1 list (5-10 orang)
+- Saya bantu craft 5 email custom
+- Bos kirim Senin-Rabu (timing best)
+
+**Minggu 2-3**:
+- Reply masuk (kalau ada) — bos respond
+- Lanjut Tier 2 (journalist), Tier 3 (programs)
+
+**Bulan 2**:
+- Bos joined 1-2 komunitas Indonesia
+- Mulai aktif kontribusi diskusi
+
+**Bulan 3+**:
+- Show HN submission
+- Twitter thread
+- Demo video YouTube
+- arXiv preprint (kalau Anti-Menguap Protocol cukup mature)
+
+Compound. **Tidak instant. Tapi real.**
+
+---
+
+## Pesan Terakhir
+
+Linus tahun 1991 post pertama Linux di newsgroup minix — 3 baris. Bukan spam. Bukan blast. Authentic. Hari pertama: 0 reply. Hari ke-30: 10 contributor. Hari ke-365: 100. Hari ke-3650: ribuan.
+
+Pattern yang sama untuk SIDIX. **Modal terbatas + persistence + targeted authentic outreach > VC-funded growth hacking spam**.
+
+Bos sudah di track yang benar. Foundation kokoh. Artifacts compelling. Sekarang tinggal **disciplined personal outreach**, bukan blast.
+
+Saya bantu bos craft setiap email. Bukan saya yang kirim — bos yang kontrol channel + timing + recipient. Itu yang real.
diff --git a/README.md b/README.md
index 39722218..588b6b38 100644
--- a/README.md
+++ b/README.md
@@ -25,6 +25,36 @@
|
+ 📜 MANIFESTO + Why this exists + AI for the Underdogs. + |
+
+ 📖 STORY + Solo founder journey from Indonesia + 2 months. 0 team. 0 VC. 309 research notes. + |
+
+ 🛡️ ANTI-MENGUAP PROTOCOL + Universal pattern for AI agent context persistence + Free to adopt. Cite optional. + |
+
+ 🌐 Try SIDIX LIVE · + 🤖 For AI Agents · + 📢 Help Amplify +
+ +diff --git a/SIDIX_LANDING/index.html b/SIDIX_LANDING/index.html index dbf1ff4f..96353c53 100644 --- a/SIDIX_LANDING/index.html +++ b/SIDIX_LANDING/index.html @@ -145,6 +145,11 @@ } + + + @@ -1078,21 +1083,25 @@
SIDIX adalah proyek open source. Dukungan kamu membantu menanggung biaya server dan pengembangan.
- - + + + + + + + + Buy me a coffee on Ko-fi + + + +Semua donasi langsung dipakai untuk biaya VPS, GPU training, dan menjaga SIDIX tetap gratis untuk semua orang. 🙏
diff --git a/SIDIX_NEXT_UI/README.md b/SIDIX_NEXT_UI/README.md new file mode 100644 index 00000000..8a1abb96 --- /dev/null +++ b/SIDIX_NEXT_UI/README.md @@ -0,0 +1,89 @@ +# SIDIX_NEXT_UI + +Next.js (App Router) frontend untuk SIDIX — replacement gradual dari `SIDIX_USER_UI` (vanilla TS+Vite). + +**Status: 2026-04-30 — Initial scaffold + 3 components ported.** + +## Lock Decisions (per FOUNDER_JOURNAL 2026-04-30) + +- Framework: **Next.js 15 App Router** + TypeScript + Tailwind v3 + lucide-react + framer-motion +- Source scaffolding: `C:\Users\ASUS\Downloads\Kimi_Agent_Sidix AI Agent Selesai\UI Baru SIDIX\app\` +- Brand: Space Grotesk + neon palette (#7C5CFF #00D2FF #FF6EC7 #0B0F2A #FFFFFF) +- Backend: `ctrl.sidixlab.com:8765` (FastAPI brain_qa) — **TIDAK BERUBAH** +- **NO MOCK DATA**: hapus "Halo Ayudia / Pro Plan / 1,250 Credits / Healthy Drink Campaign / Aktivitas dummy" — wire ke fitur SIDIX real + +## Struktur + +``` +SIDIX_NEXT_UI/ +├── app/ +│ ├── globals.css # Space Grotesk import + brand CSS vars +│ ├── layout.tsx # Root layout (font-grotesk + bg) +│ └── page.tsx # Home: 3-column LeftSidebar/ChatDashboard/RightPanel +├── components/ +│ ├── LeftSidebar.tsx # Navigation (Chat/Agent/Tools/Projects/Knowledge/Integrations/History) +│ ├── ChatDashboard.tsx # Real chat dengan persona selector + quick actions + loading state +│ └── RightPanel.tsx # Built-in Tools panel + status (placeholder, real wire post-reset) +├── lib/ +│ ├── sidix-client.ts # API wrapper: chat() + health() + streamGenerate() +│ └── cn.ts # clsx + tailwind-merge +├── package.json +├── next.config.mjs # Rewrite /api/brain/* -> ctrl.sidixlab.com +├── tailwind.config.ts # SIDIX brand tokens +├── postcss.config.mjs +└── tsconfig.json +``` + +## Yang Sudah Ada (Hari ini) + +✅ Next.js scaffolding minimal (manual, tanpa `create-next-app` untuk hemat token) +✅ Tailwind brand tokens (`sidix-purple/cyan/pink/dark/surface`) +✅ Layout 3-column responsive (sidebar 250px / chat flex / right 320px hidden lg) +✅ ChatDashboard wired ke `POST /agent/chat` REAL (bukan mock) +✅ Persona selector (5 SIDIX persona LOCKED) +✅ Loading state dengan timer transparan ("SIDIX sedang berpikir... 12s") +✅ Error state graceful (message + saran cek /health) +✅ Quick actions sebagai prompt starter + +## Yang Belum (Post Limit Reset) + +⏳ ParticleBackground component (Three.js / canvas) — defer, optional polish +⏳ Real wire RightPanel ke tools registry endpoint +⏳ Streaming SSE wrapper untuk `/agent/chat` (sekarang stream cuma di `/agent/generate/stream` raw) +⏳ Auth (Supabase) — replace static greeting dengan user real +⏳ Quota display real dari `/quota/status` +⏳ Mobile responsive polish (sidebar collapse, bottom nav) +⏳ Mascot Option B (image bos + SDXL state variants) +⏳ Deploy: PM2 reconfig `sidix-ui` ganti `serve dist` → `next start -p 4000` +⏳ Test e2e: install deps + npm run build + npm run start + +## Run Locally (saat dev) + +```bash +cd SIDIX_NEXT_UI +npm install +# (set NEXT_PUBLIC_BRAIN_QA_URL kalau mau backend lain) +npm run dev +# Browse: http://localhost:4000 +``` + +## Deploy ke VPS (Future) + +```bash +# Di VPS: +cd /opt/sidix +git pull +cd SIDIX_NEXT_UI +npm install --omit=dev +npm run build + +# Update PM2: +pm2 stop sidix-ui # stop yang lama (serve dist dari SIDIX_USER_UI) +pm2 delete sidix-ui +pm2 start npm --name "sidix-next-ui" -- run start +pm2 save + +# Nginx tetap proxy_pass ke localhost:4000 +``` + +Atau parallel deploy dulu di subdomain `next.sidixlab.com` sebelum cutover dari `app.sidixlab.com` lama. diff --git a/SIDIX_NEXT_UI/app/globals.css b/SIDIX_NEXT_UI/app/globals.css new file mode 100644 index 00000000..4fad8511 --- /dev/null +++ b/SIDIX_NEXT_UI/app/globals.css @@ -0,0 +1,132 @@ +@import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap"); + +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + /* SIDIX Brand Colors (Kimi scaffolding parity) */ + --indigo: #6C5CFF; + --cyan: #00D2FF; + --amber: #FFB34D; + --pink: #FF6EC7; + --green: #22C55E; + --deep-navy: #080F1A; + --dark-blue: #151A2E; + --surface: #1E2340; + --card: #2A2F4F; + --text-primary: #E6E9F7; + --text-secondary: #8B92B4; + --text-muted: #5A6080; + --border-subtle: rgba(255, 255, 255, 0.06); + --border-active: rgba(108, 92, 255, 0.35); + } + + * { + box-sizing: border-box; + } + + body { + font-family: "Space Grotesk", system-ui, sans-serif; + background: var(--deep-navy); + color: var(--text-primary); + overflow: hidden; + -webkit-font-smoothing: antialiased; + } +} + +@layer utilities { + .scrollbar-thin { + scrollbar-width: thin; + scrollbar-color: rgba(255, 255, 255, 0.08) transparent; + } + .scrollbar-thin::-webkit-scrollbar { width: 5px; } + .scrollbar-thin::-webkit-scrollbar-track { background: transparent; } + .scrollbar-thin::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.08); border-radius: 10px; } + .scrollbar-thin::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.15); } +} + +/* Animations */ +@keyframes rotate { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } +@keyframes slideUp { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } } +@keyframes progressFill { from { width: 0%; } } +@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-6px); } } +@keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 8px rgba(108, 92, 255, 0.2); } 50% { box-shadow: 0 0 16px rgba(108, 92, 255, 0.4); } } + +.animate-progress-fill { animation: progressFill 0.8s ease-out forwards; } +.animate-float { animation: float 3s ease-in-out infinite; } +.animate-pulse-glow { animation: pulse-glow 2s ease-in-out infinite; } + +/* PRO Card Shimmer (SIDIX PRO promo) */ +.pro-card-shimmer { + position: relative; + overflow: hidden; +} +.pro-card-shimmer::before { + content: ""; + position: absolute; + top: -50%; + left: -50%; + width: 200%; + height: 200%; + background: conic-gradient( + from 0deg, + transparent 0%, + rgba(99, 102, 241, 0.6) 15%, + rgba(139, 92, 246, 0.6) 30%, + rgba(236, 72, 153, 0.6) 45%, + transparent 60% + ); + animation: rotate 3s linear infinite; +} +.pro-card-shimmer::after { + content: ""; + position: absolute; + inset: 2px; + background: linear-gradient(135deg, #6366F1 0%, #8B5CF6 50%, #EC4899 100%); + border-radius: 22px; +} + +/* Surfaces */ +.input-surface { + background: var(--surface); + border: 1px solid var(--border-subtle); + border-radius: 16px; + transition: all 0.2s ease; +} +.input-surface:focus-within { + border-color: var(--border-active); + box-shadow: 0 0 0 3px rgba(108, 92, 255, 0.1); +} + +/* Chip */ +.chip { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 8px 16px; + border-radius: 100px; + font-size: 13px; + font-weight: 500; + transition: all 0.2s ease; +} +.chip-default { + background: var(--card); + border: 1px solid var(--border-subtle); + color: var(--text-secondary); +} +.chip-default:hover { + border-color: var(--border-active); + color: var(--text-primary); +} + +/* Mascot placeholder (until SDXL render available) */ +.mascot-placeholder { + width: 100%; + height: 100%; + background: radial-gradient(circle at 50% 40%, #7C5CFF 0%, #00D2FF 40%, transparent 70%); + border-radius: 50%; + filter: drop-shadow(0 12px 24px rgba(0, 0, 0, 0.35)); + position: relative; +} diff --git a/SIDIX_NEXT_UI/app/layout.tsx b/SIDIX_NEXT_UI/app/layout.tsx new file mode 100644 index 00000000..effe6c30 --- /dev/null +++ b/SIDIX_NEXT_UI/app/layout.tsx @@ -0,0 +1,20 @@ +import type { Metadata } from "next"; +import "./globals.css"; + +export const metadata: Metadata = { + title: "SIDIX — Creative AI Agent", + description: + "Self-hosted, free, open-source Creative AI Agent. Tumbuh setiap hari, bukan chatbot biasa.", + applicationName: "SIDIX", + authors: [{ name: "Mighan Lab / Tiranyx" }], +}; + +export default function RootLayout({ + children, +}: Readonly<{ children: React.ReactNode }>) { + return ( + + {children} + + ); +} diff --git a/SIDIX_NEXT_UI/app/page.tsx b/SIDIX_NEXT_UI/app/page.tsx new file mode 100644 index 00000000..7bbb7a21 --- /dev/null +++ b/SIDIX_NEXT_UI/app/page.tsx @@ -0,0 +1,15 @@ +import LeftSidebar from "@/components/LeftSidebar"; +import ChatDashboard from "@/components/ChatDashboard"; +import RightPanel from "@/components/RightPanel"; + +export default function HomePage() { + return ( ++ Aku Sidix, Creative AI Agent-mu dari Bogor 🌿 +
++ Siap bantu wujudkan ide kerenmu jadi nyata! +
+Ide brilian
+dimulai dari
++ obrolan seru! ✨ +
++ Bantu aku bikin ide campaign produk minuman sehat untuk anak muda, konsepnya fun & kekinian! +
++ Siap! Ini beberapa ide campaign yang fun & kekinian untuk minuman sehat: +
++ {card.title} +
++ {card.description} +
++ Mau aku bantu buatkan konsep visual atau copywriting-nya juga? 😎 +
+ ++ {m.content} +
+{m.content}
++ {m.content} +
+Generate brand kit + konten + campaign dalam 1 klik
+—
+—
+Relevance
+—
+Quality
+—
+Creativity
+—
+Brand
+—
+Actionability
+—
+Total
+—
+