Open source · MIT · Android / Windows / macOS

Read them first,
then reply

Jev Chat Assistant is your chat copilot. It reads visible chats, judges intent and danger level, drafts replies, and fills the one you pick into the input box. Whether to send is up to you. Available for Android, Windows, and macOS.

Installers, setup guides, and platform links are on the GitHub project page. Choose the platform that fits you.

It only fills the reply into the input box. It never sends on its own and never touches transfers, red packets or payments. Where does my chat text go?

Demo animation: the other person writes “You just don't get me.” The Jev overlay rates it danger 8/9, high risk; their true intent is checking whether you care, so it suggests acknowledging the feeling and holding off on substance. It then shows three ranked replies. Tapping Fill on the first one puts it in the input box; you press send yourself.

04

Tap Fill and the reply lands in the input box. The send button stays untouched: whether and how to send is your call.

Demo animation with a simulated chat. The overlay is recreated from the app's source code; the app's own interface is in Chinese.

Works in

  • QQ
  • X (Twitter)
  • Feishu / Lark (OCR)
  • Any app (manual OCR)
  • Web (planned)

What is Jev Chat Assistant?

Jev Chat Assistant is an open-source AI chat companion with Android, Windows and macOS versions. It helps you analyze messages, interpret intent and draft reply options. You review the wording and decide whether to send.

Who it is for
Individuals who want help choosing words, interpreting conversational tone or drafting a reply. Its assessments are suggestions, not certain conclusions.
Platforms and feature scope
Each platform is maintained separately. Accessibility capture, ML Kit OCR, permissions and chat-app compatibility on this page describe the Android version. See each desktop project for its own capabilities.
Costs and requirements
The Android project is free and open source under MIT. Model calls use your own API key and may incur provider charges. Desktop licenses and requirements are documented in their respective projects.

Project publisher: Finderchangchang. Find packages, platform documentation and updates on the GitHub project homepage.

01Read first

The same “k” can mean opposite things

Most assistants hand you a paragraph right away. Jev first works out what the message actually is, then decides how to answer.

Before

Working late tonight, home a bit later

k

Danger 2/9Safe

True intentjust chatting

Needs: nothing

Before

I forgot our anniversary. I'll make it up tomorrow

k

Danger 7/9Risky

True intentchecking whether you care

Needs an apology · Apologize first

Demo scenario; the chats are simulated.

Jev's decision model doesn't write. It picks from fixed options.

One request asks seven questions: true intent, danger level (0–9), what they need, whether to reply with substance now, what to do next and more. Every answer comes with probabilities and a confidence score, in about a second. A separate text model writes the replies.

  1. Choice

    True intent

    Checking you care · Venting · Asking for action · Wants an explanation · Casual chat · Topic closed

  2. Score

    Danger level

    0 is light chat, 9 is an open rupture; the overlay labels it safe, careful, risky or high risk

  3. Choice

    What they need

    An apology · Action · An explanation · Your care · Nothing

  4. Yes / no

    Reply with substance now?

    Should the next line carry real content; the overlay shows “give substance” or “hold off on substance”

  5. Choice

    What to do next

    Check the history · Apologize · Commit · Explain · Acknowledge · Say less · Make a plan

  6. Yes / no

    Any subtext?

    Meant literally, or a test, sarcasm or a hint

  7. Yes / no

    Tension resolved?

    They accepted and are joking again, or still waiting on you

Compared with other approaches

They all “help you reply.” The differences: how much they can read, whether they judge first, and who presses send.

Compared with other approaches
Capability Jev Chat Assistant Keyboard or in-app AI replies General chatbots (copy and paste) Auto-reply bots
Judges before writingYesNoPartlyNo
Reads any chat appYesPartlyNoPartly
Non-invasive, no client changesYesYesYesNo
You press sendYesYesYesNo
Notes + contact contextYesNoPartlyPartly
Pick your own API and modelYesNoNoPartly
Open source and freeYesNoNoPartly

Based on the common, publicly available forms of each approach, not on any specific product.

