erupt

Project Url: erupts/erupt
Introduction: 通用后台管理框架,使用 Java 注解,快速开发 Admin 管理后台。零前端代码、零 CURD、不生成任何代码、自动建表、注解式 API,支持所有主流数据库,支持多数据源,提供 23 类表单组件,十几种展示形式,动态定时任务,前端后端分离等特性。核心技术:Spring Boot、JPA、Gson、TypeScript、NG-ZORRO 等。 开发不易,记得右上角点个 star 鼓励作者 ~
More: Author   ReportBugs   OfficialWebsite   
Tags:

English   |   中文


Erupt

Erupt · Annotation-Driven Java Admin Framework

AI Harness · 50+ LLM providers · MCP-native · A2A protocol

Java annotations · Spring Boot 3 · zero front-end · 2–5s startup


maven-central license Apache 2.0 GitHub stars GitHub forks gitcode Gitee star Gitee fork last-commit latest-release discussions


Try Live Demo   Start Project   Read Docs   Website


Erupt · Annotation-Driven Java Admin Framework · AI Harness


  • One class file = a full admin page. Zero controllers, zero front-end build, zero scaffolding.
  • Lightning startup. 2–5 seconds to a running admin UI on Java 17 + Spring Boot 3.x.
  • 20+ field components out of the box: date, slider, tree, code editor, reference table, autocomplete, map, signature, Markdown…
  • Built-in RBAC, audit logs, Excel import/export, OpenAPI — every @Erupt entity is automatically a permission-aware REST endpoint.
  • AI-Native. 50+ LLM providers, MCP-native tools, 700k+ skills, all configurable from the admin UI.
  • Multi-database. JPA by default (MySQL · PostgreSQL · Oracle · SQL Server · DM); MongoDB via erupt-mongodb.
  • Production-ready ecosystem. erupt-cloud for distributed config; commercial Chart / Flow / Tenant / Cube modules cover reporting, workflow, multi-tenant SaaS, and semantic-layer BI.

⚡ 60-second quickstart

https://github.com/user-attachments/assets/aa348010-a894-4b3e-9217-a30fd3acadfa

1. Add two dependencies

<dependency>
    <groupId>xyz.erupt</groupId>
    <artifactId>erupt-admin</artifactId>
    <version>${erupt.version}</version>
</dependency>
<dependency>
    <groupId>xyz.erupt</groupId>
    <artifactId>erupt-web</artifactId>
    <version>${erupt.version}</version>
</dependency>

2. Annotate a JPA entity — this is the UI

@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 and login

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

You now have a paged, searchable, exportable admin page with role-based permissions — backed by the table behind User. Add a field, refresh, it shows up.

Don't want to clone? Try demo.erupt.xyz (guest / guest). Want a starter project? start.erupt.xyz generates one in your browser. Prefer to run from source? Clone this repo and run EruptSampleApplication in the erupt-sample module — bundled H2 database, no extra config required. Need the full walkthrough? Detailed setup guide →

📦 Show me a richer example — 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(vague = true))
    )
    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


📦 What you get out of the box

🧱 UI generation Tables, forms, search, pagination, tree views, Gantt charts, card views, 20+ field components — all driven by @View, @Edit, @Search on each field.

🔐 Permissions (UPMS) Users, roles, menus, row-level filters, column-level visibility. SpEL expressions on @Filter for dynamic rules. OAuth2 / LDAP / SSO supported.

🌐 OpenAPI exposure Every @Erupt entity is automatically a REST endpoint, governed by the same permission rules as the UI.

🗄️ Multi-database JPA by default (MySQL · PostgreSQL · Oracle · SQL Server · DM …); MongoDB via erupt-mongodb.

📊 Excel import & export Built-in via erupt-excel. Override excelImport / excelExport on DataProxy to customize.

🐴 AI Harness (erupt-ai) 50+ LLM providers, MCP-native tools, all configurable from the admin UI with built-in RBAC. → details below

🦞 AI Claw (erupt-ai-claw) Drive Erupt entities, the shell, files, and a browser through natural language. → details below

☁️ Cluster & multi-tenant erupt-cloud for distributed config; commercial erupt-tenant for full SaaS.

Full module catalog: erupt.xyz/#!/module  ·  API reference: javadoc.erupt.xyz


🐴 Erupt AI Harness · Production-grade AI Agents on JVM

erupt-ai is the AI Harness for Spring Boot: 50+ LLM providers · MCP-native tools · 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 — it needs governance (RBAC), interoperability (MCP), observability (chat history + token tracking), and operator-friendly config (admin UI). Erupt AI Harness gives all four out of the box.

