Uncensored LLM on your phone: roleplay on Android and iPhone with an API key
A phone cannot load a 16.8 GB uncensored GGUF. Three app setups that reach the same builds by API on Android and iPhone, with every field and the cost per 100 messages.
An uncensored LLM for mobile is not a file you install. The builds the roleplay ranking threads name ship as GGUF files of 4.4 to 18.7 GB, and a phone has to hold the whole file in memory to run it. The route that works on a phone is an app that talks to an API: a roleplay frontend in the browser, or SillyTavern itself on Android, pointed at the uncensored LLM API with one key. The model runs on the API side, so the phone only sends the chat and shows the reply.
Below are three setups with every field, for Android and iPhone, and what 100 messages cost on 7 uncensored builds from the live catalog.
Why a phone cannot load a 27B GGUF
The models that top the Reddit rankings for uncensored roleplay are 27B to 70B parameter builds, published as quantized GGUF files. These are their sizes as Hugging Face listed them on 2026-10-19:
| Build | Quant | File size |
|---|---|---|
| Qwen 3.8 27B UncensoredQwen3.8-27B-Uncensored-Q4_K_M.gguf | Q4_K_M | 16.8 GB |
| Gemma 4 31B Hereticgemma-4-31B-it-uncensored-heretic-Q4_K_M.gguf | Q4_K_M | 18.7 GB |
| Llama 3.3 70B abliteratedLlama-3.3-70B-Instruct-abliterated-IQ1_M.gguf | IQ1_M | 16.8 GB |
| Gemma 4 E4B UncensoredGemma-4-E4B-Uncensored-HauhauCS-Aggressive-Q2_K_P.gguf | Q2_K_P | 4.4 GB |
File sizes from each repository’s file list on Hugging Face, read 2026-10-19. A GGUF is loaded whole into memory to run.
Q4_K_M is the quantization most desktop guides recommend, and at that size the 27B Qwen file is 16.8 GB and the 31B Gemma Heretic file is 18.7 GB. A 1-bit Llama 70B is still 16.8 GB. The 4.4 GB file at the bottom is a 2-bit quant of a 4B model, which is not the model those threads rank.
By API, the size of the weights stops mattering. The same Gemma 31B Heretic build is Gemma 31B Heretic Uncensored in the catalog, at $0.8475 per 100 messages of 4,000 tokens in and 300 out today. The phone needs a browser and a key.
What you need
- A key from the console. Credit is prepaid from $10, by card or crypto through our payment processor, with no subscription.
- For setups 1 and 2, a browser on the phone: Chrome on Android, Safari on iPhone.
- For setup 3, an Android phone and Termux from F-Droid. SillyTavern's docs recommend F-Droid or the GitHub release and say the Play Store version is no longer maintained (read 2026-10-19).
Setup 1: Janitor AI in the phone browser
Janitor AI runs in the browser, so the phone setup is the desktop setup on a smaller screen. Open any chat and tap the provider button at the top (it reads using janitor until you switch). Under Provider, pick Proxy, then + New under Proxy configurations.
Name UplinkSwitch
Proxy URL https://api.uplinkswitch.com/v1/chat/completions
API key sk-uplink-live-...
Model roleplay-uncensoredThe Proxy URL is the full address ending in /chat/completions. Tap Add, then Save at the bottom of the panel, and refresh the page. Janitor only picks up a new proxy URL after a refresh, and the chat header then reads using proxy. The Janitor AI proxy setup was run end to end on 2026-10-18 and covers the error codes.
Setup 2: Chub AI with a custom endpoint
Chub AI keeps its connection in Secrets. Open a chat, open the menu at the top right and choose Secrets. Expand OpenAI, set OpenAI Access API to Reverse Proxy, and fill the two fields under it. The model id goes in Configuration, from the same menu.
Menu (top right) → Secrets → OpenAI
OpenAI Access API Reverse Proxy
proxy URL https://api.uplinkswitch.com/v1
proxy key sk-uplink-live-...
Menu (top right) → Configuration
Prompt Structure API: OpenAI, model: roleplay-uncensored
Generation Parameters max tokens: 1000 or moreStart with the base URL ending in /v1. If Chub returns an empty reply, change it to the full address, https://api.uplinkswitch.com/v1/chat/completions; Chub's docs do not say which form the field takes (read 2026-10-19). The Chub AI setup guide has the panel labels and the empty response fix.
Setup 3: SillyTavern on Android in Termux
SillyTavern is a Node app, and Termux runs Node on Android. The commands below are from SillyTavern's Android (Termux) page (read 2026-10-19). Install Termux from F-Droid, open it, and run them one at a time. The first opens a menu: choose Mirror group and a nearby server.
termux-change-repo
pkg update && pkg upgrade
pkg install git nodejs-lts nano
git clone https://github.com/SillyTavern/SillyTavern -b release
cd ~/SillyTavern
bash start.shThe clone takes the release branch; the docs also list staging. On a 32-bit phone the docs add pkg install esbuild for the error Unsupported platform: android arm. When bash start.sh settles, open http://127.0.0.1:8000 in the phone's browser. SillyTavern's remote connections page shows it listening on 127.0.0.1:8000 (read 2026-10-19). To update later:
cd ~/SillyTavern
git pull --rebase --autostashIn SillyTavern, open API Connections, set API to Chat Completion and Chat Completion Source to Custom (OpenAI-compatible):
Custom Endpoint (Base URL) https://api.uplinkswitch.com/v1
Custom API Key sk-uplink-live-...
Enter a Model ID roleplay-uncensoredStop the URL at /v1; SillyTavern adds /chat/completions and /models itself. Tap Connect, and Available Models fills with every id the key can call. Test Message confirms the key, the URL and the model id in one reply. The SillyTavern setup lists the settings that change the bill, such as Context and Max Response Length. Termux keeps running while SillyTavern is open; close it and the local server stops, and your chats stay in ~/SillyTavern.
On iPhone
Setups 1 and 2 are websites, so they work in Safari with the same fields and the same key. Termux is an Android app, so setup 3 is Android only. No local model is needed on either platform: the phone sends the chat and shows the reply, and the model runs on the API side.
Uncensored LLM for mobile: what 100 messages cost
One roleplay message here is 4,000 tokens in (the character card, persona and recent chat) and 300 out, the size the Janitor AI guide costs too. Every message resends the chat, so the input price sets most of the bill. The table prices 100 messages at that size and again at 16,000 tokens in, deep into a long chat, from the live catalog on 2026-10-25.
| Model | In / out per 1M | 100 at 4,000 in | 100 at 16,000 in | Daily check |
|---|---|---|---|---|
| GLM-5.3 Flash Uncensoredglm-5.3-flash-uncensored | $0.1086 / $0.3802 | $0.0549 | $0.1852 | Steady since Oct 12 |
| Roleplay Uncensoredroleplay-uncensoredReplies at once, no thinking step | $0.30 / $0.60 | $0.138 | $0.498 | Steady since Oct 12 |
| DeepSeek V4.1 Flash Abliterateddeepseek-v4.1-flash-abliterated | $0.8488 / $1.6975 | $0.3904 | $1.41 | Steady since Oct 19 |
| DeepSeek V4 Pro Uncensoreddeepseek-v4-pro-uncensoredThinks briefly, then answers | $1.00 / $2.00 | $0.46 | $1.66 | Steady since Oct 12 |
| Chat Uncensoredchat-uncensored | $1.50 / $3.00 | $0.69 | $2.49 | Steady since Oct 19 |
| Gemma 31B Heretic Uncensoredgemma-31b-heretic-uncensored | $1.50 / $8.25 | $0.8475 | $2.65 | Steady since Oct 22 |
| QwQ 32B Uncensoredqwq-32b-uncensored | $2.64 / $4.00 | $1.18 | $4.34 | Steady since Oct 20 |
USD per million tokens, then USD for 100 messages of 300 tokens out at 4,000 and 16,000 tokens in, from the live catalog on 2026-10-25. Daily check verdicts from /proof. Notes are from the SillyTavern run on 2026-10-18.
GLM-5.3 Flash Uncensored is the lowest-priced row at $0.0549 per 100 messages, so $10 covers about 18,227 of them. Roleplay Uncensored replied at once in SillyTavern on 2026-10-18, with no thinking step, which matters on a phone where you watch the reply arrive. A model that thinks before it answers needs Max tokens at 1,000 or more, or the reply stops mid-sentence. Which build fits which chat is in the best AI for roleplay post, and Roleplay Uncensored has its own page.
Once a UTC day, every model on the key gets the same fixed test prompt. At the last check (Oct 25 UTC), all 7 builds it has reached were stable. The results are public on the real-model check.
Best uncensored LLM for Android mobile RP: which setup
- Janitor AI if you want the character library and a one-field switch between models. Four fields, one refresh.
- Chub AI if your cards are already there. Two fields in Secrets, the model id in Configuration.
- SillyTavern in Termux if you want your own presets, lorebooks and chat files on the phone. Six commands once, then the same three connection fields as on a desktop.
- The model is the same choice on all three: GLM-5.3 Flash Uncensored, Roleplay Uncensored, DeepSeek V4.1 Flash Abliterated, DeepSeek V4 Pro Uncensored, Chat Uncensored, Gemma 31B Heretic Uncensored and QwQ 32B Uncensored answer any of them by id.
When a reply does not come through
- Janitor still reads using janitor. The configuration was saved but the page was not refreshed. Refresh, then send again.
- 401. The key is missing, mistyped or revoked. Copy it again from the console. Pasting on a phone can pick up a trailing space; delete it.
- 402. The prepaid balance ran out. Replies work again after a top-up.
- 403. The key is narrowed to a list of models and the Model field names another one. Add the model to the key in the console, or change the field.
- 429. Too many requests in a short time for the key, or the model is busy. Wait a few seconds and send again.
- The reply stops mid-sentence. A model that thinks first spent the Max tokens budget before it finished. Set it to 1,000 or more.
- Chub returns an empty reply. Switch the proxy URL between the base form and the full form and save Secrets again.
- SillyTavern does not open at 127.0.0.1:8000. Termux was closed or the phone put it to sleep. Reopen Termux and run
bash start.shfrom~/SillyTavernagain.
Questions
Get a key: prepaid from $10, no subscription, 30-day price lock.