Skip to content

erupts/erupt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5,435 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

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


πŸ’‘ Why Erupt?

  • 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

quackstart.mp4

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 source β€” erupt-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

About

MDD & Annotation-driven Low-code Data platform & AI Harness

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors

Languages