Next: how it works

02How it works

From a message on screen to a line in your input box

Only these steps in between. Solid steps run on your phone; dashed ones go to the endpoints you configure yourself.

On your phoneSent to your configured API

  1. 1

    Read the screen

    The accessibility service reads the open chat; if the text isn't there, it takes a screenshot and runs offline OCR

  2. 2

    Jev judges

    Intent · danger level 0–9 · reply with substance now or not

  3. 3

    A text model drafts

    Three casual replies: a safe follow-up, one with an action or commitment, and a short response. DeepSeek via OpenRouter by default

  4. 4

    Jev ranks

    Reorders them by fit and shows probabilities

  5. 5

    Overlay shows

    The read plus three replies, right next to the chat

  6. 6

    Copy / fill

    Never sends. You press send.

Notes and contact context

Keep notes and contact profiles (relationship, aliases, notes) on the phone. Pinned notes go with every request; the rest are picked up when their tags or titles match the current chat. Turn on history and the person's recent messages come along too. Replies are prompted to stay consistent with your notes and not to make up facts outside them. A contact can be linked across apps.

OCR when text is missing

When the accessibility tree has no message text, it takes a screenshot and runs ML Kit's offline Chinese OCR. No image is uploaded and no Google services are needed. In any app you can also trigger a one-off screen OCR from the floating-bubble menu.

Bring your own endpoints

Set the URL, key and model separately for the judge, reply and vision endpoints. Presets for OpenRouter, Bocha Jev, TypeSafe direct, DeepSeek official and Qwen-compatible APIs, each with a one-tap connection test. One OpenRouter key is enough to start.

One core, many apps

Judging, drafting, ranking and filling share one core. Supporting a new app takes one adapter of a few dozen lines; everything else is reused.

Next: where your chat text goes

03Your data

It reads your chats, so here is exactly what happens

This is not a “collects nothing” app. Chat text does go to a model endpoint, but you are the one who sets that address. Everything else stays on your phone.

Your phone

  • Reads the chat on screen
  • Screenshots OCR'd on device, never uploaded
  • Keys, notes and history (off by default) stay local

The model endpoint you configured

OpenRouter · Bocha Jev · TypeSafe · DeepSeek · Qwen · any OpenAI-compatible URL

The author's server

Not in the loop: the author runs no server and never handles your chats

What it reads
Only the conversation on screen, through Android's accessibility service. It doesn't modify any app's package, doesn't use their APIs or accounts, and doesn't read databases. You can limit it to an allowlist of chats, or turn off auto-analysis so it only reads when you tap.
Where it goes
Only at the moment of judging, and only to the endpoint you configured. The author runs no server and never handles your chats. What the provider does with the data is governed by its own privacy policy.
Where it's stored
Keys live only in the app's private storage. Chat text isn't written to disk or logs after sending. History is off by default and stays on the phone if you turn it on. OCR uses ML Kit's offline Chinese model; images are never uploaded.
How to delete
In Settings, “清空知识库与历史” (clear notes and history) removes them in one tap. Uninstalling wipes everything, including keys and settings. There is no cloud backup.
What it never does
It never sends messages on its own, never touches transfers, red packets or payments, and has no ads and no third-party analytics SDKs.
Full privacy policy (Chinese, with an English summary)

Every point can be checked against the source code on GitHub.

04Supported apps

Where it works today

Based on real-device tests; version numbers are the ones tested.

Androidv1.4

AppStatusNotes
QQ AndroidFull flowTested on 9.3.50
X / Twitter DMsFull flowTested on 12.25, Chinese interface
Feishu / LarkOCR fallbackVerified on a real device; message text via offline OCR
Any other appManualOne-off screen OCR from the bubble menu
WebPlannedNo web version yet
iOSNot yet—

05Get started

Get Jev for your platform

Choose the platform that fits you. Find installers, setup guides, and updates on the GitHub project page.

Androidv1.4

A chat copilot on your phone: reads messages, drafts replies, and fills the one you pick into the input box.

