Model the same product across every environment.
Rows identify environments. Columns identify applications or views. Each cell tells ActionHelm where that combination lives, so navigation commands can be generated automatically.
Create a matrix
- Create or choose a project groupA matrix belongs to one group, keeping generated navigation inside that project.
- Add environment rowsCreate rows such as Local, QA, Staging, and Production.
- Add application columnsCreate columns such as App, Admin, API, or Jenkins.
- Fill the cellsEnter the primary base URL for every available environment/application combination and save the matrix.
- QA / App
- https://qa.example.com/
- QA / Admin
- https://admin.qa.example.com/
- Production / App
- https://example.com/
Disabling a group—or one of its parent groups—also hides its environments and generated commands.
Choose the default environment
Select one row in the Default column. A matrix always has exactly one default; when necessary, the first row becomes the default automatically. It provides fallback context when the current page does not identify an environment in that matrix.
The default marker belongs to the matrix, so different project groups can choose different defaults.
Add URL variants to a cell
The URL visible in the matrix is the cell's primary or Default variant. Choose + Variants to add named alternatives for the same environment/application combination.
- Default
- https://stg.example.com/
- Localized
- https://stg.example.com/{LANG}/
- Legacy
- https://legacy.stg.example.com/
Variant names distinguish results in the launcher. ActionHelm can match both primary and variant templates against the current URL, and sibling variants remain available as destinations.
Define matrix variables
Open Variables, add a name such as LANG, then choose its type and default. Variable
names use uppercase letters, digits, and underscores and are referenced as {LANG} inside cell
URLs.
- Text matches one URL segment.
- Number matches signed integers and decimals.
- Enum matches only configured values and requires a default from that list.
- Name
- LANG
- Type
- enum
- Values
- en, de, pl
- Default
- en
- Template
- https://stg.example.com/{LANG}/
If the current URL is https://qa.example.com/pl/orders/42, ActionHelm extracts
LANG=pl and reuses it in a compatible destination. Outside a matching URL, it uses the
configured default.
A cell URL containing an unknown matrix variable is rejected. Provide valid example/default values so the URL template can also be validated.
Understand generated commands
When the current page matches a matrix
- Sibling variants of the current cell are offered.
- Other application columns in the current environment are offered.
- The same application column in other environments is offered.
- The unmatched path, query string, and hash are appended to compatible destinations.
- Values captured by matrix variables are carried into destination templates.
When no matrix URL matches
ActionHelm generates direct routes for configured environment/application cells and their variants. These commands use variable defaults until you provide another accepted value.
Naming and conflicts
Direct route patterns combine the environment label, application label, and required variable
placeholders—for example Staging App {LANG}. Context switches use labels such as
Switch to Production - App. A user-created command or alias with the same pattern takes
priority.