Command line
Everything the application does is carried out by the engine, ultragx-engine, which can also be used directly from a terminal: to automate the documentation of several KBs, schedule it on a server or integrate it into a continuous integration process. It uses the same licence as the application.
Where the engine is
| System | Path |
|---|---|
| Windows (installer) | %LOCALAPPDATA%\Programs\UltraGX\ultragx-engine.exe |
| Linux (deb / rpm) | /opt/ultragx/ultragx-engine |
| Linux (AppImage) | ./UltraGX-<version>-x86_64.AppImage engine <command> … |
| macOS | /Applications/UltraGX.app/Contents/MacOS/ultragx-engine |
The examples use ultragx-engine; replace it with the corresponding path or add the folder to the PATH.
Commands
version and machine-id
ultragx-engine version # engine version
ultragx-engine machine-id # machine id, to request a licence bound to it
license
ultragx-engine license # licence status, as JSON
ultragx-engine license activate --code ULGX-XXXX-XXXX # activates a licence with a code
The demo can also be requested without the application, in two steps:
ultragx-engine license register --first-name Ana --last-name Pérez --company "My Company" \
--email ana.perez@mycompany.com --gx-version 18 --kb-size 3000 --lang en
ultragx-engine license confirm --email ana.perez@mycompany.com --code 123456
pipeline
Documents a KB from an export.
ultragx-engine pipeline --source xpz --input C:/exports/MyKB.xpz --out D:/ultragx/MyKB --lang en
ultragx-engine pipeline --source gxtext --input D:/exports/MyKB_text --out D:/ultragx/MyKB --lang en --no-ref
| Option | Description |
|---|---|
--source | xpz (.xpz or .xml file) or gxtext (folder with src/ and ref/) |
--input | input file or folder |
--out | project folder (created if it does not exist) |
--lang | language of the documents: en, es or pt-BR |
--no-ref | with gxtext, skips the objects of referenced modules |
--no-viewer | does not generate the viewer (faster; it can be generated later) |
Progress is written to standard error and, when it finishes, the run summary is printed as JSON on standard output.
export
Opens a KB with the installed GeneXus (Windows only, with the connector), exports it to text and runs the pipeline.
ultragx-engine export --kb-path "C:/Models/MyKB" --kb MyKB --out D:/ultragx/MyKB --lang en
| Option | Description |
|---|---|
--kb-path | KB folder (the one that contains the .gxw) |
--kb | short name of the KB |
--out | project folder |
--gx-version | forces a GeneXus installation (18, 17, XEv3…); by default it is deduced from the KB |
--names | exports only some objects: names or selectors such as type:Transaction |
--no-reference | skips referenced modules |
--skip-pipeline | exports only, without documenting |
--timeout | maximum export time in seconds (3600 by default) |
--lang, --no-viewer | same as in pipeline |
viewer
Regenerates a project's viewer without analysing the KB again.
ultragx-engine viewer --out D:/ultragx/MyKB --lang en
narrative
Runs the AI narrative on an already documented project. On the command line, credentials are taken from environment variables: ANTHROPIC_API_KEY for Anthropic, OPENAI_API_KEY (and OPENAI_BASE_URL for another server) for the OpenAI-compatible providers, including Gemini, OpenRouter and local models.
export OPENAI_API_KEY=... # in PowerShell: $env:OPENAI_API_KEY = "..."
ultragx-engine narrative run --out D:/ultragx/MyKB --provider openai \
--base-url https://generativelanguage.googleapis.com/v1beta/openai/ --model gemini-3.8-flash \
--lang en --concurrency 8
| Option | Description |
|---|---|
--provider | anthropic, openai (any compatible server) or mock |
--model, --base-url | model and server URL |
--lang | language of the prose |
--concurrency | objects in parallel (4 by default) |
--types | only these types, separated by commas |
--all-types | also includes declarations (attributes, domains, SDTs…) |
--only | only these objects, as <Type>.<Name> separated by commas |
--limit | maximum number of objects |
--no-resume | processes objects already narrated again |
--max-doc-chars | document characters sent (60,000 by default; 16,000 with a local server if not specified) |
--no-source | does not send the original GeneXus code to the model |
--timeout | seconds to wait for each response (300 by default) |
--viewer-every | seconds between viewer regenerations during the run (600 by default; 0 = only at the end) |
notes
Adds or deletes user notes without the application.
ultragx-engine notes add --out D:/ultragx/MyKB --json note.json
ultragx-engine notes delete --out D:/ultragx/MyKB --stem Procedure.CalcularDescuento --id n171234567890000
ultragx-engine notes apply --out D:/ultragx/MyKB
note.json has the form {"stems": ["Procedure.CalcularDescuento"], "text": "…", "author": "Ana"}. apply merges all the notes into the documents again.
Exit codes
| Code | Meaning |
|---|---|
| 0 | finished successfully |
| 1 | the narrative finished with objects in error |
| 2 | incorrect usage (invalid command or options) or, in export, the KB could not be opened |
| 3 | licence missing, invalid, expired or revoked |
Example: documenting every KB in a folder
$engine = "$env:LOCALAPPDATA\Programs\UltraGX\ultragx-engine.exe"
Get-ChildItem D:\exports\*.xpz | ForEach-Object {
& $engine pipeline --source xpz --input $_.FullName --out "D:\ultragx\$($_.BaseName)" --lang en
if ($LASTEXITCODE -ne 0) { Write-Warning "$($_.Name) finished with code $LASTEXITCODE" }
}