Applications
Application discovery today and the current `.gxapp` direction for guideXOS Server
On This Page
Application Suite
guideXOS Server is transitioning from the older GXM-centered story toward an app-model-first world. The current repository contains built-in desktop applications, app manifest discovery fixtures, and a new `.gxapp` package format intended to carry binaries for multiple CPU architectures.
Use the existing app registry, manifests, launch flow, and desktop integration rather than assuming one-off shortcuts.
Application Story Today
🖥️ Desktop Applications
guideXOS screenshots and existing shell flows show a desktop-oriented OS with utilities such as:
- Console
- Notepad
- Clock
- Task Manager
- Device inventory and system utilities
- Start menu and desktop launch surfaces
📄 App Manifests
The repository includes manifest-based discovery fixtures for future external apps. One example is
Apps/HelloWorld/app.json, which is intentionally used for manifest discovery even though the referenced ELF payloads are not present yet.
- App registry should still discover the manifest
- Desktop and launcher surfaces should list the app
- Launching it should return an explicit "manifest found but execution is not implemented yet" style response
- This avoids fake stubs that pretend support exists
📦 Universal Package Direction
Phase 8 planning defines a universal package model where one app package can hold optimized binaries for several architectures.
- ArchitectureDetector runtime API is planned to identify the host CPU
- UniversalAppLoader will select the correct binary from a package
gxbuildis planned as the packaging and cross-build tool- The SDK roadmap includes libc, system headers, and toolchains
GXAPP Format
The current canonical package format is .gxapp. It is not ZIP-based and it is intentionally kept simple, bounded, and fail-closed for loader and package-manager paths.
Container Layout
1. Header
Every package starts with a magic header and explicit entry count metadata.
magic = GXAPP\r\n\x1A
formatVersion = 1
flags = bit 0 set
entryCount = number of records
2. Entries
Each entry stores a kind, architecture, path, and inline payload.
kind = 1 metadata, 2 binary
architecture = CpuArchitecture enum value
path = metadata.json or bin/<arch>/app.bin
data = JSON metadata or native executable payload
Metadata Example
The current implementation requires a JSON metadata object like this:
{
"format": "gxapp",
"formatVersion": 1,
"applicationName": "calculator",
"version": "1.0.0",
"requiredGuideXOSVersion": "1.0.0",
"binaries": [
{ "architecture": "amd64", "path": "bin/amd64/app.bin", "entryPoint": "main" }
]
}
Validation and Limits
| Rule | Current Behavior |
|---|---|
| Metadata count | Exactly one metadata entry is required |
| Binary count | At least one binary entry is required |
| Package size | Maximum 128 MiB total |
| Binary size | Maximum 64 MiB per binary entry |
| Path validation | Binary paths must match bin/<arch>/app.bin |
| Unsupported features | No ZIP, compression, signatures, or repository download flow yet |
Roadmap Around Applications
The package format is only one piece of the story. The broader plan includes:
- Architecture detection APIs
- Universal application loader behavior
gxbuildas the packaging and build CLI- Developer SDK headers and libraries
- musl-based libc integration for portable userspace
The current `.gxapp` support does not yet mean all external native execution paths are finished. Where execution is unavailable, guideXOS should report that clearly instead of pretending the app exists.
Launching Applications
Method 1: App Registry and Desktop Surfaces
Built-in apps and discovered manifests should flow through the normal registry, launcher, and desktop listing paths.
App manifest or built-in registration
↓
AppRegistry discovers it
↓
Desktop / start menu surface lists it
↓
Launcher attempts normal app-model launch
Method 2: Console and Diagnostics
The shell remains a useful place to inspect what is registered and attempt launches during bring-up:
apps
launch <app-id>
// If a manifest exists but execution is not implemented yet,
// the system should fail explicitly instead of pretending success.
Method 3: Package Installation
When `.gxapp` installation is used, packages land under /system/apps after staged validation.
Method 4: Future cross-architecture loading
The long-range goal is for the runtime loader to choose the correct package binary for the active CPU architecture.
Use Alt+Tab
to quickly switch between running applications!