Project · restoration
IRIX 7
A Rust operating system for the SGI Indy, meant to run IRIX 6.5 applications unchanged.
- Kind
- restoration
- Tags
- sgi, irix, rust, mips, restoration
IRIX 7 is an attempt at the successor SGI might have built if it had not left IRIX for Linux: a new operating system, written in Rust, for the Indy. The aim is that existing IRIX 6.5 applications run on it unchanged, through a compatibility layer that speaks the old ABI. Nothing built for IRIX 7 is promised to run on IRIX 6.5.
It is a one-person project in which AI agents write most of the code, and it lives in the irix7 organisation on GitHub.
Where it stands
The kernel boots on an emulated Indy and passes its gates there. It has not yet been booted on a real one. It does not yet run IRIX 6.5 applications: the compatibility layer so far is an ELF parser and a synthetic test program, and the project’s own risk register calls that layer its longest pole.
What does run on the emulated machine: a replacement boot ROM, the kernel with Ethernet, DHCP, DNS, TLS, the Newport framebuffer, serial, keyboard, clock and SCSI, a recovery shell, and a Rust program built against the standard library.
The machine
An Indy is a MIPS R4400, big-endian, with Newport graphics at 1280 by 1024, 10 Mbit Ethernet and SCSI. The kernel is built for the n32 ABI. The applications it has to carry use o32 and n32; n64 is out of scope because the machine cannot execute it. Getting Rust to target this at all is described in A Rust target for big-endian MIPS III n32.
Two tracks
The work runs on two tracks that share the hardware target and nothing else.
The first rebuilds IRIX 6.5 itself with a modern toolchain, privately, with SGI’s own MIPSpro compiler as the reference for correct behaviour. Its public output is a GCC and binutils cross-toolchain for mips-sgi-irix6.5: irix7/project, irix7/gcc and irix7/binutils-gdb. No IRIX source, headers, binaries or disk images are published. One of the binutils fixes is in Restoring IRIX 6.5 dynamic linking in binutils.
The second is the new system, irix7/os, under GPL-3.0. It is a clean-room design: whatever is learned from the original system is meant to reach the new code only as a written description of behaviour.
Repositories
- irix7/os: the ROM, the kernel for the Indy, and ports of the same kernel to x86-64 and PowerPC that exist mainly so CI has more than one machine to run on.
- irix7/relibc: Redox’s Rust C library, ported to big-endian n32. See The MIPS n32 syscall table is not n64 plus 1000.
- irix7/os-sdk: the ABI for loadable modules and user programs. The kernel has since linked its modules in and dropped the loader.
- irix7/iris: a fork of the IRIS Indy emulator with what a build farm needs: parallel instances and a control socket. Every kernel gate boots here.
- irix7/ghidra: Ghidra with support for MIPSpro’s debug formats and IRIX’s ELF conventions, for the graphics and audio code SGI never shipped source for.
- irix7/harness: reserved for the tooling that would record and verify agent sessions. It is empty.
Design
On 25 October 2026 the design changed from a single Rust kernel to one logical computer made of 1 to 128 kernel replicas. Each replica runs the same architecture-independent core, compiled to WebAssembly, on a small native layer for its machine. Compatibility with IRIX binaries stays native, since MIPS code cannot run inside a WebAssembly interpreter.
The ROM fetches the kernel from the network, which is explained in A boot ROM that downloads its kernel. The kernel also carries an MCP server, so that an agent can inspect and drive the running system.
How the agents’ work is checked is in Auditing what the agents said was done.
Notes
Things
- Insite I325VM floppy drive (SGI Indy) SGI · component
- SGI Indy power supply Sony APS-81 SGI · component
- SGI mouse (Silicon Graphics, beige) SGI · accessory
- Silicon Graphics Indy workstation (blue, closed) SGI · system
Code
- irix7/binutils-gdb GNU Binutils, GNU Debugger - Read only mirror of https://sourceware.org/git/binutils-gdb.git
- irix7/gcc GCC fork with libgccjit changes needed by rustc_codegen_gcc
- irix7/ghidra Ghidra is a software reverse engineering (SRE) framework
- irix7/harness Agent orchestration, evidence and verification for transcribing IRIX into a portable Rust-native system
- irix7/iris SGI Indy Emulator
- irix7/os IRIX 7: a Rust-native operating system that runs existing IRIX 6.5 application binaries through a legacy ABI layer, inheriting the 6.5 compatibility mandate without forward compatibility
- irix7/os-sdk Developer SDK for IRIX 7 loadable modules
- irix7/project IRIX toolchain: GCC 16.2 patch series, rig and stock-rebuild scripts
1 more
- irix7/relibc IRIX 7 fork of relibc: n32 big-endian POSIX/C ABI bring-up
- Aquila Project
- jupiter-os Project
- Linux companion agent Project