8.9 KiB
8.9 KiB
T8-3.1: uos-fork / uos-manage Fleet Tooling
Track: T8-3.1
Status: IN PROGRESS
Date: 2026-07-12
Overview
uos-fork and uos-manage are fleet management tools for UniversalisOS. They enable:
- uos-fork: Create new guest instances from a template
- uos-manage: Monitor, control, and audit running guests
Architecture
┌─────────────────────────────────────────────────────────────┐
│ Host (Linux/macOS) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ uos-fork │ │
│ │ - Create guest from template │ │
│ │ - Configure Stage-2 MM │ │
│ │ - Assign partition ID │ │
│ └─────────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ uos-manage │ │
│ │ - List running guests │ │
│ │ - Monitor resource usage │ │
│ │ - Run isolation audits │ │
│ │ - Start/stop/restart guests │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ UniversalisOS Hypervisor │ │
│ │ - Guest 0: musl personality │ │
│ │ - Guest 1: Android (AOSP) │ │
│ │ - Guest 2: Android (LineageOS) │ │
│ │ - Guest 3: Android (GrapheneOS) │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
uos-fork
Purpose
Create a new guest instance from a template. Similar to fork() but for guests.
Usage
# Fork a new Android guest from template
uos-fork --template android-aosp --name my-android-1
# Fork with custom memory size
uos-fork --template android-aosp --name my-android-2 --memory 2G
# Fork with custom partition ID
uos-fork --template android-aosp --name my-android-3 --partition 5
Options
| Option | Description | Default |
|---|---|---|
--template |
Guest template (android-aosp, android-lineage, android-graphene, musl) | android-aosp |
--name |
Guest name | auto-generated |
--memory |
Guest memory size | 1G |
--partition |
Partition ID | auto-assigned |
--kernel |
Custom kernel path | template default |
--ramdisk |
Custom ramdisk path | template default |
--dtb |
Custom DTB path | template default |
Implementation
/* uos-fork main entry */
int uos_fork(const char* template, const char* name, uint64_t memory_size);
/* Create guest from template */
int uos_fork_create_guest(const uos_guest_template_t* tmpl, uos_guest_config_t* config);
/* Assign partition ID */
uint32_t uos_fork_assign_partition(void);
/* Configure Stage-2 MM */
int uos_fork_configure_mm(uint32_t guest_id, uint64_t memory_size);
uos-manage
Purpose
Monitor, control, and audit running guests.
Usage
# List all guests
uos-manage list
# Show guest details
uos-manage show my-android-1
# Monitor resource usage
uos-manage monitor my-android-1
# Run isolation audit
uos-manage audit my-android-1
# Start/stop/restart guest
uos-manage start my-android-1
uos-manage stop my-android-1
uos-manage restart my-android-1
# Show fleet status
uos-manage status
Commands
| Command | Description |
|---|---|
list |
List all guests |
show <name> |
Show guest details |
monitor <name> |
Monitor resource usage |
audit <name> |
Run isolation audit |
start <name> |
Start guest |
stop <name> |
Stop guest |
restart <name> |
Restart guest |
status |
Show fleet status |
Implementation
/* uos-manage main entry */
int uos_manage(const char* command, const char* guest_name);
/* List all guests */
int uos_manage_list(uos_guest_info_t* guests, uint32_t* count);
/* Show guest details */
int uos_manage_show(const char* name, uos_guest_info_t* info);
/* Monitor resource usage */
int uos_manage_monitor(const char* name, uos_guest_stats_t* stats);
/* Run isolation audit */
int uos_manage_audit(const char* name, uos_isolation_result_t* result);
/* Start guest */
int uos_manage_start(const char* name);
/* Stop guest */
int uos_manage_stop(const char* name);
/* Restart guest */
int uos_manage_restart(const char* name);
Guest Templates
android-aosp
name: android-aosp
type: android
kernel: guests/android-aosp/kernel
ramdisk: guests/android-aosp/ramdisk
dtb: guests/android-aosp/dtb
memory: 1G
partition: auto
hardened_malloc: true
android-lineage
name: android-lineage
type: android
kernel: guests/android-lineage/kernel
ramdisk: guests/android-lineage/ramdisk
dtb: guests/android-lineage/dtb
memory: 1G
partition: auto
hardened_malloc: true
android-graphene
name: android-graphene
type: android
kernel: guests/android-graphene/kernel
ramdisk: guests/android-graphene/ramdisk
dtb: guests/android-graphene/dtb
memory: 1G
partition: auto
hardened_malloc: true
musl
name: musl
type: personality
kernel: guests/musl/kernel
ramdisk: guests/musl/ramdisk
dtb: guests/musl/dtb
memory: 512M
partition: 0
hardened_malloc: true
Fleet Status
┌─────────────────────────────────────────────────────────────┐
│ UniversalisOS Fleet Status │
├─────────────────────────────────────────────────────────────┤
│ ID Name Type Memory Status Isolation │
├─────────────────────────────────────────────────────────────┤
│ 0 musl personality 512M RUNNING PASS │
│ 1 android-aosp android 1G RUNNING PASS │
│ 2 android-lineage android 1G RUNNING PASS │
│ 3 android-graphene android 1G STOPPED - │
├─────────────────────────────────────────────────────────────┤
│ Total: 4 guests, 3 running, 1 stopped │
│ Memory: 3.5G / 8G used │
│ Isolation: 3/3 PASS │
└─────────────────────────────────────────────────────────────┘
Implementation Files
| File | Purpose |
|---|---|
tools/uos-fork/main.c |
uos-fork CLI |
tools/uos-manage/main.c |
uos-manage CLI |
tools/uos-fleet/fleet.h |
Fleet management API |
tools/uos-fleet/fleet.c |
Fleet management implementation |
tools/uos-fleet/templates.h |
Guest templates |
tools/uos-fleet/templates.c |
Template implementation |
Verification
- uos-fork creates guests from templates
- uos-manage lists all guests
- uos-manage shows guest details
- uos-manage runs isolation audits
- Fleet status shows correct information
References
universalisos/docs/T8-2.2_ANDROID_INHERITANCE.md— Android guestsuniversalisos/docs/T8-2.3_ISOLATION_AUDIT.md— Isolation audituniversalisos/kernel/src/core/abi/uos_android_guest_config.h— Guest config