English · 简体中文
A local-first Android AI writing tool built for long-form fiction
Let AI offer possibilities. Let the author decide the soul of the story.
Azure Waters Promise (绀海之约) is an Android app for writing long-form fiction.
It is a lightweight AI novel-writing tool inspired by SillyTavern-style context management. It was made for one very practical reason: to write a few lines of your own story while slacking off at work.
This is not just another chat wrapper, and AI is never allowed to silently rewrite your manuscript. Novels, chapters, lore, summaries, candidates, and generation history are built around local storage. AI output first becomes a candidate; it enters the actual story only after you review, edit, and accept it.
The manuscript belongs to the author. AI only brings new possibilities.
| What you may care about | How the app handles it |
|---|---|
| Can AI overwrite my manuscript? | No. Model output becomes a candidate and is appended only after you accept it. |
| How does a long story keep its continuity? | Through story memories, presets, lorebooks, and layered summaries. |
| How can I compare multiple generations? | Candidates can be switched, edited, regenerated, deleted individually, or cleared as a group. |
| Can model reasoning leak into the novel? | No. Reasoning and final content are displayed and stored separately. |
| Can I see what is actually sent? | Every generation can be inspected before sending, including memory order, messages, and the redacted request. |
| Where is my writing stored? | Project data is stored locally on the Android device first. |
| What if I change phones or make a mistake? | Password-protected full backups, restoration, and pre-restore rollback are supported. |
- Manage multiple works from a top-level bookshelf.
- Each book has its own chapters, models, lore, summaries, history, and assistant conversation.
- Pick a cover from the system gallery, then drag and pinch to crop it to a fixed 2:3 ratio.
- Continuous manuscript text is saved automatically on the device.
- Chapter details stay collapsed by default, leaving more room for the story.
- Create, reorder, recycle, and restore chapters.
- Keep the manuscript visible and editable when the mobile keyboard opens.
- Describe the direction of the next passage and inspect exactly what the model will receive.
- Stream body-text or summary candidates.
- Switch between candidates, edit them, regenerate them, or delete them.
- Content enters the manuscript only after you explicitly accept it.
- If generation is stopped or the connection breaks, partial content can still be preserved and used.
- Choose which chapters and summaries will participate in the next generation.
- Use presets and lorebooks to maintain writing rules, character information, and worldbuilding.
- Summaries track their sources and ask to be refreshed when the source text changes.
- Global inspiration material is never sent unless it is copied into the current work and explicitly enabled.
- Each work has one persistent, independent creative conversation.
- Discuss character motivation, narrative conflict, and possible directions.
- The assistant cannot silently edit the manuscript or carry model reasoning into the next turn.
- Review story memory, final messages, and the full redacted request before sending.
- Revisit model drafts, author edits, candidate states, and actual usage in the creative history.
- See context usage as a simple progress ring; exact Token values appear only after tapping it.
- Safely undo accepted text when possible while keeping the historical trail intact.
Bookshelf → Edit Manuscript → Describe This Direction → Review Before Sending → Compare Candidates → Edit and Accept → Keep the Creative Trail
If a result does not fit, regenerate it, delete it, or return to the prompt and adjust the direction. Unaccepted content never slips into the manuscript.
The current app interface is in Simplified Chinese. Original button labels are included below for clarity.
- Open the app and tap “开始一个故事” (Start a Story) on the bookshelf.
- Name the story; its first chapter will be created automatically.
- Tap the photo button on the cover to choose and crop an image.
- You can write locally without configuring any AI model.
- Open a work, then enter “设置” (Settings).
- Choose a model provider.
- Enter the Base URL and API Key, then validate the connection.
- Select models for manuscript generation, summaries, and creative dialogue.
- Adjust temperature, maximum output, streaming, and reasoning strength as needed.
- Describe how you want the story to continue below the manuscript.
- Tap “检查并生成” (Review and Generate).
- Confirm story memory, outgoing messages, and model parameters.
- Browse and edit the candidates until one feels right.
- Tap “接受并追加” (Accept and Append) to add it to the end of the chapter.
Open “记忆” (Memory) to:
- Select the chapters and summaries needed for the next generation.
- Create a new story summary.
- Manage presets and lorebooks for the current work.
- Save reusable inspiration in the global material library.
Create a password-protected .ainovelbackup full backup from Settings. It can include works, covers, chapters, model configuration, candidates, history, and encrypted connection information.
Keep both the backup file and its password safe. The password is never uploaded and cannot be recovered by the app.
Expand the provider list
- DeepSeek
- OpenAI
- Anthropic Claude
- Google Gemini
- Kimi / Moonshot
- Alibaba Cloud Model Studio / Qwen
- Zhipu GLM
- MiniMax
- xAI
- OpenRouter
- SiliconFlow
- Generic OpenAI-compatible endpoints
- Generic Anthropic-compatible endpoints
Provider capabilities and API availability may change. Validate the connection with your own account, model, and network environment. If a provider does not expose a model list, you can enter a model ID manually and verify it with a low-cost real request.
“Local first” does not mean “fully offline.” Local writing does not require a network connection. When you explicitly generate with an online model, the content confirmed in the pre-send review is sent directly to your chosen model provider.
| Data | How it is handled |
|---|---|
| Novels, chapters, summaries, candidates, and history | Stored in the local database and app-private storage |
| API Keys | Protected using Android Keystore-backed encryption |
| Request history | Stored in redacted form without plaintext keys or authorization headers |
| Unaccepted candidates and model reasoning | Never added to the manuscript or later story memory |
| Global material | Never sent automatically; it must be copied into a work and explicitly enabled |
| Full backups | Authenticated encryption using a user-provided password |
Before using an online model, also review that provider’s privacy policy and data-retention rules.
| Layer | Technology |
|---|---|
| Client | Kotlin · Native Android |
| UI | Jetpack Compose · Material 3 |
| Local data | Room |
| Configuration | DataStore |
| Networking | OkHttp · Streaming responses |
| Key protection | Android Keystore · AES-GCM |
| Backup | Password-protected authenticated single-file backup |
| Minimum OS | Android 8.0 / API 26 |
Requirements:
- JDK 17 or later
- Android SDK 36
- A working Android build toolchain
Windows:
./gradlew.bat :app:assembleDebugmacOS / Linux:
./gradlew :app:assembleDebugBuild output:
app/build/outputs/apk/debug/app-debug.apkAzure Waters Promise