Skip to content
Platform

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

Because all of this is driven by watched files and per-component properties, most day-to-day operational change happens without a restart.