Model or dataset
Chuloo/mural avatar
Chuloo/mural

Chuloo/mural: a native iPhone and Android language app you build yourself

The language app you eventually delete. A native iPhone companion for learning through conversation.

1,154 stars237 forksKotlinMIT

At a glance

What is it?
Mural is an open-source conversation-based language app for iPhone and Android. It compiles from source in Xcode or Gradle, connects straight to OpenAI with your own API key, and keeps learning records on the device, which also means the setup burden lands on you.
Who is it for?
Adopt Mural if you own a supported iPhone or an Android 8.0+ device, you are comfortable running Xcode or Gradle, and you already have an OpenAI API project with billing. Skip it if you want an App Store install, a hosted account, or a free way to learn: a ChatGPT subscription does not provide API credit, and there is no Mural account layer.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 16, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Chuloo/mural actually is, and who it is for

Mural is a native iPhone and Android app for learning through conversation. The README describes speaking to an animated orb, following meaning through optional subtitles, and practising words again in later conversations, with the challenge adjusting from evidence in your replies. The tagline is blunt about intent: "The language app you eventually delete."

The audience is narrow and specific. You need a Mac with Xcode 26 or later, an iPhone running iOS 26.1 or later, an Apple Account, and an OpenAI API project with billing and access to GPT-Live-1 and GPT-5.6 Luna. The README states plainly that a ChatGPT subscription does not provide API credit. On the Android side you need Java 17 and Android SDK 36, and the app runs on Android 8.0 or later.

This is not a product you download. It is a codebase you compile and sign yourself. The repository is MIT licensed, not archived, and the last push was on 2026-09-15, the same day as the v0.1.0-android-preview.7 release. That release cadence is worth reading carefully: the Android client is still labelled preview, while the iPhone client is the one the README walks through in detail.

The conversation loop: voice in, subtitles out, recall bars on top

The mechanism visible in the README is a live voice loop backed by your own OpenAI project. You speak, Mural replies with gentle corrections, and optional meaning subtitles appear when you need them. A typed reply is available when speaking is inconvenient, and word lookup sits alongside. The app connects directly to OpenAI using your API key, so the model call is not proxied through a Mural server. There is no Mural account, and the README says no running Mac is required after installation.

Learning state is derived rather than declared. Vocabulary and provisional ability observations come from validated conversation evidence, and each learning language keeps separate progress. The recall bars are the part most likely to be misread: one to three bars summarise repeated retrieval over time, and three bars require spaced evidence in different contexts. The README is explicit that these are product heuristics, not calibrated forgetting probabilities or a language certificate. Treat them as a nudge, not a score.

Themes are the other structural piece. There are 24 conversation settings, with cultural details supplied by each language module. You can also request a current topic, and the README says web search supplies source links. The Talk screen returns to its greeting 15 seconds after a conversation ends, and New conversation resets it immediately without discarding saved conversations or learning.

Installing Mural on an iPhone with Xcode

The repository layout matters here. The iPhone project now lives in apps/ios/, and the README warns that if you are updating an earlier checkout you should follow the local-settings migration steps in docs/run-on-iphone.md first, to preserve your signing team, account configuration and existing app identity.

Clone the repository, or download its ZIP, then open the Xcode project:

bash
git clone https://github.com/Chuloo/mural
open apps/ios/Mural.xcodeproj

In Xcode, add your Apple Account under Settings, then Accounts. Select the Mural target, open Signing & Capabilities, enable automatic signing and pick your team. For your own fork, replace the bundle identifier with a unique value such as com.yourname.mural, and keep it stable for later updates. Connect and unlock your iPhone, trust the Mac if prompted, then turn on Settings, Privacy & Security, Developer Mode on the phone, restart, and confirm.

Select Mural as the scheme and your iPhone as the destination, then click Run. If iOS asks you to trust the developer, do that under Settings, General, VPN & Device Management. In the welcome screens choose your learning and subtitle languages, then save your OpenAI project key under Settings, Advanced, Use your own API key. Start a conversation and allow microphone access. You should hear Mural greet you in your chosen language, and you can then disconnect the phone and use Wi-Fi or cellular.

The README also offers a second route: paste a prepared prompt into Codex or another coding agent with access to your Mac's files and terminal, and let it clone, build and install while you handle Apple Account sign-in, team selection, device trust and API-key entry. That prompt explicitly tells the agent not to ask you to paste the key into chat, read it from Keychain, or put it in source files or logs.

Building the Android preview with Gradle

The Android client lives in apps/android/ and is documented separately. Its interface is English, and Spanish on a phone set to Spanish. It supports voice and written conversation, the same eight language modules, local learning records, and iPhone-compatible JSON backups. The API key is stored with Android Keystore.

The README gives one build command for a personal-install APK, and it runs tests and lint before assembling:

bash
cd apps/android
./gradlew :app:testDebugUnitTest :app:lintDebug :app:assembleDebug

Run that with Java 17 and Android SDK 36 installed. The README points to docs/run-on-android.md for the installation and build guide, and to verification/android-validation.md for the Android verification record. Note the preview label on the recent releases: v0.1.0-android-preview.7 is described as an English conversation fix, arriving one day after preview 6. Frequent preview releases are a sign of active work, not of a frozen API.

Where Mural is the wrong tool