Supported LLM 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+ in total.

Key capabilities

  • Multi-provider switching — configure multiple LLMs via UI, switch without code changes
  • Streaming chat (SSE) — real-time token-by-token responses with configurable timeouts
  • Thinking models — native support for reasoning models (DeepSeek, Kimi-K2)
  • MCP protocol — connect any MCP-compatible tool server (SSE & STDIO transports), auto-reconnect health checks
  • A2A protocol (Agent-to-Agent) — agents call other agents through the standardized A2A protocol; multi-agent workflows out of the box
  • AI Toolbox — expose any Spring Bean as an AI tool via @AiToolbox + @Tool annotations
  • Tool security · dynamic Role control — every AI tool is gated by LLMRole; whitelist or revoke per role at runtime, no restart
  • Agentic AI framework — define agents with custom system prompts, hint lists, dynamic prompt handlers, MCP tool integration
  • Chat history — per-user conversation sessions with token tracking and soft-delete
  • Long-term memory — cross-session memory persistence; AI automatically stores key decisions and context, reloaded next session

AI Toolbox example

@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, and agents are all managed through the built-in admin UI — no restarts required.


🦞 Erupt AI Claw

Drive your server through natural language — just like talking to a colleague.

Erupt AI Claw lets you control annotation-driven data & business logic, execute shell commands, read/write files, and extend custom Skills — all through conversational AI.

Claw capabilities

  • Erupt model operations — query, create, update data across any @Erupt entity via chat
  • Shell execution — run system commands directly through natural language
  • File I/O — read and write files on the server
  • Browser control — interact with the browser via MCP configuration
  • Skills (700k+) — compatible with 700k+ skills from skills.sh; AI auto-matches and executes the right skill; supports dynamic skill creation

Claw shares the same Role-based Tool security as AI Harness — only whitelisted tools are exposed to non-admin users. Skills are stored in ~/.erupt/skills/ and can also be created dynamically through chat.


☁️ Erupt Cloud · Distributed config & multi-node admin

erupt-cloud brings the annotation-driven admin experience to distributed Spring Boot deployments — centralized config, service topology, and per-node admin UIs, all under the same @Erupt model.

Architecture

  • erupt-cloud-server — central console for cluster-wide config and node management
  • erupt-cloud-node — drop-in dependency each service uses to register itself and pull config

Key capabilities

  • Multi-dimensional config center — centrally maintain config schemas, nodes, and rollout policies; instances sync on demand
  • Light dependencies — minimal intrusion into your Spring Boot / microservices stack; versions stay aligned with the main Erupt release train
  • Nodes & topology — visualize cluster topology, call graphs, and config rollouts in a single console
  • In-cluster admin UIs — every business service can host its own Erupt admin without rebuilding scaffolding per subsystem
  • Audit-friendly — every config change leaves a trace; finer-grained rollback than version-level rollback

→ Erupt Cloud docs  ·  erupt.xyz/#!/cloud


📌 Core modules are permanently free and open sourceerupt-core / erupt-annotation / erupt-web / erupt-jpa / erupt-upms / erupt-ai and other core modules are licensed under Apache 2.0 forever — no License restrictions · no project-count limits · no commercial restrictions (see the governance commitment →). The commercial modules below are optional enterprise extensions that evolve independently from the open-source core.

🔌 Commercial extension modules

Beyond the open-source core, 4 enterprise-grade modules are available — source-code delivery · one-time purchase · no License / project-count / commercial restrictions:

Module Use case Documentation
Erupt Chart Reports & data visualization 📖 Docs
Erupt Flow Workflow / approval engine 📖 Docs
Erupt SaaS Multi-tenant infrastructure 📖 Docs
Erupt Cube BI platform with semantic layer 📖 Docs

Source-code delivery · one-time purchase · perpetual use · evolves independently from the open-source core.

👉 See pricing and purchase process →


🤝 Contributing

Erupt is a free and open-source project. We welcome anyone to contribute — submitting code, reporting bugs, sharing ideas, or sharing your use cases. Blog posts and social-media coverage are equally welcome.

To contribute code, please read our contribution guidelines first, then open an Issue or Pull Request on GitHub.

Thanks to the following contributors:

Contributors

If Erupt saves you time, please star us on GitHub — it really helps the project grow.


⭐ Star history

Star History Chart

📄 License

Erupt is licensed under Apache 2.0 — free, open source, commercial use permitted, fork-friendly.

Author: YuePeng  ·  erupts@126.com

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools
AI Daily Digest