RAMen
✦ On your phone ✦

RAMen on your phone.

Private AI that runs on the phone itself and remembers every chat. No account, no app store and no cloud: scan the code with your phone's camera to open it.

getramenai.com/app

  1. STEP 01

    Scan the code

    Point your phone's camera at it. RAMen opens in the browser, on iPhone and Android.

  2. STEP 02

    Download the model once

    Qwen3 0.6B, 397 MB, kept on the phone. After that RAMen works offline.

  3. STEP 03

    Keep it on your Home Screen

    On iPhone, tap Share in Safari, then Add to Home Screen. On Android, choose Install in Chrome. Every chat comes back with its memory.

✦ For app makers ✦

Make your app remember.

RAMen for Android puts llama.cpp with RAMen's memory inside your own app. After every answer the conversation's exact model state is saved on the phone, so when it comes back, even after Android closed your app, the model reads only the new message.

1. In settings.gradle.kts, inside dependencyResolutionManagement { repositories { ... } }:

exclusiveContent {
    forRepository { maven { url = uri("https://getramenai.com/maven") } }
    filter { includeGroup("com.getramenai") }
}

2. In app/build.gradle.kts (minSdk 29):

implementation("com.getramenai:ramen:0.9.0")

3. Hello world:

val ramen = Ramen.open(context, File(context.filesDir, "Qwen3-1.7B-Q4_K_M.gguf"))
ramen.reply(listOf(Message.user("Name three kinds of noodles.")), session = "chat-1") { r ->
    when (r) {
        is Reply.Text -> answer.append(r.text)
        is Reply.Done -> Log.i("app", "read ${r.readTokens} new tokens, memory: ${r.memory}")
        is Reply.Failed -> Log.e("app", r.message)
        is Reply.Started -> {}
    }
}

Send the whole conversation each time (system, user and assistant messages), as with the OpenAI API: RAMen keeps the part the model already holds, in memory or restored from its file, and reads only the rest. history(session) returns a conversation's saved messages, forget(session) deletes it, close() saves and frees the model's memory. Answers arrive on the main thread, one model and one answer at a time.

Inside: llama.cpp for arm64 phones and x86_64 emulators, one CPU build per processor generation (the best one is picked when your app starts), 16 KB pages, no permissions needed. Tested in a blank app with only these two snippets on an Android emulator: the conversation came back after Android closed the app, and the model read only the new message. This is a 0.9.0 preview; a Swift package for iPhone apps is next. Questions: support@getramenai.com.