简体中文 | English
A local-first AI role-playing chat client for Android.
Supports character cards, lorebooks, one-on-one chats, group chats, long-term summary memory, prompt inspection, and multiple LLM APIs.
Overview · Screenshots · Features · Quick Start · Contributing
RPClient is built with Kotlin and Jetpack Compose to provide a complete and controllable AI role-playing experience on Android devices. Chat histories, characters, lorebooks, and app settings are stored locally by default, while model requests are sent directly to the model service selected by the user.
The project draws on SillyTavern's ecosystem for character cards, lorebooks, prompts, and Regex scripts, and provides corresponding import, export, and compatibility features. RPClient is not an Android port of SillyTavern, and some advanced fields and runtime behaviors may differ.
Warning
This project is still under development. Data structures, the user interface, and compatibility behavior may continue to change. Keep the original files when importing important character cards, lorebooks, or Regex scripts, and back up your data regularly.
Home, chat, story editor, and settings screens with a custom background and translucent styling.
- One-on-one character chats and multi-character group chats
- Streaming responses, stop generation, regenerate, and continue generation
- Impersonate generation from the user's perspective
- Create conversation branches from a selected message
- Markdown message rendering and collapsible reasoning content
- Automatic or manual long-term summary memory generation
- Per-chat lorebook entry selection
- Create, edit, search, and manage characters
- Import Character Card V1/V2 JSON and PNG character cards
- Export Character Card V2 JSON or PNG files with embedded metadata
- Character avatars, multiple greetings, example dialogues, and extension fields
- Create, edit, import, and export SillyTavern-style lorebooks
- Keyword scanning, recursive activation, probability, priority, depth, Token budget, and other settings
- OpenAI Responses API (native protocol; integration notes)
- OpenAI Compatible API (Chat Completions)
- Google Gemini API
- Anthropic Messages API
- Built-in configuration templates for ChatGPT, Gemini, Claude, DeepSeek, Grok, and OpenRouter
- Custom service URLs, models, request headers, and generation parameters
- Prompt presets, macro expansion, and protocol-specific message post-processing
- Prompt Inspector for reviewing final messages, Token budgets, lorebook matches, Regex processing, and omitted content
- Debug mode for locally recording and viewing raw request and response JSON
- Continuous manuscript editor with debounced local autosave and revision conflict protection
- End-of-document continuation with persistent per-chapter guidance and multi-step session undo/redo
- Story Memory, Author's Note, per-story character activation, lorebook matching, and Prompt Inspector
- Streaming generation with stop, recoverable partial output, and multi-step session undo/redo
- TXT/Markdown import and export, plus portable
.rpstory.jsonarchives
- Compatible with commonly used SillyTavern Regex script JSON
- Global and Character scopes
- Source, Markdown, and Prompt execution modes
- Script ordering, duplication, testing, import, and export
- Scripts embedded in character cards are not automatically granted permission to run
- Local-first data storage
- Material 3 and dynamic colors
- User interface available in Simplified Chinese, Traditional Chinese, English, Japanese, Korean, German, French, Russian, Portuguese (Brazil), Italian, Vietnamese, and Indonesian
- Android 8.0 (API 26) or later
- Install and open RPClient (available on Google Play, F-Droid, or GitHub Releases).
- Go to "Settings > Model Configurations" and select an existing template or create a new configuration.
- Enter the API key, model name, and service URL. Test the connection, then enable the configuration.
- Create a character or import an existing JSON/PNG character card.
- Import lorebooks and associate them with characters as needed.
- Create a one-on-one chat or group chat, or open "Story Writing" to create a continuous manuscript.
API keys are stored only on the device, but they are sent to the configured model service with model requests. Only use API endpoints and proxy services that you trust.
AI-assisted changes must start from doc/coding-guidelines.md. The guide is tailored for RPClient's Feature + MVI structure, Room data layer, Koin/Kotpref usage, and domain rules for character cards, lorebooks, prompts, Regex scripts, LLM requests, and request logs.
Read only the relevant topic guides for the task before editing code, then run the smallest verification that matches the risk of the change.
Issues and pull requests are welcome. Before making changes, please review the AI Coding Guide when using AI-assisted coding.
Before submitting code, please ensure that the project can at least be built successfully.
When reporting compatibility issues, include sanitized character cards, lorebooks, or Regex JSON where possible, along with the API protocol, model name, and reproduction steps. Do not disclose API keys, private conversations, or character resources without authorization in an issue.
- RPClient does not provide model services. Users are responsible for API usage fees and generated content.
- Request content is sent to the model service selected by the user. Review the service provider's privacy policy before use.
- Token usage statistics are stored locally as metadata and may be estimated; they are not billing statements and do not contain request or response bodies.
- This project is not affiliated with or officially partnered with SillyTavern, OpenAI, Google, Anthropic, DeepSeek, xAI, or OpenRouter.
- Copyright and usage permissions for character cards, lorebooks, and other imported content are the responsibility of their providers and users.
- GitHub: KafuuNeko/RPClient
- Discord: Join the community
- Email: kafuuneko@gmail.com







