Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

English  |  中文


Erupt

ERUPT

MODEL-DRIVEN ENGINE FOR ENTERPRISE APPLICATIONS · AI HARNESS

make the model your single source of truth · built at runtime, not generated · zero front-end · 9 languages · 50+ LLM · MCP · A2A

maven-central java license stars release build coverage docker-pulls gitee

[ WEBSITE ]   [ LIVE DEMO ]   [ START PROJECT ]   [ AI SKILL ]   [ DOCS ]


Erupt · Model-Driven Engine for Enterprise Applications · AI Harness


00 · THE IDEA

Make the model your single source of truth. Describe a business object once — its fields, types, relations and rules — and Erupt builds the rest of the system from it at runtime. Nothing is generated, so nothing drifts: change the model, and the UI, APIs, permissions and data layer change with it, instantly.

              ┌──────────────────────────────────────────┐
              │ Task                              model  │
              │ title  · text      priority · choice     │
              │ due    · date      owner    · → User     │
              └─────────────────────┬────────────────────┘
                                    │   read at runtime — nothing is generated
      ┌───────────┬───────────┬─────┴─────┬───────────┬───────────┐
      ▼           ▼           ▼           ▼           ▼           ▼
   Admin UI    REST API      RBAC        Data       Audit      AI Agent
   9 views     OpenAPI    row · col   15 sources   revision      MCP
WHAT THE MODEL BUILDSWHAT YOU NO LONGER WRITE
TABLE · FORM — 30+ field componentshtml · js · css
SEARCH · SORT · PAGEquery code
REST · OPENAPI — permission-awareController
DATAPROXY — lifecycle hooksService
AUTO DDLDDL · Mapper
RBAC — menu · row · column · buttonpermission code
ROW ACTIONS — with forms and confirmaction endpoints
EXCEL I/OPOI glue
9 VIEWS — table · gantt · board · calendar · timeline · map · card …custom pages
REVISION — field-level history, rollbackhistory tables
I18N*.properties
AI TOOLS · MCP — every model is agent-operabletool glue

01 · WHY ERUPT

RUNTIME, NOT CODEGENThe model is read at runtime. No generated code to maintain, no template drift — edit the model and the system follows.
FAST2–5 seconds to a running system. Java 17 + Spring Boot 3.x.
BATTERIES INCLUDEDLogin, users, roles, menus, audit, Excel, OpenAPI, 30+ components — production-ready on day one.
AI-NATIVE50+ LLM providers, MCP-native tools, A2A, 700k+ skills. Every model is something an agent can query and operate.
ANY DATA SOURCEJPA (MySQL · PostgreSQL · Oracle · SQL Server · DM) · JDBC · MongoDB · Elasticsearch · Redis · S3 · HTTP · files · LDAP · Kubernetes · Feishu · DingTalk · Notion · Airtable.
ANY FRAMEWORKNot tied to Spring: the same model runs on Spring Boot, Solon, Quarkus, Micronaut, Vert.x, Ktor or any servlet container.
ANY LANGUAGEPython, Go, TypeScript, PHP, .NET, Rust, Ruby and Swift services join as erupt-sdk nodes — same admin, same permissions.
FREE COREApache 2.0, forever. Commercial Flow / SaaS / Cube modules are optional.

02 · QUICKSTART

A — SOURCE

Clone and run the bundled sample. H2 in-memory. No config.

git clone https://github.com/erupts/erupt.git
cd erupt
mvn spring-boot:run -pl erupt-sample -am
# → http://localhost:8080   login: erupt / erupt

B — DOCKER

All-in-one image — hub.docker.com/r/erupts/erupt. Built on erupt-spring-boot-starter-all: designer, job, monitor, magic-api, notice, AI, cloud-server, embedded H2. Zero configuration.

docker run -p 8080:8080 erupts/erupt
# → http://localhost:8080   login: erupt / erupt

Production: switch to MySQL / Redis via -e env vars — image guide →

C — MAVEN

1 · One dependency.

<dependency>
    <groupId>xyz.erupt</groupId>
    <artifactId>erupt-spring-boot-starter</artifactId>
    <version>${erupt.version}</version>
</dependency>

Bundles everything a runnable admin needs (erupt-admin + erupt-web). Want every optional module too (designer, job, generator, monitor, magic-api, websocket, notice, print, terminal, AI, cloud-server)? Use erupt-spring-boot-starter-all.

2 · Describe the model. This IS the system.

@Erupt(name = "User")
@Entity
public class User extends BaseModel {

