ModelEngine-Group/app-platform: a Java low-code runtime for LLM applications
AppPlatform 是一个前沿的大模型应用工程,旨在通过集成的声明式编程和低代码配置工具,简化和优化大模型的训练与推理应用的开发过程。本工程为软件工程师和产品经理提供一个强大的、可扩展的环境,以支持从概念到部署的全流程 AI 应用开发。
At a glance
- What is it?
- AppPlatform is an MIT-licensed Java project that combines a FIT-based plugin backend, a Waterflow execution engine and a React/Elsa visual editor so teams can build, debug and publish LLM applications without writing the orchestration layer by hand. It is not DigitalOcean App Platform, and the name collision will send you to the wrong docs.
- Who is it for?
- Adopt AppPlatform if you are a Java team that already runs FIT and wants an orchestration layer for agents, RAG and form-driven inference rather than a Python notebook stack. Do not adopt it if you need a one-command install with no framework coupling, or if your operators cannot run Postgres 14 or newer.
- 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 1 day ago.
- What is it written in?
- Mainly Java, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What AppPlatform actually solves for LLM application teams
The problem the README names is the gap between a model and a working application. A team has a model endpoint, a prompt, maybe a retrieval index, and then has to hand-write the glue: which node runs first, how the output of one step becomes the input of the next, how a product manager edits a form without touching Java. AppPlatform targets that glue layer. The README describes the audience as software engineers and product managers, and the split is visible in the architecture: the backend is Java and plugin-based, the frontend is React and visual.
The design choice worth noting is that an application is not necessarily a chat UI. The README states that in AppPlatform an AI application can be a function, a RAG pipeline or an agent, and that these components appear in a Store as tools whose metadata lets an agent schedule them automatically. That reframes the unit of work: you are publishing callable components, not screens. If your mental model is a chat product with a settings page, this is a different abstraction and you will spend time adjusting.
FIT plugins, Waterflow execution and the Elsa canvas
The backend rests on the FIT framework and runs application flows on Waterflow, both from the same ModelEngine-Group organisation. FIT is what makes the plugin model work: the README says the backend starts through FIT dynamic plugins, and that the application management module handles create, manage, debug, run and maintain, while the extension module supplies the component nodes that flows are assembled from.
That has a concrete consequence for anyone compiling from source. The repository states that app-platform extends several tool mechanisms that already exist in FIT, and that if the framework output directory still contains plugins whose names begin with fel-tool-discoverer, fel-tool-executor, fel-tool-repository-simple or fel-tool-factory-repository, startup fails on a conflict. You delete those four from the framework's plugins directory before combining the two builds. It is an unusual step to document, and it tells you the coupling between the two projects is tight rather than incidental.
The frontend uses React with function components. Flow editing is built on Elsa, described in the README as a graphics engine written in native JS that uses a unified data format so graphs can be displayed and collaborated on across platforms and applications. Smart forms are rendered from JSON Schema and wired to model services, so a form submission triggers inference. The Store template underneath holds applications for reuse across projects.
Installing AppPlatform with Docker Compose and opening the first app
The README's quick start assumes Docker and Docker Compose, an x86 CPU with 2 or more cores, and 4 GB of memory or more. It says pulling images and starting services takes roughly three minutes. Clone the repository, enter its root, copy the environment template and run the deploy script:
cp docker/.env.example docker/.env
bash docker/deploy.shThe .env file is where you set model name, base URL and API key before the containers come up, so edit it before running the script rather than after. When every container reports Running, the README points you at http://localhost:8001 in a browser. If you change the database password, the README notes that the docker/app-platform-tmp directory must be deleted before starting again, because the previous initialisation is cached there.
For day-to-day backend work the loop is a full Maven build, then a redeploy script:
mvn clean install
bash docker/dev-app-builder.shThe README gives the full build as about 2 minutes 30 seconds and the redeploy as about 3 minutes 30 seconds. Incremental builds run from the modified plugin directory and are quoted at around 10 seconds. Frontend work adds a one-time link step for agent-flow, then a production build and a much faster redeploy:
cd agent-flow
npm install --legacy-peer-deps --force --registry=https://registry.npmmirror.com
npm run build
npm link
cd -After that, frontend changes go through `cd frontend`, `npm run build:prod`, then `bash docker/dev-frontend.sh`, which the README puts at about 18 seconds. The registry flag points npm at the npmmirror mirror, which matters if you are not building from a network where the default registry is fast.
The source-build path assumes you already run FIT
Compiling without Docker is where the project stops being self-contained. You need Java 17, Maven 3.8.8 or newer, and a FIT framework build produced separately from the fit-framework repository. The README states that app-platform currently uses FIT 3.5.5, so a manual build requires checking out the v3.5.5 tag in fit-framework before building it. The Maven output lands in build/, and the README instructs you to copy the plugins and shared directories from that output into the framework's corresponding directories, then delete the four conflicting fel-tool plugin files described above.
Database setup is asymmetric. On Windows the README points at Postgres 14 or newer and a script under shell/ run with bash, passing host, port, username and password. It explicitly says cmd.exe is not supported yet. On Linux the README says the equivalent is still planned. So the documented source path is a Windows path, and Linux readers are told to wait. That is a real limitation, not a footnote.
Configuration then moves into conf/fitframework.yml, where the beans packages list must include modelengine.fitframework and modelengine.fit, and where you add a datasource block. The README's example uses a primary datasource named sample-datasource in shared mode with a jdbc:postgresql URL and a druid block carrying initialSize, minIdle and maxActive. A separate app-engine block takes resource.path and form.path-prefix pointing at the local smart form directory, with a Windows example of D:\\app-builder\\. Startup is `fit start` from the framework's bin directory, and `fit debug` attaches Java remote debugging so you can bind the port from IntelliJ IDEA.
Where AppPlatform is the wrong tool
The name is the first failure mode. Searching for app platform returns DigitalOcean App Platform, Azure App Platform and Power Apps results, and none of that documentation applies here. If you arrived from a search about deploying a container to a managed host, you are in the wrong repository entirely.
The second is the coupling. This is not a standalone service you install and point at a model. The source path requires a FIT build at a specific tag, manual copying of plugin and shared directories between two repositories, deletion of four named plugin files, and a YAML edit that references a local filesystem path for smart forms. A team without Java and Maven experience will spend more time on the build than on the application.
The third is platform support. Docker Compose is the documented path that works anywhere Docker runs on x86. The source path documents Windows for database initialisation and marks Linux as planned. If your team develops on macOS or Linux and wants to modify the backend rather than run the containers, the README does not describe that workflow.
Finally, the README does not document rollback of a published application, nor a migration path between AppPlatform versions. The release history shows v1.3.0, v1.3.1 and v1.3.2 between October 2025 and January 2026, and the last push to the repository was on 2026-08-26, so the codebase is moving, but upgrade instructions are not documented.
How this differs from LangChain-style Python orchestration
The obvious alternative for the same job is a Python orchestration library such as LangChain or LlamaIndex, where a flow is a Python file and a chain is composed in code. The difference is not language preference, it is where the graph lives. In a Python library the graph is your source code, versioned with it, reviewed in a pull request. In AppPlatform the graph is data produced by the Elsa canvas, stored through the Store template, and executed by Waterflow on the JVM.
That buys you the product-manager workflow the README describes: someone edits a node in a browser, and the change is a graph edit rather than a code change. It costs you the things a Python file gives for free. Diffing a visual graph, reviewing it in a pull request, or running it in a unit test are not described in the README. Plugin extension is also a different motion: the README says developers upload custom plugins to extend the platform, and that operators can develop nodes in Java or Python, so the extension surface is the plugin API rather than a decorator on a function. If your team already has a Python evaluation harness and CI around chain code, moving the graph into a visual editor means rebuilding that harness around the platform's own lifecycle.
Licence, maintenance and what an upgrade costs
The repository is MIT licensed, and the README carries the MIT badge. MIT is permissive: you can use, modify and redistribute the code, including in commercial products, provided the copyright notice and permission notice are retained. That is the general shape of the licence, not legal advice, and if you are embedding AppPlatform in a product you should read License.txt in the repository and get your own review. Note that the dependencies are separate works with their own terms, and the README points at FIT, Waterflow and Elsa as external repositories, so the licence of the platform does not automatically describe the licence of everything it pulls in.
Maintenance: the repository is not archived, and the last push was on 2026-08-26. The most recent release listed is v1.3.2 from 2026-01-29, with v1.3.1 in November 2025 and v1.3.0 in October 2025. The gap between the January release and the August push suggests work has continued on main without a tagged release in that window, but the release notes are the place to check before upgrading.
The upgrade cost is dominated by the FIT version pin. Because app-platform uses FIT 3.5.5 and because the four fel-tool plugins must not be present, moving to a newer FIT release means re-checking both the tag and the plugin directory contents. The Docker path hides this behind published images, which is the cheaper way to track upstream if you are not modifying the backend yourself.
Editorial conclusion
Adopt AppPlatform if you are a Java team that already runs FIT and wants an orchestration layer for agents, RAG and form-driven inference rather than a Python notebook stack. Do not adopt it if you need a one-command install with no framework coupling, or if your operators cannot run Postgres 14 or newer. Verify first that the FIT 3.5.5 tag builds cleanly on your machine and that the four fel-tool plugin jars are absent from your framework output directory, because a leftover copy will stop the process from starting.
Frequently asked questions
Is ModelEngine-Group/app-platform the same as DigitalOcean App Platform?
No. ModelEngine-Group/app-platform is a Java project for building LLM applications with declarative and low-code tooling, licensed under MIT. DigitalOcean App Platform is a managed hosting product and is unrelated.
How do I install ModelEngine-Group/app-platform?
The README's quick start clones the repository, copies docker/.env.example to docker/.env, and runs bash docker/deploy.sh. Once the containers are Running, the interface is at http://localhost:8001.
What are the hardware requirements for ModelEngine-Group/app-platform?
The README lists an x86 CPU with 2 or more cores, 4 GB of memory or more, and Docker with Docker Compose installed. It estimates that pulling images and starting services takes about three minutes.
Which Java version does ModelEngine-Group/app-platform need?
The README specifies JDK 17 and recommends Maven 3.8.8 or newer for the backend build. The frontend build uses node.js, and the badge in the README lists Node 20.
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/modelengine-group-app-platform)