SwiftSlate
Android accessibility service for AI-powered text transformation
Install / Use
/learn @Musheer360/SwiftSlateREADME
SwiftSlate
System-wide AI text assistant for Android — powered by Gemini, custom providers, and local LLMs
Type a trigger like ?fix at the end of any text, in any app, and watch it get replaced — instantly.
<img src="https://img.shields.io/badge/⬇_Download_APK-282828?style=for-the-badge" alt="Download APK" height="36"> <img src="https://img.shields.io/badge/🐛_Report_Bug-282828?style=for-the-badge" alt="Report Bug" height="36"> <img src="https://img.shields.io/badge/💡_Request_Feature-282828?style=for-the-badge" alt="Request Feature" height="36">
<br> </div><br>[!NOTE] SwiftSlate works in most apps — WhatsApp, Gmail, Twitter/X, Messages, Notes, and more. No copy-pasting. No app switching. Just type and go. Some apps with custom input fields may not be supported (see limitations).
📋 Table of Contents
- Quick Demo
- Features
- Built-in Commands
- Text Replacer Commands
- Getting Started
- How It Works
- Custom Commands
- API Key Management
- Backup & Restore
- App Screens
- Localization
- Privacy & Security
- Tech Stack
- Building from Source
- Known Limitations
- Contributing
- Support the Project
- License
⚡ Quick Demo
📝 You type → "i dont no whats hapening ?fix"
⏳ SwiftSlate → ◐ ◓ ◑ ◒ (processing...)
✅ Result → "I don't know what's happening."
📝 You type → "hey can u send me that file ?formal"
⏳ SwiftSlate → ◐ ◓ ◑ ◒ (processing...)
✅ Result → "Could you please share the file at your earliest convenience?"
📝 You type → "Hello, how are you? ?translate:es"
⏳ SwiftSlate → ◐ ◓ ◑ ◒ (processing...)
✅ Result → "Hola, ¿cómo estás?"
<br>
✨ Features
<table> <tr> <td width="50%">🌐 Works Almost Everywhere
Integrates at the system level via Android's Accessibility Service. Works in most apps — messaging, email, social media, notes, browsers, and more. Some apps with custom input fields may not be supported (see limitations).
⚡ Instant Inline Replacement
Type, trigger, done. The AI response replaces your text directly in the same field — no copy-pasting, no app switching. A spinner (◐ ◓ ◑ ◒) shows progress for AI commands; text replacer commands execute instantly.
🔑 Multi-Key Rotation
Add multiple API keys for automatic round-robin rotation. If one key hits a rate limit, SwiftSlate seamlessly switches to the next.
🌙 AMOLED Dark Theme
Pure black (#000000) Material 3 interface designed for OLED screens — saves battery and looks stunning.
🤖 Powered by Gemini, Custom Providers & Local LLMs
Ships with Google's Gemini API. Or connect any OpenAI-compatible endpoint — cloud providers, or local LLMs like Ollama, LM Studio, and others running on your network.
🛠️ Two Command Types
AI commands send text to your provider for intelligent transformation. Text replacer commands run entirely offline for instant local text manipulation — no API key needed.
🔒 Encrypted Key Storage
API keys are encrypted with AES-256-GCM using the Android Keystore. Your keys never leave your device unencrypted.
🌍 Localized in 7 Languages
App UI available in English, French, German, Spanish, Portuguese (BR), Hindi, and Simplified Chinese.
</td> </tr> </table> <br>🧩 Built-in Commands
SwiftSlate ships with 9 AI-powered commands plus dynamic translation — ready to use out of the box:
| Trigger | Action | Example |
|:--------|:-------|:--------|
| ?fix | Fix grammar, spelling & punctuation | i dont no whats hapening → I don't know what's happening. |
| ?improve | Improve clarity and readability | The thing is not working good → The feature isn't functioning properly. |
| ?shorten | Shorten while keeping meaning | I wanted to let you know that I will not be able to attend the meeting tomorrow → I can't attend tomorrow's meeting. |
| ?expand | Expand with more detail | Meeting postponed → The meeting has been postponed to a later date. We will share the updated schedule soon. |
| ?formal | Rewrite in professional tone | hey can u send me that file → Could you please share the file at your earliest convenience? |
| ?casual | Rewrite in friendly tone | Please confirm your attendance at the event → Hey, you coming to the event? Let me know! |
| ?emoji | Add relevant emojis | I love this new feature → I love this new feature! 🎉❤️✨ |
| ?reply | Generate a contextual reply | Do you want to grab lunch tomorrow? → Sure, I'd love to! What time works for you? |
| ?undo | Restore text from before the last replacement | Reverts to your original text before AI modified it |
| ?translate:XX | Translate to any language | Hello, how are you? ?translate:es → Hola, ¿cómo estás? |
Use any standard language code with ?translate:XX:
| Code | Language | Code | Language | Code | Language |
|:-----|:---------|:-----|:---------|:-----|:---------|
| es | Spanish | fr | French | de | German |
| ja | Japanese | ko | Korean | zh | Chinese |
| hi | Hindi | ar | Arabic | pt | Portuguese |
| it | Italian | ru | Russian | nl | Dutch |
| tr | Turkish | pl | Polish | sv | Swedish |
…and many more. Any language code recognized by Google Translate works.
</details> <br>🛠️ Text Replacer Commands
Beyond AI, you can create text replacer commands that run entirely offline — no API key, no network, instant execution. These are custom commands you define with the "Text Replacer" type.
Text replacer commands replace the trigger with a fixed string. They're perfect for:
| Use Case | Trigger | Replacement | Result |
|:---------|:--------|:------------|:-------|
| Signatures | ?sig | — John Doe, CEO | Appends your signature |
| Canned responses | ?ty | Thank you for reaching out! I'll get back to you shortly. | Instant reply template |
| Snippets | ?addr | 123 Main St, Springfield, IL 62701 | Quick address insertion |
| Shortcuts | ?email | contact@example.com | Fast email insertion |
<br>[!TIP] Text replacer commands execute instantly with zero latency — no spinner, no network call. Create them in the Commands tab by selecting the "Text Replacer" type.
🚀 Getting Started
Prerequisites
| Requirement | Details | |:------------|:--------| | Android Device | Android 6.0+ (API 23 or higher) | | API Key | Free Gemini key at aistudio.google.com, or a key from any OpenAI-compatible provider. Not required for text replacer commands. |
Installation
[!TIP] The APK is only ~1.2 MB — lightweight with zero external dependencies for networking or JSON.
1. Download the latest APK from the Releases page
2. Install the APK on your device (allow installation from unknown sources if prompted)
3. Open SwiftSlate and follow the setup below
Setup in 3 Steps
<table> <tr> <td width="33%" align="center">Step 1
🔑 Add API Key
Open the Keys tab, enter your API key. It's validated before saving. Add multiple keys for rotation.
</td> <td width="33%" align="center">Step 2
♿ Enable Service
On the Dashboard, tap "Enable" → find "SwiftSlate Assistant" in Accessibility Settings → toggle it on.
</td> <td width="33%" align="center">Step 3
✍️ Start Typing!
Open any app, type your text, add a trigger like ?fix at the end, and watch the magic happen.
⚙️ How It Works
flowchart TD
A["📝 You type: 'Hello wrld, how r u ?fix'"] --> B{"🔍 Accessibility Service\ndetects trigger"}
B -- "Text Replacer" --> C["⚡ Instant local replacement\n(no network call)"]
B -- "AI Command" --> D["🔑 Selects next API key\n(round-robin)"]
D --> E["🤖 Sends text + prompt\nto AI provider"]
E --> F["⏳ Shows inline spin