    @EruptField(
        views = @View(title = "Name"),
        edit  = @Edit(title = "Name", search = @Search)
    )
    private String name;
}

3 · Run.

mvn spring-boot:run
# → http://localhost:8080   login: erupt / erupt

Paged. Searchable. Exportable. Role-gated. Add a field, refresh, it shows up.

D — STARTER

start.erupt.xyz — pick modules in your browser, download a ready-to-run project. No local setup.

E — AI SKILL

skill.erupt.xyz — build a full admin panel with zero development background. Made for non-engineering roles (ops, HR, product, finance): describe your system in one sentence inside Claude Code or a similar AI agent, and the skill handles the rest — JDK, database (H2), login, CRUD, search, Excel, permissions all included. Only entities get written; UI and APIs render from annotations at runtime, so it costs ~1/20 the tokens of writing from scratch.

git clone https://github.com/plinian/erupt-skill.git ~/.claude/skills/erupt-admin

Then tell Claude Code: "Build me a CRM admin panel" → running system.

NO INSTALL — demo.erupt.xyz (guest / guest) FULL GUIDE — docs.erupt.xyz/guide/quick-start

MORE — sliders, choice fields, custom actions, LambdaQuery
@Erupt(
    name = "Simple",
    power = @Power(importable = true, export = true),
    rowOperation = @RowOperation(
        title = "Custom Action",
        mode = RowOperation.Mode.SINGLE,
        operationHandler = OperationHandlerImpl.class
    )
)
@Table(name = "t_simple")
@Entity
public class Simple extends BaseModel {

    @EruptField(
        views = @View(title = "Text"),
        edit  = @Edit(title = "Text", notNull = true, search = @Search)
    )
    private String input;

    @EruptField(
        views = @View(title = "Date"),
        edit  = @Edit(title = "Date", search = @Search)
    )
    private Date date;

    @EruptField(
        views = @View(title = "Slider"),
        edit  = @Edit(title = "Slider", type = EditType.SLIDER, search = @Search,
            sliderType = @SliderType(max = 90, markPoints = {0, 30, 60, 90}, dots = true))
    )
    private Integer slide;

    @EruptField(
        views = @View(title = "Choice"),
        edit  = @Edit(title = "Choice", type = EditType.CHOICE, search = @Search,
            choiceType = @ChoiceType(
                fetchHandler = SqlChoiceFetchHandler.class,
                fetchHandlerParams = "select id, name from e_upms_menu"
            ))
    )
    private Long choice;
}

Type-safe queries with LambdaQuery:

List<EruptUser> list = eruptDao.lambdaQuery(EruptUser.class)
        .like(EruptUser::getName, "e")
        .isNull(EruptUser::getWhiteIp)
        .in(EruptUser::getId, 1, 2, 3, 4)
        .ge(EruptUser::getCreateTime, "2023-01-01")
        .list();

More scenarios — erupt.xyz/#!/contrast


03 · OUT OF THE BOX

Erupt · Workbench

UI GENERATIONTables, forms, search, pagination, tree views, Gantt, card views, 20+ field components — driven by @View / @Edit / @Search.
PERMISSIONS · UPMSUsers, roles, menus, row-level filters, column-level visibility. SpEL on @Filter. OAuth2 / LDAP / SSO.
OPENAPIEvery @Erupt entity is a REST endpoint, governed by the same permission rules as the UI.
ANY DATA SOURCE15 data modules — JPA databases, JDBC, MongoDB, Elasticsearch, Redis, S3, HTTP, files, LDAP, Kubernetes and SaaS tables.
EXCELImport/export via erupt-excel. Override excelImport / excelExport on DataProxy.
AI HARNESSerupt-ai — 50+ LLM providers, MCP-native tools, built-in RBAC. → 04
AI FAMILYClaw, RAG, Staff, Dev, Canvas and Decision agents on top of erupt-ai. → 05
CLUSTERerupt-cloud nodes in any language. Commercial erupt-tenant for full SaaS. → 06

WHICH AI MODULE? — Pick erupt-ai for raw LLM / MCP access to build your own agent. Pick erupt-ai-claw for a turn-key admin agent (it depends on erupt-ai; add only this one).

All modules — 07 · API reference — javadoc.erupt.xyz

MODEL ATLAS

Every @Erupt entity, every relation between them, drawn from the same annotations that build the UI. No extra configuration — the map exists because the model does.

OVERVIEWEvery model grouped by module. Read the shape of the whole system at a glance.
LAYERSHow deep the graph runs: what everything stands on, and the few chains the depth comes from.
LINEAGE · MATRIX · IMPACTOne model's neighbourhood, module-to-module coupling, and what breaks if a model changes.
FIELDS · POWER · AUDITEvery field of every model, declared @Power against the menu buttons behind it, and a health report: cycles, shared tables, isolated models.
Model Atlas · OverviewModel Atlas · Layers

