{"id":36632764,"url":"https://github.com/miaoxworld/nativetavern","last_synced_at":"2026-01-19T03:00:59.410Z","repository":{"id":331550128,"uuid":"1130919893","full_name":"miaoxworld/NativeTavern","owner":"miaoxworld","description":"A native cross-platform mobile application (iOS/Android) that reimplements SillyTavern as a high-performance native app with full compatibility for SillyTavern data formats.","archived":false,"fork":false,"pushed_at":"2026-01-16T12:01:37.000Z","size":4242,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-16T13:31:44.087Z","etag":null,"topics":["compatibility","cross-platform","cross-platform-app","mobile-application","native-app","sillytavern"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/miaoxworld.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-09T07:53:37.000Z","updated_at":"2026-01-16T08:46:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"e0215819-04e7-4277-ae15-95740058e0bc","html_url":"https://github.com/miaoxworld/NativeTavern","commit_stats":null,"previous_names":["miaoxworld/nativetavern"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/miaoxworld/NativeTavern","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miaoxworld%2FNativeTavern","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miaoxworld%2FNativeTavern/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miaoxworld%2FNativeTavern/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miaoxworld%2FNativeTavern/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/miaoxworld","download_url":"https://codeload.github.com/miaoxworld/NativeTavern/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miaoxworld%2FNativeTavern/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28559345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T00:46:33.223Z","status":"online","status_checked_at":"2026-01-19T02:00:08.049Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["compatibility","cross-platform","cross-platform-app","mobile-application","native-app","sillytavern"],"created_at":"2026-01-12T09:40:28.664Z","updated_at":"2026-01-19T03:00:59.403Z","avatar_url":"https://github.com/miaoxworld.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NativeTavern\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"README.md\"\u003eEnglish\u003c/a\u003e | \u003ca href=\"README.zh-CN.md\"\u003e简体中文\u003c/a\u003e\n\u003c/p\u003e\n\nA native cross-platform mobile application (iOS/Android) that reimplements SillyTavern as a high-performance native app with full compatibility for SillyTavern data formats.\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"photo/Chat.png\" width=\"200\" alt=\"Chat Screen\"/\u003e\n  \u003cimg src=\"photo/Character.png\" width=\"200\" alt=\"Character Screen\"/\u003e\n  \u003cimg src=\"photo/AiConfig.png\" width=\"200\" alt=\"AI Configuration\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"photo/AIPreset.png\" width=\"200\" alt=\"AI Presets\"/\u003e\n  \u003cimg src=\"photo/PromptManager.png\" width=\"200\" alt=\"Prompt Manager\"/\u003e\n  \u003cimg src=\"photo/Wordbook.png\" width=\"200\" alt=\"World Info / Lorebook\"/\u003e\n\u003c/p\u003e\n\n| Chat | Character | AI Config |\n|:---:|:---:|:---:|\n| Real-time streaming chat with message actions | Character cards with avatar and details | Multi-provider LLM configuration |\n\n| AI Preset | Prompt Manager | World Info |\n|:---:|:---:|:---:|\n| Import SillyTavern presets | Custom prompt ordering | Keyword-based context injection |\n\n## Features\n\n### Core Features ✅\n- 📱 **Native Mobile App** - Built with Flutter for iOS and Android\n- ⚡ **High Performance** - Optimized for mobile devices\n- 🤖 **Multi-Provider LLM Support** - OpenAI, Claude, OpenRouter, Gemini, Ollama, KoboldCpp\n- 📦 **Full ST Compatibility** - Import/export PNG cards, CharX, JSON\n- 💬 **Streaming Responses** - Real-time SSE streaming from all providers\n\n### Character Management ✅\n- 📥 **Import Formats** - PNG V2/V3, CharX (V3 spec), JSON\n- 📤 **Export Formats** - PNG V3, CharX with assets, JSON\n- ✏️ **Character Editor** - Create/edit characters with all fields\n- 🖼️ **Avatar Support** - Custom avatars with image picker\n- 📚 **Embedded Lorebooks** - Full CharX lorebook support\n\n### Chat Features ✅\n- 💬 **Message Actions** - Edit, delete, regenerate, swipe between alternatives\n- 👥 **Group Chats** - Multi-character conversations with 5 response modes\n- 🔖 **Bookmarks** - Create checkpoints and branch conversations\n- 📝 **Author's Note** - Injection at configurable depth\n- 🎭 **Personas** - User profile management with descriptions\n- 📄 **HTML/Markdown** - Rich text rendering in chat messages\n\n### World Info / Lorebook ✅\n- 🌍 **Keyword Matching** - Trigger-based context injection\n- 📍 **Multiple Positions** - Before/after system prompt, character defs, examples\n- 🔄 **Recursion Support** - Nested keyword scanning\n- 📊 **Group Scoring** - Priority-based entry selection\n\n### Prompt Management ✅\n- 📋 **Prompt Manager** - Ordering, enabling/disabling prompts\n- 📥 **SillyTavern Preset Import** - Full prompts + prompt_order support\n- 🎯 **Custom Prompts** - Add custom sections with role support\n- 📍 **Depth Injection** - Insert prompts at specific message depths\n\n### Advanced Settings ✅\n- 🎛️ **Full Sampler Control** - Temperature, Top-P, Top-K, Min-P, Typical-P\n- 🔁 **Repetition Penalty** - With configurable range\n- 🎲 **Mirostat** - Mode, Tau, Eta settings\n- ✂️ **Tail-Free Sampling** - TFS and Top-A support\n- 🛑 **Stop Sequences** - Custom stop tokens\n\n### Themes ✅\n- 🎨 **18 Built-in Themes** - 7 dark + 11 light themes\n- 🌙 **Dark Themes** - Default Dark, Midnight, Forest, Sunset, Rose, Ocean, AMOLED\n- ☀️ **Light Themes** - Clean White, Warm Cream, Soft Lavender, Mint Fresh, Sky Blue, Rose Pink, Peach, Sage Green, Paper, Sepia\n- 🖌️ **Theme Editor** - Full color customization\n\n### Chain of Thought Support ✅\n- 🧠 **OpenAI o1/o3** - Parse `reasoning_content` field\n- 💭 **Claude** - Parse `thinking` blocks\n- 🤔 **Gemini 2.0 Flash Thinking** - Parse `thought` field\n- 💾 **Reasoning Storage** - Save reasoning with messages and swipes\n- 📦 **Collapsible UI** - Expandable reasoning blocks with copy support\n- ⏳ **Streaming Display** - Real-time reasoning with pulse animation\n\n### Character Tags ✅\n- 🏷️ **Tag Management** - Create, edit, delete tags\n- 🎨 **Tag Colors** - Custom hex colors for tags\n- 😀 **Tag Icons** - Emoji icons for visual identification\n- 🔗 **Character Assignment** - Assign multiple tags to characters\n- 🔍 **Tag Filtering** - Filter character list by tags\n\n### Markdown Input ✅\n- ⌨️ **Keyboard Shortcuts** - ⌘B bold, ⌘I italic, ⌘U underline\n- 📝 **Formatting Toolbar** - Compact toolbar with formatting buttons\n- 🔗 **Link Support** - ⌘K for quick link insertion\n- 💻 **Code Blocks** - Inline code and code block shortcuts\n\n### Expression Sprites ✅\n- 🎭 **Emotion Detection** - Automatic emotion detection from messages\n- 📁 **Sprite Management** - Per-character sprite folders\n- 🖼️ **15 Emotions** - Happy, sad, angry, surprised, scared, and more\n- ✨ **Animations** - Smooth fade/scale transitions\n- ⚙️ **Customizable** - Size, position, opacity settings\n- 🎬 **Action Detection** - Detects *smiles*, *laughs*, etc.\n\n### Text-to-Speech ✅\n- 🔊 **Multiple Providers** - System TTS, ElevenLabs, Azure\n- 🎭 **Per-Character Voices** - Different voice for each character\n- ▶️ **Auto-play** - Automatically read new messages\n- 🎚️ **Voice Controls** - Speed, pitch, volume adjustment\n- 📝 **Text Cleaning** - Removes markdown/HTML for natural speech\n- 🔄 **Message Queue** - Queue multiple messages\n\n### Speech-to-Text ✅\n- 🎤 **Voice Input** - Dictate messages using your voice\n- 🌍 **16 Languages** - Support for major languages\n- 🔄 **Multiple Providers** - System STT, Whisper, Azure\n- 📝 **Partial Results** - See text as you speak\n- ⚡ **Auto-send** - Automatically send after speaking\n- 🔁 **Continuous Mode** - Keep listening for multiple phrases\n\n### Translation ✅\n- 🌐 **30+ Languages** - Translate between major languages\n- 🔄 **Multiple Providers** - Google, DeepL, LibreTranslate\n- 🔀 **Auto-translate** - Incoming and outgoing messages\n- 🔍 **Language Detection** - Auto-detect source language\n- 📝 **Show Original** - Display original alongside translation\n- 🔘 **Translate Button** - On-demand message translation\n\n### Image Generation ✅\n- 🎨 **Multiple Providers** - Stable Diffusion, DALL-E, ComfyUI, Automatic1111\n- 📐 **Size Presets** - 512x512, 768x768, 1024x1024, and more\n- ⚙️ **Generation Settings** - Steps, CFG scale, sampler selection\n- 🚫 **Negative Prompts** - Exclude unwanted elements\n- 🎲 **Sampler Options** - Euler, Euler A, DPM++, DDIM, and more\n- 🔧 **API Configuration** - Custom endpoints and API keys\n\n### Regex Scripts ✅\n- 🔍 **Find/Replace Patterns** - Apply regex to messages\n- 📝 **Script Management** - Create, edit, delete, reorder scripts\n- 🎯 **Placement Options** - User input, AI output, slash commands\n- 📦 **Presets** - Built-in preset scripts\n- 🔄 **Import/Export** - Share scripts as JSON\n- 🧪 **Test Widget** - Test patterns before applying\n\n### Variables System ✅\n- 🌐 **Global Variables** - App-wide persistent storage\n- 💬 **Local Variables** - Per-chat variable storage\n- 📝 **Variable Macros** - {{getvar}}, {{setvar}}, {{incvar}}, etc.\n- 🔢 **Type Support** - Numbers, strings, arrays, objects\n- ➕ **Operations** - Increment, decrement, add, concatenate\n\n### Chat Backups ✅\n- 💾 **Auto-Backup** - Configurable intervals (hourly, daily, weekly)\n- 📁 **Chat Backups** - Individual chat exports (JSONL)\n- 📦 **Full Backups** - Complete data exports (JSON)\n- 🗑️ **Retention** - Automatic cleanup of old backups\n- 👁️ **View/Restore** - Browse and restore backups\n\n### Logit Bias ✅\n- 🎚️ **Token Adjustment** - Increase/decrease token probabilities\n- 📝 **Multiple Formats** - Plain text, verbatim {text}, token IDs [123]\n- 📦 **Presets** - Save and manage bias presets\n- 🔄 **Import/Export** - Share presets as JSON\n- ✅ **Validation** - Real-time entry validation\n\n### CFG Scale ✅\n- 📊 **Guidance Scale** - Classifier-Free Guidance control\n- ➖ **Negative Prompts** - Steer model away from content\n- ➕ **Positive Prompts** - Enhance desired content\n- 🎭 **Per-Character** - Character-specific CFG settings\n- 💬 **Per-Chat** - Chat-specific overrides\n\n### Token Probabilities (Logprobs) ✅\n- 📈 **Probability Display** - View token probabilities\n- 🎨 **Color Coding** - Visual probability indicators\n- 🔄 **Alternative Tokens** - See top candidate tokens\n- 📊 **Statistics** - Token count and analysis\n\n### Tokenizer ✅\n- 🔢 **Token Counting** - Accurate token estimation\n- 🎨 **Visualization** - Color-coded token breakdown\n- 📊 **Statistics** - Character/token ratios\n- 🔧 **Multiple Tokenizers** - GPT, LLaMA, Claude, Mistral, etc.\n\n### Vector Storage / RAG ✅\n- 📚 **Collections** - Organize documents into collections\n- 🔍 **Similarity Search** - Find relevant context\n- 📝 **Document Chunking** - Fixed size, sentence, paragraph\n- 🎯 **Prompt Integration** - Auto-inject context\n- 📤 **Import/Export** - Share collections as JSON\n\n### Macro System ✅\n- `{{user}}` - Current persona name\n- `{{char}}` - Character name\n- `{{time}}` / `{{date}}` / `{{weekday}}` - Date/time macros\n- `{{random:min:max}}` - Random number generation\n- `{{roll:NdM}}` - Dice rolling\n- `{{idle_duration}}` - Time since last message\n- `{{lastMessage}}` / `{{lastUserMessage}}` / `{{lastCharMessage}}`\n\n### Slash Commands ✅\n- `/continue` - Continue generation\n- `/regenerate` - Regenerate last message\n- `/swipe` - Navigate swipes\n- `/persona` - Switch persona\n- `/sys` - Send system message\n- `/bg` - Change background\n- `/help` - Show command help\n- `/clear` - Clear messages\n- `/edit` - Edit last message\n- `/delete` - Delete messages\n- `/bookmark` - Create bookmark\n- `/note` - Set author's note\n\n### Backgrounds ✅\n- 🖼️ **Custom Backgrounds** - Set chat backgrounds\n- 📁 **Background Gallery** - Manage background images\n- 🎚️ **Opacity Control** - Adjust background transparency\n- 💬 **Per-Chat Backgrounds** - Different background per chat\n\n## Tech Stack\n\n| Component | Technology |\n|-----------|------------|\n| UI Framework | Flutter (Dart) |\n| State Management | Riverpod |\n| Navigation | go_router |\n| Database | SQLite (drift) |\n| Native Core | Rust (via FFI) |\n| HTTP Client | Dio |\n\n## Project Structure\n\n```\nnative_tavern/\n├── lib/                    # Flutter/Dart code\n│   ├── main.dart          # Entry point\n│   ├── app.dart           # App configuration\n│   ├── core/              # Core utilities\n│   ├── data/              # Data layer (models, database, repos)\n│   │   ├── models/        # Data models (Character, Chat, Message, etc.)\n│   │   ├── database/      # SQLite database with Drift\n│   │   └── repositories/  # Data access layer\n│   ├── domain/            # Business logic\n│   │   └── services/      # LLM service, Macro service, etc.\n│   └── presentation/      # UI layer\n│       ├── providers/     # Riverpod state management\n│       ├── screens/       # App screens\n│       ├── widgets/       # Reusable widgets\n│       └── theme/         # Theme configuration\n├── rust/                   # Rust native core\n│   └── src/\n│       ├── png_parser.rs  # PNG character card parsing\n│       ├── charx_parser.rs # CharX archive handling\n│       └── models.rs      # Data models\n├── ios/                    # iOS platform code\n├── android/                # Android platform code\n└── plans/                  # Architecture documentation\n```\n\n## Getting Started\n\n### Prerequisites\n\n- Flutter SDK \u003e= 3.16.0\n- Rust toolchain (for native core)\n- Xcode (for iOS development)\n- Android Studio (for Android development)\n\n### Installation\n\n1. **Clone the repository**\n   ```bash\n   git clone https://github.com/yourusername/NativeTavern.git\n   cd NativeTavern\n   ```\n\n2. **Install Flutter dependencies**\n   ```bash\n   flutter pub get\n   ```\n\n3. **Build Rust core** (optional, for native features)\n   ```bash\n   cd rust\n   cargo build --release\n   ```\n\n4. **Run the app**\n   ```bash\n   flutter run\n   ```\n\n## SillyTavern Compatibility\n\n### Supported Import Formats\n\n| Format | Description | Status |\n|--------|-------------|--------|\n| PNG V2 | Character card with `chara` tEXt chunk | ✅ Supported |\n| PNG V3 | Character card with `ccv3` tEXt chunk | ✅ Supported |\n| CharX | ZIP archive with card.json + assets | ✅ Supported |\n| JSON | Raw character JSON export | ✅ Supported |\n| ST Preset | SillyTavern AI preset JSON | ✅ Supported |\n\n### Supported Export Formats\n\n| Format | Description | Status |\n|--------|-------------|--------|\n| PNG V3 | Export as PNG with embedded metadata | ✅ Supported |\n| CharX | Export with all assets | ✅ Supported |\n| JSON | Raw export for backup | ✅ Supported |\n\n## Development Phases\n\n| Phase | Features | Status |\n|-------|----------|--------|\n| **1-2** | Core Foundation, Chat Core | ✅ Complete |\n| **3A** | Message Actions, Personas, Instruct Mode | ✅ Complete |\n| **3B** | World Info, CharX Full Import, Character Editor | ✅ Complete |\n| **4A** | Group Chats, Chat Bookmarks | ✅ Complete |\n| **4B** | Macro System | ✅ Complete |\n| **5** | Author's Note, Prompt Manager, Advanced Settings, Quick Replies, Themes, Statistics, Chain of Thought | ✅ Complete |\n| **6** | Slash Commands, Tags, Backgrounds, HTML/Markdown | ✅ Complete |\n| **7** | Expression Sprites, TTS, STT, Translation, Image Generation | ✅ Complete |\n| **8** | Regex Scripts, Variables, Chat Backups | ✅ Complete |\n| **9** | Logit Bias, CFG Scale, Logprobs, Tokenizer, Vector Storage/RAG | ✅ Complete |\n\n## Feature Comparison with SillyTavern\n\n| Feature | SillyTavern Web | NativeTavern | Status |\n|---------|-----------------|--------------|--------|\n| Character Import/Export | ✅ | ✅ | Full parity |\n| LLM Providers | 10+ | 6 | Core providers |\n| Streaming | ✅ | ✅ | Full parity |\n| Message Actions | ✅ | ✅ | Full parity |\n| Group Chats | ✅ | ✅ | Full parity |\n| World Info | ✅ | ✅ | Full parity |\n| Prompt Manager | ✅ | ✅ | Full parity |\n| Macros | ✅ | ✅ | Full parity |\n| Themes | ✅ | ✅ | 18 built-in |\n| Slash Commands | ✅ | ✅ | Full parity |\n| Backgrounds | ✅ | ✅ | Full parity |\n| HTML/Markdown | ✅ | ✅ | Full parity |\n| Chain of Thought | ✅ | ✅ | Full parity |\n| Character Tags | ✅ | ✅ | Full parity |\n| Reasoning UI | ✅ | ✅ | Full parity |\n| Markdown Hotkeys | ✅ | ✅ | Full parity |\n| Expression Sprites | ✅ | ✅ | Full parity |\n| TTS | ✅ | ✅ | Full parity |\n| STT | ✅ | ✅ | Full parity |\n| Translation | ✅ | ✅ | Full parity |\n| Image Generation | ✅ | ✅ | Full parity |\n| Regex Scripts | ✅ | ✅ | Full parity |\n| Variables | ✅ | ✅ | Full parity |\n| Chat Backups | ✅ | ✅ | Full parity |\n| Logit Bias | ✅ | ✅ | Full parity |\n| CFG Scale | ✅ | ✅ | Full parity |\n| Token Probabilities | ✅ | ✅ | Full parity |\n| Tokenizer | ✅ | ✅ | Full parity |\n| Vector Storage/RAG | ✅ | ✅ | Full parity |\n| Extensions | ✅ | ⏳ | Planned |\n\n**Overall Completion: ~99%** of core SillyTavern features\n\n## License\n\nAGPL-3.0 - See [LICENSE](LICENSE) for details.\n\n## Acknowledgments\n\n- [SillyTavern](https://github.com/SillyTavern/SillyTavern) - Original web-based project\n- [Flutter](https://flutter.dev) - Cross-platform UI framework\n- [Riverpod](https://riverpod.dev) - State management","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiaoxworld%2Fnativetavern","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmiaoxworld%2Fnativetavern","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiaoxworld%2Fnativetavern/lists"}