
FlashOS
A keyboard-first operating system with one structured language for commands and automation.
One language, visible boundaries
External bytes become values because the program says so.
# External bytes become values only at the explicit JSON boundary.
^printf '[{"name":"build","active":true},{"name":"deploy","active":false}]' \
| from json array \
| where {|item| $item.active} \
| select name \
| collect \
| to json \
| ^cat
[{"name":"build"}]external bytes→ByteStream→from json→ValueStream→to json→bytes
Why Flash
The prompt and the automation language are the same system.
- Flash 1.0 is both the interactive login shell and the language used for .fsh automation.
- Byte streams, text, structured values, and source remain distinct; conversion at an external-process boundary is visible in the program.
What ships today
A deliberately narrow system, delivered as inspectable release artifacts.
System facts
- Target
x86_64-unknown-redox- Interface
- Keyboard-first · TUI-only · pre-alpha
- Shell
Flash 1.0at/usr/bin/fsh- System base
- Pinned Redox kernel and Redox-derived layers
- Images
- Installed-disk and live
x86_64images - Boundary
- Evaluation software; no production, security, support, or broad-hardware guarantee
- UEFI
- Redox kernel
- services
- console and login
- /usr/bin/fsh
Flash 1.0
Structured commands without hiding the process boundary.
- An unsuccessful external status is data, not automatically a runtime error; check deliberately escalates it.
- The release includes modules, static checking, formatting, a language server, jobs, and bounded non-executing plan inspection.
- A dedicated x86_64 FlashOS platform adapter exposes only target capabilities backed by the shipped boundary and runtime evidence.
Current architecture
Ownership is explicit; it does not imply reinvention.
FlashOS owns its product profile and Flash integration while borrowing a pinned, inspectable Redox boundary for the kernel and inherited system layers.
Ownership boundary
- FlashOS-owned
- Product profile, Flash integration, documentation, and release verification
- Pinned or patched
- Build recipes, packages, relibc, bootloader, and selected Redox layers
- Upstream boundary
- Redox kernel, drivers, filesystems, services, and inherited userspace
Build to boot
- Configuration
- Toolchain and recipes
- Image
- UEFI and bootloader
- Pinned Redox kernel
- Services and login
/usr/bin/fsh
Future direction
Possible extensions remain visibly separate from what ships.
Direction — not shipped in v0.2.0
- A stable system API and shared semantic actions could let Flash and a future View present the same operations.
- A dedicated TUI, services model, controlled apply, secret capabilities, and persistent audit artifacts are direction—not v0.2.0 features.
Direction — not shipped in v0.2.0
Evidence, bounded by what it proves
Build once, qualify exact bytes, publish qualified bytes.
The v0.2.0 candidate binds source identity, image digests, runtime results, checksums, SBOMs, logs, performance evidence, and publication metadata. QEMU is the automated reference—not a physical-hardware claim.
Published release evidence
v0.2.0
- Release
- v0.2.0
- Target
- x86_64-unknown-redox
- Profile
- flashos-release
- Tree
c41b976e0362
FlashOS-0.2.0-x86_64-harddrive.img.zst
15.8 MB · sha256 8300024fdba0…
QEMU q35 / UEFI · NVME · exact raw digest · success on attempt one
FlashOS-0.2.0-x86_64-live.iso.zst
15.8 MB · sha256 a77ebb88d73a…
QEMU q35 / UEFI · USB · exact raw digest · success on attempt one
All 12 published assets
- candidate-manifest.json3,681 bytes · a33d339be3eb…
- cookbook.lock828 bytes · 19f75f8867aa…
- FlashOS-0.2.0-image.cdx.json4,481 bytes · 6ca0f1feaf96…
- FlashOS-0.2.0-release-notes.md5,997 bytes · 5b9548d41f7a…
- FlashOS-0.2.0-source.cdx.json377,884 bytes · 7b290b58b8a0…
- qemu-harddrive-performance.json2,411 bytes · 2f73b2726bc4…
- qemu-harddrive-smoke.log84,477 bytes · a5d517785de2…
- qemu-live-usb-smoke.log56,150 bytes · abcf2fef8c0c…
- qemu-results.json494 bytes · ad795eb60ae7…
- SHA256SUMS936 bytes · f48526616629…
Checksums bind downloaded bytes. GitHub provenance records workflow identity for published subjects. Neither is proof of bit-for-bit reproducibility, a security audit, physical hardware support, or production readiness.
Engineering case study
Narrow the promise. Clarify the boundary. Make evidence part of the release.
- 01
Keyboard-first scope keeps the product idea testable while leaving graphical and broad-hardware work outside the current promise.
- 02
The project moved from the archived AArch64 experiment to an x86_64, Redox-based product and made Flash—not a kernel rewrite—the owned center.
- 03
The release separates source checks, image construction, exact-byte QEMU qualification, and device-specific physical observations so each claim stays within its evidence layer.
Behind FlashOS
Why I build FlashOS—and how I work.
Creator and maintainer
Anton Hahn
FlashOS began as a way for me to learn by building. It brings together operating systems, language design, architecture, tools, and testing—and gives me room to follow an idea from its first outline to something I can run, test, and improve.
Documentation
Follow the reader task, not a repository tree.
The reader-facing v0.2.0 documentation is mirrored from its canonical Markdown. Direct source references remain bounded, read-only, and first-order.