04 · AI HARNESS

erupt-ai — production-grade AI agents on JVM. 50+ LLM providers · MCP-native · built-in RBAC · role-aware system prompts · chat history. All configurable through the admin UI. Zero boilerplate.

WHY "HARNESS" — Shipping AI to production needs more than an SDK: governance (RBAC) + interoperability (MCP) + observability (chat history, token tracking) + operator-friendly config (admin UI). All four, out of the box.

PROVIDERS — OpenAI · Claude · Gemini · DeepSeek · Qwen · GLM · Doubao · Moonshot · MiniMax · Mistral · Grok · Fireworks · Together · OpenRouter · Ollama (self-hosted) — hot-swappable from the admin UI, 50+ total.

MULTI-PROVIDERConfigure multiple LLMs via UI. Switch without code changes.
STREAMING · SSEToken-by-token responses, configurable timeouts.
THINKING MODELSNative support for reasoning models (DeepSeek, Kimi-K2).
MCPAny MCP-compatible tool server. SSE & STDIO transports. Auto-reconnect health checks.
A2AAgents call agents through the standardized A2A protocol. Multi-agent workflows out of the box.
AI TOOLBOXExpose any Spring Bean as an AI tool — @AiToolbox + @Tool.
TOOL SECURITYEvery AI tool gated by LLMRole. Whitelist or revoke per role at runtime. No restart.
AGENTICAgents with custom system prompts, hint lists, dynamic prompt handlers, MCP tools.
CHAT HISTORYPer-user sessions, token tracking, soft-delete.
LONG-TERM MEMORYCross-session persistence. Key decisions auto-stored, reloaded next session.
@AiToolbox
@Component
public class MyTools {

    @Tool("Look up order status by order ID")
    public String getOrderStatus(String orderId) {
        return orderService.getStatus(orderId);
    }
}

LLM providers, MCP servers, agents — all managed through the built-in admin UI. No restarts.

FIELD ASSISTANT

Any text field in any generated form gets an inline writing assistant. Nothing to wire up — it appears wherever the schema says the field holds text.

GENERATE · POLISH · CONTINUE · EXPAND · SHORTEN — or just tell it what to write. Streams into the field, and one click undoes it.

AI field assistant · darkAI field assistant · chat panel

05 · AI FAMILY

AI CLAW

erupt-ai-claw — drive your server through natural language, like talking to a colleague.

MODEL OPSQuery, create, update data across any @Erupt entity via chat.
SHELLRun system commands through natural language.
FILE I/ORead and write files on the server.
BROWSERInteract with the browser via MCP configuration.
SKILLS · 700K+Compatible with 700k+ skills from skills.sh. AI auto-matches and executes. Dynamic skill creation supported.

Claw shares the same role-based tool security as AI Harness — only whitelisted tools reach non-admin users. Skills live in ~/.erupt/skills/ and can also be created through chat.

MORE AGENTS

MODULEWHAT IT DOES
erupt-ai-ragKnowledge base and retrieval-augmented generation — Qdrant / Milvus / in-memory vector stores, document ingestion, agentic RAG.
erupt-ai-staffDigital employees: an agent with a system account, a duty persona, cron-scheduled tasks and work reports.
erupt-ai-devAI software delivery: projects with git repositories, a requirement pool and per-requirement worktrees for coding agents.
erupt-ai-canvasDescribe a page in plain language; the LLM writes a self-contained page over the Erupt REST API, served as a menu.
erupt-ai-decisionTyped, calibrated judgements (choice / score / yes-no) that business code can branch on.

06 · ANY LANGUAGE · CLOUD

erupt-cloud — one model-driven admin for distributed services in any language. One server handles login, menus and permissions; each node — Spring Boot or a Python / Go / TypeScript / PHP / .NET / Rust / Ruby / Swift process — only describes its models and serves their data.

┌────────────────────────────┐
│  erupt-cloud-server        │   console · login · menus · RBAC
│  config · nodes · topology │
└──────────────┬─────────────┘
               │  register / heartbeat / forward
   ┌───────────┼───────────┬───────────┐
   ▼           ▼           ▼           ▼
