소스 정보
- 저장소
- AzureFoxStudios/wabi
- 최근 소스 활동
- 2026년 8월 28일 15:43
- 감지된 SKILL.md 언어
- 영어
- 스타
- 4
- 포크
- 2
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/AzureFoxStudios/wabi --skill wabi-privacy명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Implementation pattern for Wabi channel categories: adding ChannelKind::Category, position/parentId support, and type updates.
Wabi production deployment and runtime debugging. Covers the Rust wabi-server binary (rust_embed static frontend), the SvelteKit build-mode mismatch (adapter-static SPA vs adapter-node SSR and why the Rust server needs index.html), Cloudflare/caddy/cloudflared tunnel WebSockets, WabiDB data-dir locks, and the selfhostability check. Use when a Wabi deploy will not boot, the login page is blank or stuck on "Starting Wabi"/"Work Offline", socket.io WS fails through Cloudflare, wabi-server restart-loops with "engine already running", or the user asks whether Wabi is still selfhostable or hardwired to wabi.chat.
Verify a Wabi binary before swap: addons, probes, locks.
SKILL.md 표시 중
| name | wabi-privacy |
| description | Audit Wabi data privacy, deletion semantics, and retention. |
| version | 1.0.0 |
| author | Hermes Agent |
| license | MIT |
| platforms | ["linux","macos"] |
| metadata | {"hermes":{"tags":["wabi","privacy","retention","audit","gdpr","ephemeral","data-deletion"],"related_skills":["wabidb-troubleshooting","wabi-deploy"]}} |
Audit and harden Wabi's data privacy posture. Covers what the server stores, what gets logged, how deletion actually works, and the gap between WabiDB's designed retention system and what's actually wired up.
| Location | Content | Size on Tim |
|---|---|---|
data/wabi-server/wabidb/ | All persistent state — messages, channels, DMs, users, presence, projections | ~200M |
data/wabi-server/wabidb/commit-log/ | Append-only event log (WabiDB source of truth) | Included above |
data/wabi-server/wabidb/snapshots/ | Periodic materialized snapshots of projections | Included above |
data/uploads/ | User-uploaded files (images, media) | Varies |
data/.plugin-storage/ | Plugin crash logs (usually empty) | negligible |
data/launch-page.json | Custom login page branding | 1 file |
data/blacklist.txt | Banned user IDs | 1 file |
data/revocations.json | Revoked JWT user IDs | 1 file |
| Docker container logs | Server runtime logs (info/warn/error tracing) | auto-rotated |
core/crates/wabi-server/src/socket.rs:67 logs every incoming socket message at INFO level:
tracing::info!("Received socket message: {}", text);
This means chat messages, DMs, typing indicators, and presence events are written verbatim to the server log file. The log is a plaintext copy of everything users send.
Fix (shipped): Downgrade to DEBUG so message content doesn't appear in default info-level logs.
Remaining concern: RUST_LOG=wabi_server=info or higher still captures message content. Operators should set RUST_LOG=wabi_server=warn or rely on the default (which excludes DEBUG).
Wabi now ships with daily log rotation and retention pruning:
./logs/wabi-server.log (configurable via WABI_LOG_DIR)tracing-subscriber rolling file appenderWABI_LOG_RETENTION_DAYS (default: 7)core/crates/wabi-server/src/adapter/mod.rs:907 — delete_message():
m.is_deleted = true;
m.edited_at_micros = Some(now_micros());
// emits "message_deleted" event
This is a soft delete. The message content stays in the commit log forever, just marked is_deleted = true. The projection (materialized view) hides it from queries, but the event log still contains the original message_created event with full content.
main.rs:694-736)delete_message() — same soft delete"Wabi is self-hosted. All data lives on my server, not a third party's. There's no telemetry, no analytics, no cloud exfiltration. Voice and video are real-time only — never recorded. Message deletion hides content from the UI; the server's internal event log retains a technical record until log rotation. I don't sell, share, or report that data to anyone."
Do NOT claim "I don't record shit" — the commit log stores every message. Do NOT claim "deleted messages are gone" — they're soft-deleted, content still in log.
The core/crates/wabidb/src/retention/ module is a complete design that exists on paper but is completely disconnected from the running server:
| Module | Purpose | Wired up? |
|---|---|---|
retention/reaper.rs | Streams that hit retention deadline | ❌ No |
retention/compaction.rs | Rewrite segment files, drop tombstones | ❌ No |
retention/key_destruction.rs | Crypto-shredding (destroy keys = data unreadable) | ❌ No |
retention/tombstone.rs | Tombstone table for dead streams | ❌ No |
main.rs:694-736 (actual active code) | Per-channel retention, soft delete only | ✅ Yes |
Retention deadline → reaper → key destruction → crypto-shred (unreadable)
↓
compaction → rewrite segments (gone from disk)
User clicks delete → adapter/mod.rs:907 → m.is_deleted = true → emits "message_deleted"
↑
Original content STAYS in commit log
retention/compaction.rs implements segment-level compaction:
commit_seq is in the tombstone setretention/key_destruction.rs implements crypto-shredding:
StreamKeyRegistryTo honestly claim "data gets erased when it's supposed to," wire up one of:
Wire the retention reaper to:
destroy_stream_keys() on retention deadline (crypto-shred)TombstoneTablecompact_segment() on segments with high tombstone ratioThis gives you:
After deploying privacy fixes, verify:
socket.rs message logging is DEBUG (not INFO)WABI_LOG_RETENTION_DAYS is set (default 7)grep -r "Received socket message" logs/ returns nothingwabidb-troubleshooting — WabiChat deployment and runtime issueswabi-deploy — Deploy wabi-server to Tim or other hostswabidb-core-capabilities — WabiDB engine reference