There are four primary parts to Migard; midgard-lib, mod_midgard, midgard-php, and midgard-data.
The core library midgard-lib supplies the functions that mod_midgard and midgard-php require to perform database connections, data retrieval and modification, language parsing, encoding of mail messages, string manipulation, tree management and memory management.
The Apache module mod_midgard hooks a filter into Apache that checks every request against the Host table to determine if it is targeted for a Midgard enabled site. If a mapping is found, the corresponding Page and Style Elements are fetched from the database. The Apache server is then pointed to the file midgard-root.php3, and begins page generation.
Midgard 1.4 adds syntax to PHP. Consequently the application requires a patched PHP, midgard-php, that includes functions for formating content.
The Midgard database and Asgard, the Web-based administration interface, are distributed in the package midgard-data.