┌───────┐  ┌────────┐  ┌───────┐  ┌───────┐
│ Java  │  │ Python │  │  Go   │  │ TS …  │   nodes in any of 9 languages
│ node  │  │  node  │  │ node  │  │ node  │   each owns its models + data
└───────┘  └────────┘  └───────┘  └───────┘
# pip install erupt-sdk  — a Python service becomes an erupt admin node
from erupt import Field, Node, SqliteRepository, erupt

@erupt("Article")
class Article:
    id: int = Field(pk=True)
    title: str = Field("Title", search=True, not_null=True)

node = Node("blog", os.environ["ERUPT_ACCESS_TOKEN"], "http://erupt-server:8080")
node.register(Article, SqliteRepository("blog.db", "article"))
node.serve(port=9090)
POLYGLOT NODESJava / Kotlin (Spring Boot · Solon · Quarkus · Micronaut · Vert.x · Ktor · Servlet) · Python · Go · TypeScript · PHP · .NET · Rust · Ruby · Swift — one protocol, one conformance suite. erupt-sdk →
CONFIG CENTERMulti-dimensional: schemas, nodes, rollout policies. Instances sync on demand.
LIGHTMinimal intrusion. Versions aligned with the main Erupt release train.
TOPOLOGYCluster topology, call graphs, config rollouts — one console.
IN-CLUSTER ADMINEvery business service hosts its own Erupt admin. No per-subsystem scaffolding.
AUDITEvery config change leaves a trace. Finer-grained rollback than version-level.

docs.erupt.xyz/modules/erupt-cloud · erupt.xyz/#!/cloud · erupt.xyz/#!/sdk


07 · MODULES

One core, fifty-odd modules. Each is one dependency and shares the same model, permissions and UI.

GROUPMODULES
AI · 7erupt-ai · ai-claw · ai-rag · ai-staff · ai-dev · ai-canvas · ai-decision
DATA · 15jpa · jdbc · mongodb · es · redis · s3 · http · file · ldap · k8s · memory · feishu · dingtalk · notion · airtable
PLUGINS · 19job · monitor · notice · report · print · revision · comment · share · sso · webhook · config · file-center · terminal · remote · magic-api · designer · generator · atlas · template
PLATFORMcloud · erupt-sdk (9 languages) · excel · websocket · git · UI themes ant-design / element-plus / element-ui · docker
PRO · 3flow · saas · cube — see 08

Full list — erupt.xyz · API reference — javadoc.erupt.xyz


08 · COMMERCIAL MODULES

CORE IS FREE, FOREVER — erupt-core / erupt-annotation / erupt-web / erupt-jpa / erupt-upms / erupt-ai and other core modules are Apache 2.0 forever. No license restrictions · no project-count limits · no commercial restrictions (governance commitment →). Commercial modules are optional enterprise extensions that evolve independently.

MODULEUSE CASEDOCS
ERUPT FLOWWorkflow / approval enginedocs →
ERUPT SAASMulti-tenant infrastructuredocs →
ERUPT CUBEBI platform with semantic layerdocs →

Source-code delivery · one-time purchase · perpetual use.

PRICING & PURCHASE →


09 · TELEMETRY

Erupt reports anonymous usage statistics — erupt version, installed modules, JDK, OS and database type, Spring Boot version, timezone — to guide compatibility and roadmap decisions. It never sends business data, credentials, hostnames, or anything IP-derived, and requests fail silently without ever blocking startup.

Opt out with erupt.telemetry.enabled: false or the ERUPT_TELEMETRY_DISABLED=1 environment variable; CI is skipped automatically.


10 · CONTRIBUTING

Free and open source. Code, bug reports, ideas, use cases, blog posts — all welcome.

Read the contribution guidelines, then open an issue or pull request.

Contributors

IF ERUPT SAVES YOU TIME — STAR IT. It really helps the project grow.

Star History Chart

11 · LICENSE

license.svg

Apache 2.0 — free · open source · commercial use permitted · fork-friendly.

AUTHOR — YuePeng · erupts@126.com

关于 About

Make the model your single source of truth. Erupt is a model-driven engine for enterprise apps: UI, REST APIs, RBAC, data and AI agents are built from one model at runtime — no codegen, no frontend. Java/Kotlin on Spring Boot, Solon, Quarkus & more; SDKs for Python, Go, TypeScript and 6 other languages.
annotationerupterupt-engineharness-frameworklow-codemddmodel-drivenpolyglotrbacsemantic

语言 Languages

Java96.6%
HTML2.0%
FreeMarker0.5%
JavaScript0.3%
Kotlin0.2%
Shell0.2%
CSS0.1%
Python0.0%
Dockerfile0.0%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
1464
Total Commits
峰值: 73次/周
Less
More

核心贡献者 Contributors