The cost model is the first real constraint. Mural does not ship a hosted backend, so every conversation is billed against your own OpenAI project. The README states that a ChatGPT subscription does not provide API credit, which means a paid ChatGPT plan buys you nothing here. If you are not prepared to set up API billing, the app has no useful mode.

Provisioning is the second constraint. A free Personal Team can run the app on your own phone, but the README notes that free provisioning profiles expire after seven days, and refreshing means running the same project again with the team and bundle identifier preserved. TestFlight and App Store distribution require Apple Developer Program membership. So the free path is a weekly rebuild ritual, and the convenient path costs a membership.

There is no server-side sync and no Mural account. Learning records stay on your device, and moving them means exporting a JSON learning backup. The README advises exporting a backup before changing your signing team or bundle identifier, or switching phones. If you want a shared classroom roster or a web dashboard, this is not that product. The recall bars also should not be used as evidence of proficiency: the README calls them product heuristics, not a language certificate.

How Mural differs from a whiteboard tool or a hosted language app

The name collides with Mural, the visual collaboration whiteboard, and that confusion is worth naming because search traffic for the two overlaps. They are unrelated. A whiteboard product is a browser-based canvas for teams to place sticky notes and diagrams on a shared board, with accounts, seats and a web login. Chuloo/mural is a native iOS and Android client with no account system, no web canvas and no shared board. If you arrived looking for how to use a mural board or how to use mural as a participant, you are in the wrong repository.

The closer comparison is a hosted language app with a subscription. Those give you an account, a server that stores your progress, and a monthly fee that covers model usage. Mural inverts each of those: you bring the API key, the progress stays in local storage, and the fee is whatever your OpenAI usage costs. The trade is control and data locality against setup effort and the absence of cross-device sync beyond a manual JSON export.

Within the repository, the iPhone and Android clients are also alternatives to each other. The iPhone client is the one the README documents step by step. The Android client is newer, labelled preview, and its interface is English with Spanish on a Spanish phone, against the iPhone client's language and subtitle selection screens. Backups are described as iPhone-compatible JSON, so the two are meant to interoperate at the data level even while the Android UI is still catching up.

Maintenance, licensing and what to verify before you commit

The licence is MIT, which is permissive and places few obligations on what you do with a fork. This is not legal advice, but the practical implication is that redistributing a modified build is permitted under the licence terms, and the repository ships a LICENSE file at the top level alongside CONTRIBUTING.md and SECURITY.md. If you plan to distribute, read those files rather than assuming.

Upgrade cost is dominated by toolchain churn, not by the code. The README pins the requirements at Xcode 26 or later, iOS 26.1 or later, and, for Android, Java 17 with Android SDK 36. When Apple or Google moves those baselines, you rebuild. The README also warns that updating an earlier checkout requires the local-settings migration steps so you do not lose your signing team and app identity, and that you should export a learning backup before changing the signing team or bundle identifier. Those two instructions are the ones most likely to be skipped and most likely to cost you data.

The Android side is the part to watch. Three preview releases landed between 2026-09-14 and 2026-09-15, and the most recent is described as an English conversation fix. Preview numbering plus a same-day fix suggests the surface is still moving. Before you rely on it, read verification/android-validation.md and docs/run-on-android.md, and run the Gradle test and lint tasks rather than only assembling.

Editorial conclusion

Adopt Mural if you own a supported iPhone or an Android 8.0+ device, you are comfortable running Xcode or Gradle, and you already have an OpenAI API project with billing. Skip it if you want an App Store install, a hosted account, or a free way to learn: a ChatGPT subscription does not provide API credit, and there is no Mural account layer. Before you start, confirm your toolchain versions (Xcode 26 or later, iOS 26.1 or later, Java 17 and Android SDK 36 for the Android build) and export a JSON learning backup before you change your signing team or bundle identifier.

Frequently asked questions

How do I install Chuloo/mural on an iPhone?

Clone the repository, open apps/ios/Mural.xcodeproj in Xcode 26 or later, add your Apple Account, and set automatic signing with your team on the Mural target. Connect an iPhone running iOS 26.1 or later, enable Developer Mode, select the Mural scheme and your device, then click Run. Afterwards choose your learning and subtitle languages and save your own OpenAI API key under Settings, Advanced, Use your own API key.

How do I use Chuloo/mural for the first time?

After installing, pick a learning language and a subtitle language in the welcome screens, then enter your OpenAI project key in Settings, Advanced, Use your own API key. Start a conversation and allow microphone access; the README says you should hear Mural greet you in your chosen language. From there you can use live voice, optional meaning subtitles, word lookup, or a typed reply.

Is Chuloo/mural the same as the Mural whiteboard app?

No. Chuloo/mural is a native iPhone and Android app for learning through conversation, built with SwiftUI on iPhone and Jetpack Compose on Android. It has no account system, no web canvas and no shared board, so instructions for using a mural board or joining a board as a participant do not apply here.

How do I use Chuloo/mural as a participant?

There is no participant role in Chuloo/mural. The app has no account system and no shared board, so the only user is the person who installed it on their own phone with their own OpenAI API key. If you are looking for a participant view on a shared canvas, that belongs to a different product with the same name.

Official sources

  1. Chuloo/mural on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Community notes

Community notes