Android 11+ · arm64-v8a

Get Jev on GitHub

Windowsv0.1.11

Captures your own chat window and runs OCR locally. No client changes, no database reads.

Windows 10 1903+ / 11

Get Jev on GitHub

macOSv0.6.0

Watches the screen and uses a small local model to judge intent and risk level, then drafts replies in a chosen style and ranks them locally.

Apple Silicon · macOS 13+

Get Jev on GitHub

If Jev helps you, consider starring the GitHub project to support its maintenance. 6.7k Star

Android setup

  1. 1

    Install

    Get the APK from the GitHub project page and install it. Android 11+, arm64-v8a devices only. Or use adb:

    adb install -r jev-assistant-v1.4-release.apk
    Get Jev on GitHub

    After upgrading from an older version, switch accessibility off and on again in system settings so the service rebinds.

  2. 2

    Add a key

    Settings → 接口 (Endpoints) → put an OpenRouter API key in the judge endpoint. Leave the others blank and they inherit it. Each endpoint has a one-tap connection test.

    The judge endpoint also has a “Bocha Jev” preset, free for a limited time; get a key at jev.bocha.cn.

  3. 3

    Grant permissions

    Accessibility, display over other apps, autostart and unrestricted battery. On Xiaomi / HyperOS the last two are a must, or the bubble gets frozen.

    • Accessibility service
    • Display over other apps
    • Autostart + unrestricted battery

Setup guide · Community and updates on GitHub

Practical guides

Setup steps and examples you can refer to when using the project.

06FAQ

Before you install

Will it send messages for me?

No. It only fills the reply into the input box. It never sends anything on its own and never touches transfers, red packets or payments. Whether to send, and what to change first, is your call.

Is my chat uploaded?

Only at the moment of judging: the recent messages on screen and your relationship note go to the endpoint you configured (plus matched notes and contact notes if the knowledge base is on, and this person's recent history if history is on). Nothing is written to disk or logs afterwards, and the author runs no server and never handles it. Keys live only in the app's private storage. History is off by default and stays on the phone if you turn it on. OCR uses ML Kit's offline Chinese model; images are never uploaded. Full privacy policy (Chinese, with an English summary)

Which API keys do I need?

One OpenRouter API key is enough: put it in the judge endpoint and leave the reply and vision endpoints blank to inherit it. You can also set all three separately, with presets for OpenRouter, Bocha Jev, TypeSafe direct, DeepSeek official and Qwen-compatible APIs, each with a one-tap connection test. The Bocha Jev preset for the judge endpoint is free for a limited time; keys are at jev.bocha.cn.

Does it cost anything?

The app is free and open source. Model calls use your own API keys and are billed by the provider for what you use; the project never handles any money.

Do I need root?

No root and no modules. It is non-invasive: it only reads the conversation on screen, doesn't modify any app's package, and doesn't use their APIs or accounts.

iOS or desktop?

No iOS for now. The GitHub project page lists Android, Windows, and macOS; each platform is maintained independently. A web version is planned but doesn't exist yet.

The bubble disappeared, or it can't read messages?

Usually the Android skin froze the app in the background. Check that accessibility, display over other apps, autostart and unrestricted battery are all on, especially the last two on Xiaomi / HyperOS. Reinstalling resets the overlay permission, so turn it on again from the home-screen guide. Tapping anywhere in the chat usually brings it back.

Nothing happens after an upgrade?

Switch accessibility off and on again in system settings. Version 1.3 added screen capture, and the service has to rebind before it works.

Didn't find your answer? Open an issue or find community options on GitHub.

07Contact

Questions, ideas, or an app you want supported

Community and updates

Find the Chinese official account and group chat on the GitHub project page, where group QR codes are updated.

Community and updates on GitHub

GitHub Issues

Bugs, an app it can't read, requests for a new app: Issues keep them trackable.

Open an issue

Choose your platform for your next chat copilot

Open source, MIT · Android v1.4 · Windows v0.1.11 · macOS v0.6.0