English Β |Β δΈζ
ANNOTATION-DRIVEN JAVA ADMIN FRAMEWORK Β· AI HARNESS
one class = one admin page Β· zero front-end Β· 2β5s startup Β· 50+ LLM Β· MCP-native Β· A2A
[ WEBSITE ]Β Β
[ LIVE DEMO ]Β Β
[ START PROJECT ]Β Β
[ DOCS ]
ONE CLASS = ONE PAGE |
Annotate a JPA entity. Get a full admin page. Zero controllers, zero front-end build, zero scaffolding. |
FAST STARTUP |
2β5 seconds to a running admin UI. Java 17 + Spring Boot 3.x. |
30+ COMPONENTS |
Date, slider, tree, code editor, reference table, autocomplete, map, signature, Markdown β out of the box. |
BATTERIES INCLUDED |
RBAC, audit logs, Excel import/export, OpenAPI. Every @Erupt entity is a permission-aware REST endpoint. |
AI-NATIVE |
50+ LLM providers, MCP-native tools, 700k+ skills. All configurable from the admin UI. |
MULTI-DATABASE |
JPA: MySQL Β· PostgreSQL Β· Oracle Β· SQL Server Β· DM. MongoDB via erupt-mongodb. |
ECOSYSTEM |
erupt-cloud for distributed config. Commercial Chart / Flow / Tenant / Cube modules for reporting, workflow, SaaS, BI. |
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 / eruptAll-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 / eruptProduction: switch to MySQL / Redis via -e env vars β image guide β
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 Β· 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.
mvn spring-boot:run
# β http://localhost:8080 login: erupt / eruptPaged. Searchable. Exportable. Role-gated. Add a field, refresh, it shows up.
NO INSTALLβ demo.erupt.xyz (guest / guest)STARTERβ start.erupt.xyz generates a project in your browserFULL 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
UI GENERATION |
Tables, forms, search, pagination, tree views, Gantt, card views, 20+ field components β driven by @View / @Edit / @Search. |
PERMISSIONS Β· UPMS |
Users, roles, menus, row-level filters, column-level visibility. SpEL on @Filter. OAuth2 / LDAP / SSO. |
OPENAPI |
Every @Erupt entity is a REST endpoint, governed by the same permission rules as the UI. |
MULTI-DATABASE |
JPA: MySQL Β· PostgreSQL Β· Oracle Β· SQL Server Β· DM. MongoDB via erupt-mongodb. |
EXCEL |
Import/export via erupt-excel. Override excelImport / excelExport on DataProxy. |
AI HARNESS |
erupt-ai β 50+ LLM providers, MCP-native tools, built-in RBAC. β 03 |
AI CLAW |
erupt-ai-claw β drive entities, shell, files, browser through natural language. β 04 |
CLUSTER |
erupt-cloud distributed config. Commercial erupt-tenant for full SaaS. β 05 |
WHICH AI MODULE?β Pickerupt-aifor raw LLM / MCP access to build your own agent. Pickerupt-ai-clawfor a turn-key admin agent (it depends onerupt-ai; add only this one).
Module catalog β erupt.xyz/#!/module Β· API reference β javadoc.erupt.xyz
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 Β· Requesty Β· Ollama (self-hosted) β hot-swappable from the admin UI, 50+ total.
MULTI-PROVIDER |
Configure multiple LLMs via UI. Switch without code changes. |
STREAMING Β· SSE |
Token-by-token responses, configurable timeouts. |
THINKING MODELS |
Native support for reasoning models (DeepSeek, Kimi-K2). |
MCP |
Any MCP-compatible tool server. SSE & STDIO transports. Auto-reconnect health checks. |
A2A |
Agents call agents through the standardized A2A protocol. Multi-agent workflows out of the box. |
AI TOOLBOX |
Expose any Spring Bean as an AI tool β @AiToolbox + @Tool. |
TOOL SECURITY |
Every AI tool gated by LLMRole. Whitelist or revoke per role at runtime. No restart. |
AGENTIC |
Agents with custom system prompts, hint lists, dynamic prompt handlers, MCP tools. |
CHAT HISTORY |
Per-user sessions, token tracking, soft-delete. |
LONG-TERM MEMORY |
Cross-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.
erupt-ai-clawβ drive your server through natural language, like talking to a colleague.
MODEL OPS |
Query, create, update data across any @Erupt entity via chat. |
SHELL |
Run system commands through natural language. |
FILE I/O |
Read and write files on the server. |
BROWSER |
Interact 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.
erupt-cloudβ the annotation-driven admin experience for distributed Spring Boot deployments. Centralized config, service topology, per-node admin UIs β same@Eruptmodel.
ββββββββββββββββββββββββββββββ
β erupt-cloud-server β central console
β config Β· nodes Β· topology β
ββββββββββββββββ¬ββββββββββββββ
β register / pull config
βββββββββββββΌββββββββββββ
βΌ βΌ βΌ
βββββββββ βββββββββ βββββββββ
β node β β node β β node β erupt-cloud-node
β + own β β + own β β + own β per-service admin UI
β admin β β admin β β admin β
βββββββββ βββββββββ βββββββββ
CONFIG CENTER |
Multi-dimensional: schemas, nodes, rollout policies. Instances sync on demand. |
LIGHT |
Minimal intrusion. Versions aligned with the main Erupt release train. |
TOPOLOGY |
Cluster topology, call graphs, config rollouts β one console. |
IN-CLUSTER ADMIN |
Every business service hosts its own Erupt admin. No per-subsystem scaffolding. |
AUDIT |
Every config change leaves a trace. Finer-grained rollback than version-level. |
docs.erupt.xyz/modules/erupt-cloud Β· erupt.xyz/#!/cloud
CORE IS FREE, FOREVERβerupt-core/erupt-annotation/erupt-web/erupt-jpa/erupt-upms/erupt-aiand 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.
| MODULE | USE CASE | DOCS |
|---|---|---|
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.
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.
IF ERUPT SAVES YOU TIME β STAR IT.It really helps the project grow.
Apache 2.0 β free Β· open source Β· commercial use permitted Β· fork-friendly.
AUTHOR β YuePeng Β· [email protected]
