99 workflow_dispatch :
1010
1111jobs :
12- build-iso :
12+ # ═══════════════════════════════════════════════════════════════
13+ # x86_64 build — runs natively on standard Ubuntu runner
14+ # ═══════════════════════════════════════════════════════════════
15+ build-x86 :
1316 runs-on : ubuntu-latest
1417 permissions :
1518 contents : write
19+ timeout-minutes : 90
1620
17- strategy :
18- matrix :
19- arch : [x86_64, aarch64]
21+ steps :
22+ - name : Checkout
23+ uses : actions/checkout@v4
24+
25+ - name : Free disk space
26+ run : |
27+ # GitHub runners have ~14GB free. ISO build needs ~12GB.
28+ # Remove unnecessary pre-installed software to free space.
29+ sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc \
30+ /usr/local/share/boost /usr/share/swift /opt/hostedtoolcache 2>/dev/null || true
31+ sudo apt-get autoremove -y 2>/dev/null || true
32+ sudo apt-get clean
33+ df -h /
34+
35+ - name : Install build dependencies
36+ run : |
37+ sudo apt-get update -qq
38+ sudo apt-get install -y \
39+ debootstrap xorriso mtools squashfs-tools \
40+ grub-efi-amd64-bin grub-pc-bin \
41+ dosfstools xz-utils
42+
43+ - name : Build ISO (x86_64)
44+ run : |
45+ chmod +x ./scripts/build-iso.sh
46+ sudo bash ./scripts/build-iso.sh --arch=x86_64 --clean
47+
48+ - name : Compress ISO
49+ run : |
50+ ls -lh tensoragent-os-x86_64.iso
51+ xz -T0 -6 tensoragent-os-x86_64.iso
52+ ls -lh tensoragent-os-x86_64.iso.xz
53+
54+ - name : Upload ISO artifact
55+ uses : actions/upload-artifact@v4
56+ with :
57+ name : tensoragent-os-x86_64
58+ path : tensoragent-os-x86_64.iso.xz
59+ retention-days : 30
60+
61+ - name : Upload to release (tags only)
62+ if : startsWith(github.ref, 'refs/tags/v')
63+ uses : softprops/action-gh-release@v2
64+ with :
65+ files : tensoragent-os-x86_64.iso.xz
66+
67+ # ═══════════════════════════════════════════════════════════════
68+ # aarch64 build — runs on native ARM64 runner (no QEMU needed)
69+ # ═══════════════════════════════════════════════════════════════
70+ build-arm64 :
71+ runs-on : ubuntu-24.04-arm
72+ permissions :
73+ contents : write
74+ timeout-minutes : 90
2075
2176 steps :
2277 - name : Checkout
2378 uses : actions/checkout@v4
2479
80+ - name : Free disk space
81+ run : |
82+ sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc \
83+ /usr/local/share/boost /usr/share/swift /opt/hostedtoolcache 2>/dev/null || true
84+ sudo apt-get autoremove -y 2>/dev/null || true
85+ sudo apt-get clean
86+ df -h /
87+
2588 - name : Install build dependencies
2689 run : |
27- sudo apt-get update
90+ sudo apt-get update -qq
2891 sudo apt-get install -y \
2992 debootstrap xorriso mtools squashfs-tools \
30- grub-pc-bin grub- efi-amd64 -bin \
31- qemu-user-static binfmt-support dosfstools xz-utils
93+ grub-efi-arm64 -bin \
94+ dosfstools xz-utils
3295
33- - name : Build ISO (${{ matrix.arch }} )
96+ - name : Build ISO (aarch64 )
3497 run : |
3598 chmod +x ./scripts/build-iso.sh
36- sudo bash ./scripts/build-iso.sh --arch=${{ matrix.arch }} --skip-chromium
99+ sudo bash ./scripts/build-iso.sh --arch=aarch64 --clean
37100
38101 - name : Compress ISO
39102 run : |
40- xz -T0 -9 tensoragent-os-${{ matrix.arch }}.iso
41- ls -lh tensoragent-os-${{ matrix.arch }}.iso.xz
103+ ls -lh tensoragent-os-aarch64.iso
104+ xz -T0 -6 tensoragent-os-aarch64.iso
105+ ls -lh tensoragent-os-aarch64.iso.xz
42106
43107 - name : Upload ISO artifact
44108 uses : actions/upload-artifact@v4
45109 with :
46- name : tensoragent-os-${{ matrix.arch }}
47- path : tensoragent-os-* .iso.xz
110+ name : tensoragent-os-aarch64
111+ path : tensoragent-os-aarch64 .iso.xz
48112 retention-days : 30
49113
50- - name : Upload ISO for release
114+ - name : Upload to release (tags only)
51115 if : startsWith(github.ref, 'refs/tags/v')
52116 uses : softprops/action-gh-release@v2
53117 with :
54- files : tensoragent-os-*.iso.xz
118+ files : tensoragent-os-aarch64.iso.xz
119+
120+ # ═══════════════════════════════════════════════════════════════
121+ # Create GitHub Release (on tags only)
122+ # ═══════════════════════════════════════════════════════════════
123+ release :
124+ if : startsWith(github.ref, 'refs/tags/v')
125+ needs : [build-x86, build-arm64]
126+ runs-on : ubuntu-latest
127+ permissions :
128+ contents : write
129+
130+ steps :
131+ - name : Download all ISOs
132+ uses : actions/download-artifact@v4
133+ with :
134+ merge-multiple : true
135+
136+ - name : Create Release
137+ uses : softprops/action-gh-release@v2
138+ with :
139+ files : |
140+ tensoragent-os-x86_64.iso.xz
141+ tensoragent-os-aarch64.iso.xz
55142 generate_release_notes : true
56143 body : |
57144 ## TensorAgent OS ${{ github.ref_name }}
58145
59146 ### Downloads
60- | Architecture | File |
61- |-------------|------|
62- | x86_64 (Intel/AMD) | `tensoragent-os-x86_64.iso.xz` |
63- | aarch64 (ARM64 / Apple Silicon ) | `tensoragent-os-aarch64.iso.xz` |
147+ | Architecture | File | For |
148+ |-------------|------|-----|
149+ | x86_64 (Intel/AMD) | `tensoragent-os-x86_64.iso.xz` | PC, VirtualBox, VMware Workstation |
150+ | aarch64 (ARM64) | `tensoragent-os-aarch64.iso.xz` | Apple Silicon, UTM, VMware Fusion |
64151
65152 > **Decompress after download:** `xz -d tensoragent-os-*.iso.xz`
66153
@@ -74,13 +161,15 @@ jobs:
74161
75162 # VMware Fusion (Apple Silicon) — use the aarch64 ISO
76163 # UTM (macOS) — use the aarch64 ISO
164+ # VirtualBox / VMware Workstation — use the x86_64 ISO
77165 ```
78166
79167 ### What's included
80168 - 🐋 OpenWhale AI engine (multi-agent, MCP, tools)
81- - 🖥️ WhaleOS Qt6 desktop shell
82- - 📦 Debian Bookworm base
169+ - 🖥️ WhaleOS Qt6 Wayland desktop shell
170+ - 📦 Ubuntu 24.04 LTS (Noble) base
83171 - ⚡ Node.js 22, Python 3, SQLite
84- - 🌐 Chromium, terminal, and system tools
172+ - 🌐 Chromium, Mousepad, Galculator, LibreOffice
173+ - 🔒 Enterprise security (AppArmor, auditd, fail2ban)
85174
86175 **Login:** `ainux` / `ainux`
0 commit comments