Components and the Data Fabric¶
3forge Enterprise treats a deployment as a single data fabric, a dynamically managed set of components: one AmiCore JVM can run an unlimited number of components (Centers, Relays, Webs, Gateways), configuration is watched and hot-reloaded, plugins are managed and isolated, and the whole estate is observable through admin consoles and the Operations Hub.
In This Section¶
- Dynamic Components: register and manage components without restarting the JVM.
- Plugins: install and manage the isolated plugin bundles that give components their connectivity and optional capabilities.
- Operations: deploy, configure, and monitor a running instance.
Component Reference¶
| Component | Role | Key default ports |
|---|---|---|
| Center | Realtime database and event processing: in-memory / on-disk tables, triggers, timers, procedures, derived views | 3270 (native), 3280 (JDBC), 3290 (DB console) |
| Relay | Data virtualization between sources and the Center: feed handlers, dynamic routing, guaranteed messaging, store-and-forward | 3289 |
| Web | Transforms data into visualizations (tables, trees, charts, heatmaps, forms); hosts the AI assistant and the REST/MCP surface | 33332 (HTTP), 33333 (HTTPS) |
| Gateway | Governed distribution layer for external clients across one or more Centers | 3406 (native), 3407 (JDBC) |
| WebBalancer / WebManager | Scale a deployment across many users | — |
| AI | Ask AI assistant in the Web, plus an MCP server exposing the admin surface to AI clients | REST surface on the Web ports |
Center¶
The Center maintains and processes realtime and historical data within the fabric. It provides an in-memory SQL database, a historical SQL store, and a complex-event-processing engine, supporting SQL queries, realtime tables, historical storage, triggers, timers, procedures, and derived views. Centers can maintain persistent state, replicate data for resiliency, and publish processed or contextualized information for consumption elsewhere in the fabric.
Relay¶
The Relay connects 3forge Enterprise to external realtime data sources and messaging infrastructure. It ingests and transforms messages, routes them dynamically to downstream services, and distributes ingestion workloads across multiple Relay instances. It also supports reliable delivery patterns such as guaranteed messaging and store-and-forward, isolating applications and downstream components from interruptions or differences in upstream systems. Relay connectivity is configured through feed handlers.
Web¶
The Web serves browser-based 3forge applications: realtime tables, trees, charts, heatmaps, forms, workflows, and reports. It also hosts the Workbench, the in-running-environment development environment, along with the Ask AI assistant and the REST/MCP surface. Scale Web horizontally with WebBalancer (distributes live user sessions) and WebManager (centralizes user profiles and dashboards).
Component Management¶
The component set is defined in the watched file data/ami.components (property ami.components.file):
- On initial boot the file is generated automatically.
- It is watched and reloaded at runtime, so components can be dynamically added, removed, stopped, and started, including from the F1 console over ssh, without restarting the JVM.
- An unlimited number of components (multiple Centers, Relays, etc.) can run within a single JVM.
- New properties configure the new features (Gateway, AI, REST/MCP, WebSocket endpoints).
3forge watches key configuration files and reloads them automatically, including relay.routes, gateway.routes, relay.feedhandlers, ami.components, relay.transforms, relay.method, relay.method.rules, webbalancer.routes, access.txt, and the relay.dictionary files. The managed schema file and idfountain are read once at startup and need a restart to pick up changes. Shut down first only when coordinating changes across multiple files.
Adding a component
Components are added as one line per entry in data/ami.components. For example, to add a Gateway, append gateway;GATEWAY;. (inclusive of the trailing period). Because the file is watched, the component launches within the current JVM automatically unless the server is down.
Components at Runtime¶
- Configuration is watched and hot-reloaded (see the configuration model).
- Plugins are managed and isolated, one classloader per bundle, see Managed Plugins.
- The estate is observable through admin consoles and the estate-wide Operations Hub.
Because all of this is driven by watched files and per-component properties, most day-to-day operational change happens without a restart.