Code App for iPad: a Monaco-based editor with local Python, Node, PHP and Java runtimes
Building a full-fledged code editor for iPad
At a glance
- What is it?
- Code App is an open source iPad editor built around monaco-editor with native Swift and embedded language runtimes. It is for people who want to write and run code on an iPad without a remote server, and it is not a desktop replacement.
- Who is it for?
- Adopt Code App if you want a real editor with local runtimes on an iPad, and you accept the App Store distribution and the repository's own build steps. Do not adopt it if you need a Linux shell, Docker, or a workflow that depends on extensions from the VS Code marketplace, because the README lists neither.
- 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 15 days ago.
- What is it written in?
- Mainly Swift, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The problem Code App addresses on iPad
An iPad has no terminal by default, no package manager, and no way to run a compiler unless an app ships one. The usual workaround is a remote machine: SSH into a server or open a browser-based IDE. That works until the network does not, and it makes the iPad a thin client for hardware somewhere else.
Code App takes the other route. The README describes it as bringing a "desktop-like editing experience to iPad", and the repository's stated plan is to use VS Code as a design template while providing key functionality with monaco-editor and native code. The audience is narrow and specific: developers who already own an iPad and want to write, run and commit code on it without a server. If you are happy with a laptop, this project is not aimed at you.
Monaco in a SwiftUI shell, with runtimes compiled in
The architecture visible in the repository splits into layers. The UI is Swift and SwiftUI: Code.xcodeproj contains a CodeUI target, and the README tells you to switch to it if you want to run on a simulator. The editing surface is monaco-editor, the same editor component that runs inside VS Code, embedded in a web view and bridged to native code.
Around that, the repository carries the pieces that make it more than a text field. SwiftGit2 is vendored for Git, SwiftWS for SSH, and commandDictionary.plist plus extraCommandsDictionary.plist define the terminal's command set, which the README puts at "70+ commands available". Language support is not installed at runtime; the runtimes are built in. The README names the versions and the upstream repositories they come from: Python 3.9.2, Clang 14.0.0, PHP 8.3.2, Node.js 18.19.0 and OpenJDK 8. The plan also lists LSP support, marked complete, for Python and Java only.
That list is the whole story of the app's capabilities. There is no plugin marketplace, no way to add a runtime the maintainers did not compile in, and no extension system described in the README. What ships is what you get.
Installing Code App and running your first script
The README points to two distribution channels: the App Store and a TestFlight build, both linked from the top of the file. There is no mention of a sideloaded IPA or an alternative store, so the App Store listing is the supported path for normal users.
To build the project yourself, the README gives four steps. The first fetches the source:
git clone https://github.com/thebaselab/codeappThe second pulls the prebuilt frameworks the app depends on. This is a shell script at the repository root, and it is the step most likely to fail on a slow connection because it downloads the language runtimes:
./downloadFrameworks.shAfter that, open Code.xcodeproj in Xcode. The README notes that you should switch to the CodeUI target if you want to run the app on a simulator, then click build. There is no documented CI path, no fastlane lane described in the README, and no stated minimum Xcode version, even though a fastlane directory exists in the repository.
For a first real use, the flow the README implies is: create a file, write code, and run it against one of the embedded runtimes. A Python file exercises the built-in Python 3.9.2 interpreter, and a C file exercises Clang 14.0.0 through WebAssembly. The README does not document the exact run command or the UI affordance for it, so plan to discover that in the app rather than from the repository.
Where Code App stops being the right tool
The embedded runtimes are old, and that is a deliberate constraint rather than an oversight. Python 3.9.2 and Node.js 18.19.0 are the versions the README names. Code written against a current Python or Node release may not run, and there is no documented upgrade path short of the maintainers rebuilding the frameworks. The README does not say how often those runtimes are refreshed.
LSP support is listed for Python and Java only. If you want completion and diagnostics for TypeScript, Go or Rust, the plan does not claim them, and the repository has no extension mechanism to add them.
The bigger boundary is the platform itself. Everything runs inside an iOS app sandbox. There is no Docker, no system package manager, and no way to install a native binary that the app did not ship. Workflows that need a real Linux userland, background daemons, or a database server are out of scope. For those, a remote host over SSH is the honest answer, and Code App's own SSH support is what you would use to reach it.
How this differs from a browser IDE like Replit
Replit and similar browser-based environments run your code on remote infrastructure. Your iPad is a terminal into someone else's machine, which means your project keeps running when you close the lid, but also that you need a connection and your code lives on their servers.
Code App inverts both properties. Execution happens on the device, so it works offline, and the files stay in the app's storage. The cost is capability: you get the five runtimes the README lists and the 70+ terminal commands in commandDictionary.plist, and nothing else. Replit can give you a container with arbitrary dependencies. Code App cannot, because the sandbox does not allow it.
The comparison that matters is not which is more capable. It is whether your work fits inside the runtimes Code App ships. A Python script, a PHP page, a small Java program or a C exercise does. A project with a Postgres dependency does not.
Maintenance, licence and what an upgrade costs
The repository is not archived, and the last push was on 2026-09-15. Releases are spaced out: 1.12.0 in March 2026, 1.12.1 later that month, and 1.12.2 at the end of July 2026. That cadence suggests a small team shipping when there is something to ship, not a continuous release train.
Upgrade cost depends on how you use it. If you install from the App Store, updates arrive through the store and cost you nothing but the risk that a runtime version changes under you. If you build from source, you are tied to the Xcode project and to downloadFrameworks.sh, and each rebuild means re-fetching those frameworks. The README does not document rollback, and it does not state a minimum Xcode version, so a build that worked last year is not guaranteed to work now.
The licence is MIT. That permits commercial use and modification, and it comes with no warranty. If you fork and redistribute, the MIT terms apply to the code in this repository; the embedded runtimes come from separate upstream repositories with their own licences, and the README links to each of them. Check those before shipping anything, because the licence of the app's own source does not automatically cover the binaries it bundles.
Editorial conclusion
Adopt Code App if you want a real editor with local runtimes on an iPad, and you accept the App Store distribution and the repository's own build steps. Do not adopt it if you need a Linux shell, Docker, or a workflow that depends on extensions from the VS Code marketplace, because the README lists neither. Before committing, verify on your own iPad that the language runtime you need is among those the README names, and check that the LSP support covers it, since the plan lists LSP only for Python and Java.
Frequently asked questions
What is Code App for iPad used for?
It is a code editor for iPad that runs code locally. The README lists version control, an embedded terminal with 70+ commands, local Node and PHP, a built-in Python runtime, C/C++ through WebAssembly with clang, local Java, SSH and LSP support for Python and Java.
How do I get Code App?
The README links to the App Store and to TestFlight at the top of the file. The source is also on GitHub, and the README gives build steps for it.
How do I build Code App from source?
Clone https://github.com/thebaselab/codeapp, run ./downloadFrameworks.sh, open Code.xcodeproj, switch to the CodeUI target if you want to run on a simulator, and click build.
Which language runtimes does Code App include?
The README names Python 3.9.2, Clang 14.0.0, PHP 8.3.2, Node.js 18.19.0 and OpenJDK 8, each linked to an upstream repository. LSP support is listed for Python and Java.
Is Code App the same as Microsoft Power Apps or App Inventor?
No. Code App is an iPad code editor from thebaselab, built on monaco-editor and Swift. Power Apps and App Inventor are unrelated products that share part of the name.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/thebaselab-codeapp)