Software Product Description · Open Source
Computing in the
VMS tradition.
OpenVMX brings the VMS way of working to modern hardware — the DCL command language, RMS record management, system services, and a real kernel executive. Open source, built from public specifications, and packaged to boot.
A real system, not an emulator skin
OpenVMX rebuilds the VMS environment as its own software — the command language, the file system, the system services, the executive — implemented from public specifications and released as open source.
The layers you know from VMS are here as their own libraries, built in dependency order: the freestanding syscall floor, process control blocks with ASTs and event flags, the SYS$ / LIB$ / STR$ run-time, logical-name management, an ODS-2 file system, and Record Management Services on top.
Above them sits DCL — the Digital Command Language shell — matching VMS behavior rather than bash, down to $ prompts, SHOW verbs, and VMS-format file specifications.
Underneath, a kernel module — vms.ko — provides the VMS executive: locks, event flags, ASTs, and access modes as genuinely shared system state, reached from userspace through /dev/vms. When the executive isn't present, services fail honestly with SS$_NOSUCHDEV — never a per-process fake reporting success.
System components
Each facility is a discrete library or module — you can read it, build it, and test it on its own.
System services & RTL
VMS run-time: descriptors, condition handling, logical names, event flags, ASTs. Every API returns a VMS status code — odd is success.
The DCL shell
Lexer, parser, executor, and built-in verbs that follow VMS DCL — not a bash reskin. External utilities dispatch the VMS way.
Records & files
FAB / RAB / NAM / XAB record management over an ODS-2 volume that a real VAX can MOUNT and read.
Kernel executive
The distributed lock manager, event flags, ASTs and access modes as shared system state — reached through /dev/vms.
Native toolchain
A VMS-faithful image activator and linker with symbol-vector activation — the road to building OpenVMX from inside OpenVMX.
Cluster interop
An implementation of the VMScluster wire protocol, so OpenVMX nodes can join and serve storage as a cluster. In active research.
Supported architectures
Digital shipped VMS across four instruction sets in its lifetime. OpenVMX is building toward the same reach — including Alpha, the 64-bit machine Digital designed VMS's future around.
| Architecture | Width | Lineage | Status |
|---|---|---|---|
| x86-64 | 64-bit | Primary development target | SUPPORTED |
| aarch64 | 64-bit | ARM · second first-class target | SUPPORTED |
| Alpha / AXP | 64-bit | DEC Alpha — first-class | IN PROGRESS |
| VAX | 32-bit | Where VMS began | ASPIRATIONAL |
Itanium (IA-64) is out of scope. Alpha is where OpenVMX proves its 64-bit behavior — the architecture VMS was rebuilt around when it went 64-bit.
Build it, boot it
One runtime target: the real-kernel / QEMU path. Clone the source, build the bootable image, and bring up an OpenVMX VM.
# clone the source $ git clone https://github.com/3dl-dev/vms.git && cd vms # build the bootable distribution (all deps containerized) $ docker build -f Dockerfile.bootable -o dist . # boot OpenVMX as a QEMU VM — vms.ko is the executive via /dev/vms $ ./distro/boot/run-qemu.sh dist/vmlinuz dist/initramfs-ovmx.cpio.gz # at the login banner: SYSTEM / MANAGER $ SHOW SYSTEM
Prefer to work at the library level? A standard cmake -B build -DBUILD_TESTS=ON tree builds the shared libraries and the test suite with ctest. Full instructions live in docs/building.md.