GME has a modular, component-based architecture depicted in the figure below.

The thin storage layer includes components for the different storage formats.
Currently, ODBC on top of MS SQL Server and a fast proprietary binary file format are
supported. Supporting an additional format
requires the implementation of a single, well-defined, small interface component.
The Core component implements the two fundamental building blocks of a modeling environment:
objects and relations. Among its services are distributed access (i.e. locking) and undo/redo.
Two components use the services of the Core: the GMeta and the GModel. The GMeta defines the
modeling paradigm, while the GModel implements the GME modeling concepts for the given
paradigm. The GModel uses the GMeta component extensively through its public COM interfaces.
The GModel component exposes its services through a set of COM interfaces as well.
The user interacts with the components at the top of the architecture: the GME User Interface,
the Model Browser, the Constraint Manager, Interpreters and Add-ons.
Add-ons are event-driven model interpreters. The GModel component exposes a set of events,
such as "Object Deleted," "Set Member Added," "Attribute Changed," etc. External components
can register to receive some or all of these events. They are automatically invoked by the
GModel when the events occur. Add-ons are extremely useful for extending the capabilities of
the GME User Interface. When a particular domain calls for some special operations,
these can be supported without modifying the GME itself.
The Constraint Manager can be considered as an interpreter and an add-on at the same time.
It can be invoked explicitly by the user and it is also invoked when event-driven constraints
are present in the given paradigm. Depending on the priority of a constraint, the operation
that caused a constraint violation are aborted. For less serious violations, the
Constraint Manager only issues a warning message.
The GME User Interface component has no special privileges in this architecture.
Any other component (interpreter, add-on) has the same access rights and uses the same set
of COM interfaces to the GME. Any operation that can be accomplished through the GUI, can
also be done programmatically through the interfaces. This architecture is very flexible
and supports extensibility of the whole environment.