Skip to content
Platform > Dynamic Components

Dynamic Components

3forge Enterprise runs a deployment's components inside a single AmiCore process and lets the running set change at runtime. Components are declared in a watched file, data/ami.components, and can be added, removed, started, and stopped while the process keeps running, with no downtime to the rest of the deployment.

Features

  • Change the running estate without a restart: add, remove, start, and stop components while AmiCore keeps serving.
  • Declare components in one file: the component set lives in data/ami.components, one line per component, watched and reloaded automatically.
  • Run many components in one process: a single AmiCore process hosts multiple Centers, Relays, Webs, Gateways, WebBalancers, and WebManagers.
  • Manage from the admin console: drive the full lifecycle through the ami object over an ssh admin console.
  • Persist changes across restarts: a runtime add or remove is written back to data/ami.components, so the estate returns as configured.
  • Create temporary components: clone a running component as a transient copy on an unused port for a short-lived task.

Overview

A component is one unit of the deployment: a Center, a Relay, a Web, a Gateway, a WebBalancer, or a WebManager. The set of components AmiCore runs is defined by data/ami.components, with one component per line in the form name;type;pwd.

The set is dynamic in 2 ways:

  • The file is watched. AmiCore polls data/ami.components on an interval and reconciles the running components with the file, starting anything added and stopping anything removed. See How it works.
  • The admin console can change it directly. The ami console object adds, removes, starts, stops, restarts, and reloads components, and writes the change back to the file. See Managing components.

To make a first change and see it take effect, start with the Quickstart. For the file format and the reload model, see How it works. For the properties that control the file path and the poll interval, see Configuration. For error messages and their causes, see Troubleshooting.