diff --git a/MVP.md b/MVP.md new file mode 100644 index 000000000..7ad2cad3f --- /dev/null +++ b/MVP.md @@ -0,0 +1,454 @@ + +--- + +```md +# Cross-Platform Tauri Agent Assistant — MVP Specification + +## Overview + +This MVP defines a **Telegram-based Agent Assistant** built with **Tauri (Rust + Web UI)** targeting: + +- Windows +- macOS +- Android +- iOS + +The assistant: +- Interacts with users via a **Telegram bot (DM-first)** +- Processes Telegram channel data **locally on device** +- Uses a **minimal backend** only for: + - identity & login + - payments & entitlements + - push notifications (especially for iOS) +- Avoids storing Telegram message content on servers + +--- + +## Core Platform Behavior Summary + +| Platform | Listening Model | Trigger to Respond | +|--------|-----------------|-------------------| +| Windows | Continuous (background) | Bot DM or channel activity | +| macOS | Continuous (background) | Bot DM or channel activity | +| Android | Continuous (foreground service) | Bot DM or channel activity | +| iOS | On-demand only | Bot DM → push → tap → sync | + +--- + +## Architectural Pillars + +- **UI-first development** +- **Single Rust agent runtime** +- **Telegram bot as the user interface** +- **Privacy-first local processing** +- **Backend as infrastructure, not intelligence** + +--- + +# PHASED MVP PLAN + +--- + +## Phase 0 — Project Skeleton & Tooling + +### Goals +- Prepare repo structure +- Establish documentation and contribution rules +- No business logic yet + +### Deliverables +- Monorepo structure +- Tauri project scaffold +- Mobile targets enabled (Tauri v2) +- CI hooks (optional) + +### Repo Structure +``` + +/apps +/desktop +/mobile +/core +/agent-runtime (Rust) +/storage +/telegram +/backend +/docs + +```` + +### Documentation Commands (Required) +```bash +/docs/architecture.md # high-level system design +/docs/decisions/ADR-000.md # initial architecture decision record +```` + +### Exit Criteria + +* App builds and runs (blank UI) +* Docs folder initialized +* ADR process agreed upon + +--- + +## Phase 1 — UI-First MVP (No Logic) + +### Goals + +Build the **entire UI flow** before implementing logic. + +### UI Screens + +* Login / Signup +* Telegram Connect (bot instructions) +* Channel Selection +* Sync Status Screen +* Settings (background, privacy, storage) +* Plan & Billing (stub) +* Logs / Activity View (local only) + +### Platforms + +* All platforms (desktop + mobile) + +### Deliverables + +* Responsive UI +* Navigation between screens +* Mock data only +* No Telegram, no backend, no Rust logic + +### Documentation Commands + +```bash +/docs/ui/flows.md # user flows +/docs/ui/screens.md # screen definitions +/docs/ui/states.md # loading / error / empty states +``` + +### Exit Criteria + +* Entire app is navigable +* No dead-end screens +* UI approved before logic begins + +--- + +## Phase 2 — Local Agent Runtime (Rust Only) + +### Goals + +Implement the **local agent engine** without Telegram or backend. + +### Components + +* Rust agent runtime +* Intent router (question / sync / config) +* Processing pipeline (stubbed) +* Response composer (mock responses) + +### Deliverables + +* Tauri IPC commands: + + * `agent_init` + * `agent_process_query` + * `agent_status` +* In-memory only state + +### Documentation Commands + +```bash +/docs/core/agent.md # agent architecture +/docs/core/events.md # internal event types +/docs/core/state.md # memory state model +``` + +### Exit Criteria + +* UI can send a question +* Agent returns a mock response +* No persistence yet + +--- + +## Phase 3 — Local Storage & Privacy Layer + +### Goals + +Add **efficient, privacy-first local storage**. + +### Storage Rules + +* No Telegram message bodies by default +* Store only: + + * channel IDs + * last processed message IDs + * dedupe hashes +* Encrypted at rest + +### Deliverables + +* Encrypted SQLite +* OS keychain integration +* Storage abstraction in Rust +* “Ephemeral mode” toggle + +### Documentation Commands + +```bash +/docs/storage/schema.md +/docs/storage/encryption.md +/docs/privacy/model.md +``` + +### Exit Criteria + +* App restarts without losing cursors +* “Delete local data” wipes all state +* No plaintext sensitive data on disk + +--- + +## Phase 4 — Telegram Bot Integration (Agent Assistant) + +### Goals + +Turn the app into a **real Telegram agent assistant**. + +### Telegram Capabilities (MVP) + +* Bot DM interaction +* Read user questions +* Fetch channel messages (where bot has access) +* Reply via DM + +### Platform Behavior + +* Windows/macOS/Android: continuous polling +* iOS: no polling (on-demand only) + +### Deliverables + +* Telegram Bot Gateway (Rust) +* Update polling / fetching +* Message dedupe + cursoring +* Agent replies sent via bot DM + +### Documentation Commands + +```bash +/docs/telegram/bot.md +/docs/telegram/flows.md +/docs/telegram/limits.md +``` + +### Exit Criteria + +* User asks a question in Telegram +* App processes it +* Bot replies correctly +* No duplicate replies + +--- + +## Phase 5 — Platform Background Execution + +### Goals + +Enable **platform-appropriate background behavior**. + +### Platform Breakdown + +#### Windows + +* Tray app +* Autostart +* Background polling + +#### macOS + +* Menu bar app +* Launch at login + +#### Android + +* Foreground service (persistent notification) +* Background polling allowed + +#### iOS + +* ❌ No continuous background +* Only foreground execution + +### Documentation Commands + +```bash +/docs/platforms/windows.md +/docs/platforms/macos.md +/docs/platforms/android.md +/docs/platforms/ios.md +``` + +### Exit Criteria + +* Desktop apps run without UI open +* Android foreground service stable +* iOS behaves strictly foreground-only + +--- + +## Phase 6 — Minimal Backend Integration + +### Goals + +Introduce backend **without violating privacy goals**. + +### Backend Responsibilities + +* Authentication +* Device registration +* Entitlements +* Push notifications +* Payment verification + +### Explicit Non-Responsibilities + +* No Telegram message storage +* No agent logic +* No summaries + +### Deliverables + +* Auth flow wired into UI +* Entitlements fetched on startup +* Device registered for push + +### Documentation Commands + +```bash +/docs/backend/api.md +/docs/backend/data-model.md +/docs/backend/security.md +``` + +### Exit Criteria + +* User login works +* Entitlements enforced locally +* Backend DB contains no message content + +--- + +## Phase 7 — iOS Push → Tap → Sync Flow + +### Goals + +Implement the **iOS-specific agent interaction model**. + +### Flow + +1. User sends question to bot +2. Backend triggers visible push +3. User taps notification +4. App opens +5. App syncs Telegram +6. Agent processes +7. Bot replies + +### Deliverables + +* APNs integration +* Push payload handling +* Sync-on-open logic + +### Documentation Commands + +```bash +/docs/ios/push-flow.md +/docs/ios/limitations.md +``` + +### Exit Criteria + +* Push reliably opens app +* Sync runs automatically +* Bot replies successfully + +--- + +## Phase 8 — Payments & Plan Gating + +### Goals + +Monetize safely and correctly. + +### Platforms + +* Desktop: Stripe / Paddle +* Android: Play Billing +* iOS: StoreKit + +### Deliverables + +* Purchase flow per platform +* Receipt verification +* Feature gating in Rust + +### Documentation Commands + +```bash +/docs/billing/plans.md +/docs/billing/verification.md +/docs/billing/entitlements.md +``` + +### Exit Criteria + +* Paid features unlock correctly +* Downgrades enforced +* Offline grace period handled + +--- + +## Phase 9 — Hardening & Release Prep + +### Goals + +Stability, observability, and trust. + +### Deliverables + +* Error handling +* Rate limiting +* Abuse prevention +* Crash-safe storage +* UX polish + +### Documentation Commands + +```bash +/docs/release/checklist.md +/docs/known-issues.md +/docs/security/threat-model.md +``` + +### Exit Criteria + +* No critical crashes +* No duplicate Telegram replies +* Clear user-facing error states + +--- + +## Final Notes + +* The **Telegram bot is the product interface** +* The **Tauri app is the execution engine** +* The **backend is infrastructure, not intelligence** +* iOS behavior is intentionally constrained for correctness + +--- + +END OF MVP