diff --git a/site/com/Inquiries.WebHome.xwiki b/site/com/Inquiries.WebHome.xwiki new file mode 100644 index 00000000..672f40db --- /dev/null +++ b/site/com/Inquiries.WebHome.xwiki @@ -0,0 +1,95 @@ +{{html clean="false"}} + + +
+ +
+ +
+ +
+

Inquiries

+

Talk to the bridge.

+

Licensing, research collaboration, press or plain curiosity — every message is read by a human. Want to contribute code? Head to starshipos-f18.org.

+
+ +
+ +
+
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +Opens your e-mail program. Replies usually within a few days. +
+
+ + + +
+ + + +
+{{/html}} diff --git a/site/com/Main.WebHome.xwiki b/site/com/Main.WebHome.xwiki new file mode 100644 index 00000000..0d622f26 --- /dev/null +++ b/site/com/Main.WebHome.xwiki @@ -0,0 +1,128 @@ +{{html clean="false"}} + + +
+ +
+ +
+ +
+
+

ok> bare metal · FORTH · C99

+

An operating system that obeys a conservation law.

+

StarshipOS is a bare-metal operating system built from the ground up in StarForth and C99. One compudynamic engine governs every word, message, block and virtual machine — and holds K≡1.0 on every architecture it runs on.

+
+See how it works +Make an inquiry +
+
+
+StarshipOS badge: Santino the mascot inside a ring on a starfield +
+
+ +
+
+
38,400+
experimental runs validating K≡1.0
+
3 ISAs
amd64 · aarch64 · riscv64
+
FORTH-79
compliant core, live at the ok> prompt
+
Patent pending
LithosAnanke kernel architecture
+
+
+ +
+

The system

+

One engine. One fabric. Everything in it obeys the same physics.

+
+
+

StarForth

+

the language and the VM

+

A FORTH-79 compliant adaptive virtual machine written in C99. Words execute by heat: what the system uses, it keeps close. Everything a user touches is StarForth — there is no compiler inside the box.

+
+
+

LithosAnanke

+

the microkernel

+

A bare-metal microkernel built around the Stadium — a single fabric where words, messages, blocks and VMs live side by side, all governed by one compudynamic engine.

+
+
+

The fleet

+

VMs that are born, not spawned

+

Hera births and governs the fleet. Artemis keeps the blocks. Console draws a vector framebuffer. Hermes, in the kernel, carries every message — and every message is checked against its ACL.

+
+
+
+ +
+
+

Phenomenon first

Observe the behaviour, then write the mathematics. Document before code.

+

Parity first

The same machine on every ISA, proven by reproducible dictionary hashes.

+

Identity on a key

Your certificate lives on a thumb drive. No key, no session.

+

Minimal by design

A small core of primitives; everything else composed in FORTH.

+
+
+ +
+
+
+

Research

+

James Law: K≡1.0

+

A conservation invariant that holds regardless of instruction set. Validated across 38,400+ runs in 128 configurations under QEMU on amd64, aarch64 and riscv64, and published on SSRN.

+
+
+Read the paper +Design docs on the .org +
+
+
+ +
+

Next: silicon

+

From virtual machine to fabric.

+

StarForth V4 is being brought up as a mesh of tiny stack-machine cores on FPGA — words as instructions, messaging in hardware, and the compudynamic engine steering what runs and when. Same machine, same parity, now in logic.

+
+ +
+
+Painted portrait of Captain Bob at a keyboard with a mug of coffee, wearing a StarshipOS jacket +
+

From the bridge

+

Built by one engineer, in the open.

+

StarshipOS is designed and built by Captain Bob — Robert Allan James — drawing on roughly fifty years of embedded-systems work. Development happens in Ashland, Ohio, and in public on starshipos-f18.org.

+Get in touch +
+
+
+ +
+
+
+

Launch announcements

+

Milestones, releases and papers. Low volume. Unsubscribe anytime.

+
+
+ + + +
+
+
+ + + +
+{{/html}} diff --git a/site/com/README.md b/site/com/README.md new file mode 100644 index 00000000..782c042a --- /dev/null +++ b/site/com/README.md @@ -0,0 +1,18 @@ +# site/com -- the starshipos-f18.com XWiki's pages + +The public face of StarshipOS, made from the "StarshipOS.com" design canvas (claude.ai), whose +artboards are copied into `canvas/` as they are: Home (`Main.WebHome`), `Inquiries.WebHome`, +`TryIt.WebHome`. `build.py` turns each into one `{{html}}` block (a page author with script rights) +and says what changes on the way: the wiki's links and domains, the images as attachments +(`badge.jpg`, `captain-bob.jpg`, web-size copies of the canvas's), the real console in Try it, the +forms by e-mail. `install.sh` puts them on the wiki and checks a guest can read them: + +``` +site/com/build.py +XWIKI_USER=rajames XWIKI_PASSWORD=... site/com/install.sh +``` + +Change the design on the canvas, copy the artboard into `canvas/`, and run both again. + +Installed 2026-11-07. Try it is on the wiki but not in the navigation (#117): its console, +`try.starshipos-f18.com`, is not served yet (#115). diff --git a/site/com/TryIt.WebHome.xwiki b/site/com/TryIt.WebHome.xwiki new file mode 100644 index 00000000..c2da0a81 --- /dev/null +++ b/site/com/TryIt.WebHome.xwiki @@ -0,0 +1,104 @@ +{{html clean="false"}} + + +
+ +
+ +
+ +
+

ok> try it

+

A StarshipOS machine of your own.

+

Not a recording, not a simulation of StarshipOS: the console below is a real machine, started just for you and already at its prompt. You are Zuse, the superuser — of a machine that exists only for your session. There is nothing to break, and nothing you do is kept.

+
+ +
+
+
+StarshipOS · amd64 · your session +try.starshipos-f18.com +
+ +
+

If the console does not connect, every machine is in use: try again in a few minutes.

+
+ +
+
+
Zuse
the superuser, of this machine only
+
amd64
LithosAnanke v2.1.0 · StarForth v4
+
30 min
then it is gone; reload for a new one
+
Offline
no network inside the machine
+
+
+ +
+

Things to try

+

StarshipOS speaks FORTH.

+

Type a line and press Enter. When the machine has done it, it answers ok.

+
+
+

You type

+

3 4 + .

+

It answers

+

7 ok

+

Numbers go on a stack; + adds the top two; . prints the result.

+
+
+

You type

+

: SQUARE DUP * ;

+

It answers

+

ok

+

You have just taught the machine a new word, SQUARE.

+
+
+

You type

+

7 SQUARE .

+

It answers

+

49 ok

+

…and used it, as if it had always been there.

+
+
+
+ +
+
+

A machine of your own

Resumed at its prompt from one that booted, passed its 538 power-on self-tests and logged Zuse in — so you never wait for a boot.

+

The latest green build

Always the most recent build that booted on amd64, aarch64 and riscv64 and passed every acceptance check.

+

A Zuse of its own

Zuse is whoever holds the identity drive. Here it is a demo Zuse minted for this page alone — not anyone's real identity.

+

Gone when you go

Close the page, or let 30 minutes pass, and the machine is stopped and discarded. The next visitor starts clean.

+
+
+ +
+
+
+

A small server

+

Emulated, so a little slower.

+

The demo runs in an emulator on a modest server: slower than StarshipOS on real hardware, and only a few machines at once. The real thing boots straight from firmware, with nothing beneath it.

+
+
+How it works +Read the source +
+
+
+ + + +
+{{/html}} diff --git a/site/com/badge.jpg b/site/com/badge.jpg new file mode 100644 index 00000000..fe2b6bd1 Binary files /dev/null and b/site/com/badge.jpg differ diff --git a/site/com/build.py b/site/com/build.py new file mode 100755 index 00000000..30866304 --- /dev/null +++ b/site/com/build.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 +"""build.py -- the starshipos-f18.com XWiki pages, made from the "StarshipOS.com" design canvas. + + site/com/build.py canvas/{Main,Inquiries,TryIt}.dc.html -> {Main,Inquiries,TryIt}.WebHome.xwiki + +The canvas is the source: its artboards are copied into canvas/ as they are, and this turns each into +one {{html}} block (which needs a page author with script rights). What changes on the way: + + - the accent hole becomes its default colour, and the canvas's links become the wiki's pages + (Main.dc.html -> /bin/view/Main/, ...) and the real domains (starshipos.org -> starshipos-f18.org); + - the two images become attachments of Main.WebHome (badge.jpg, captain-bob.jpg -- web-size copies + of the canvas's uploads); + - Try it: the drawn console becomes the real one, an iframe of try.starshipos-f18.com; + - the forms, which have no server behind them, send by e-mail (mailto:); + - a link the canvas left as a placeholder ([SSRN PAPER URL]) points at the .org until it is given. + +install.sh puts the pages and the images on the wiki. +""" +import os +import re + +ACCENT = "#F5891F" +FONTS = ('\n' + '') +ORG = "https://starshipos-f18.org/" +PAGES = ["Main", "Inquiries", "TryIt"] +IMAGES = {"/_blob/5b564d54d98e02ad600c913a9a1888f2": "badge.jpg", + "/_blob/5483451f292782a8b366e437181c4bcf": "captain-bob.jpg"} + +CONSOLE = '''
+
+StarshipOS · amd64 · your session +try.starshipos-f18.com +
+ +
+

If the console does not connect, every machine is in use: try again in a few minutes.

''' + + +def body(src): + m = re.search(r"(.*)", src, re.S) + html = re.sub(r".*?", "", m.group(1), flags=re.S).strip() + html = html.replace("{{accent}}", ACCENT) + for p in PAGES: + html = html.replace('href="%s.dc.html"' % p, 'href="/bin/view/%s/"' % p) + html = html.replace('href="https://starshipos.org"', 'href="%s"' % ORG) + html = html.replace(">starshipos.org", ">starshipos-f18.org") + html = html.replace("on starshipos.org.", "on starshipos-f18.org.") + html = html.replace('href="[SSRN PAPER URL]"', 'href="%s"' % ORG) + for blob, name in IMAGES.items(): + html = html.replace('src="%s"' % blob, 'src="/bin/download/Main/WebHome/%s"' % name) + html = html.replace("min-height: 100vh", "min-height: 0") # inside the wiki's page, not a screen + return html + + +def try_it(html): + start = html.index('
", html.index("[LIVE CONSOLE]")) + len("

") + return html[:start] + CONSOLE + html[end:] + + +def forms(html, page): + if page == "Main": + html = html.replace('
', + '') + html = html.replace(' + + + +StarshipOS — Inquiries + + + + + + + + + +
+ +
+ +
+ +
+

Inquiries

+

Talk to the bridge.

+

Licensing, research collaboration, press or plain curiosity — every message is read by a human. Want to contribute code? Head to starshipos.org.

+
+ +
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +Replies usually within a few days. +
+ + + + +
+ +
+
+© 2026 Robert Allan James · A Starship Foundation project (in formation) +Homestarshipos.org +
+
+ +
+
+ + + diff --git a/site/com/canvas/Main.dc.html b/site/com/canvas/Main.dc.html new file mode 100644 index 00000000..9bb787ce --- /dev/null +++ b/site/com/canvas/Main.dc.html @@ -0,0 +1,151 @@ + + + + +StarshipOS — Home + + + + + + + + + +
+ +
+ +
+ +
+
+

ok> bare metal · FORTH · C99

+

An operating system that obeys a conservation law.

+

StarshipOS is a bare-metal operating system built from the ground up in StarForth and C99. One compudynamic engine governs every word, message, block and virtual machine — and holds K≡1.0 on every architecture it runs on.

+ +
+
+StarshipOS badge: Santino the mascot inside a ring on a starfield +
+
+ +
+
+
38,400+
experimental runs validating K≡1.0
+
3 ISAs
amd64 · aarch64 · riscv64
+
FORTH-79
compliant core, live at the ok> prompt
+
Patent pending
LithosAnanke kernel architecture
+
+
+ +
+

The system

+

One engine. One fabric. Everything in it obeys the same physics.

+
+
+

StarForth

+

the language and the VM

+

A FORTH-79 compliant adaptive virtual machine written in C99. Words execute by heat: what the system uses, it keeps close. Everything a user touches is StarForth — there is no compiler inside the box.

+
+
+

LithosAnanke

+

the microkernel

+

A bare-metal microkernel built around the Stadium — a single fabric where words, messages, blocks and VMs live side by side, all governed by one compudynamic engine.

+
+
+

The fleet

+

VMs that are born, not spawned

+

Hera births and governs the fleet. Artemis keeps the blocks. Console draws a vector framebuffer. Hermes, in the kernel, carries every message — and every message is checked against its ACL.

+
+
+
+ +
+
+

Phenomenon first

Observe the behaviour, then write the mathematics. Document before code.

+

Parity first

The same machine on every ISA, proven by reproducible dictionary hashes.

+

Identity on a key

Your certificate lives on a thumb drive. No key, no session.

+

Minimal by design

A small core of primitives; everything else composed in FORTH.

+
+
+ +
+
+
+

Research

+

James Law: K≡1.0

+

A conservation invariant that holds regardless of instruction set. Validated across 38,400+ runs in 128 configurations under QEMU on amd64, aarch64 and riscv64, and published on SSRN.

+
+ +
+
+ +
+

Next: silicon

+

From virtual machine to fabric.

+

StarForth V4 is being brought up as a mesh of tiny stack-machine cores on FPGA — words as instructions, messaging in hardware, and the compudynamic engine steering what runs and when. Same machine, same parity, now in logic.

+
+ +
+
+Painted portrait of Captain Bob at a keyboard with a mug of coffee, wearing a StarshipOS jacket +
+

From the bridge

+

Built by one engineer, in the open.

+

StarshipOS is designed and built by Captain Bob — Robert Allan James — drawing on roughly fifty years of embedded-systems work. Development happens in Ashland, Ohio, and in public on starshipos.org.

+Get in touch +
+
+
+ +
+
+
+

Launch announcements

+

Milestones, releases and papers. Low volume. Unsubscribe anytime.

+
+
+ + + +
+
+
+ + + +
+
+ + + diff --git a/site/com/canvas/TryIt.dc.html b/site/com/canvas/TryIt.dc.html new file mode 100644 index 00000000..e6cc2522 --- /dev/null +++ b/site/com/canvas/TryIt.dc.html @@ -0,0 +1,136 @@ + + + + +StarshipOS — Try it + + + + + + + + + +
+ +
+ +
+ +
+

ok> try it

+

A StarshipOS machine of your own.

+

Not a recording, not a simulation of StarshipOS: the console below is a real machine, started just for you and already at its prompt. You are Zuse, the superuser — of a machine that exists only for your session. There is nothing to break, and nothing you do is kept.

+
+ +
+
+
+StarshipOS · amd64 · your session +try.starshipos-f18.com +
+
+
StarshipOS -- starting a throwaway machine, yours for up to 30 minutes. Nothing you do is kept.
+
Try: 3 4 + . : SQUARE DUP * ; 7 SQUARE .
+
Ready -- type a line and press Enter.
+
[zuse@Hera] ok> 3 4 + .
+
[zuse@Hera] 7 ok
+
[zuse@Hera] ok> : SQUARE DUP * ; 7 SQUARE .
+
[zuse@Hera] 49 ok
+
[zuse@Hera] ok>
+
+
+

[LIVE CONSOLE] On the site this panel is the machine itself — the console of try.starshipos-f18.com, embedded. If it does not connect, every machine is in use; try again in a few minutes.

+
+ +
+
+
Zuse
the superuser, of this machine only
+
amd64
LithosAnanke v2.1.0 · StarForth v4
+
30 min
then it is gone; reload for a new one
+
Offline
no network inside the machine
+
+
+ +
+

Things to try

+

StarshipOS speaks FORTH.

+

Type a line and press Enter. When the machine has done it, it answers ok.

+
+
+

You type

+

3 4 + .

+

It answers

+

7 ok

+

Numbers go on a stack; + adds the top two; . prints the result.

+
+
+

You type

+

: SQUARE DUP * ;

+

It answers

+

ok

+

You have just taught the machine a new word, SQUARE.

+
+
+

You type

+

7 SQUARE .

+

It answers

+

49 ok

+

…and used it, as if it had always been there.

+
+
+
+ +
+
+

A machine of your own

Resumed at its prompt from one that booted, passed its 538 power-on self-tests and logged Zuse in — so you never wait for a boot.

+

The latest green build

Always the most recent build that booted on amd64, aarch64 and riscv64 and passed every acceptance check.

+

A Zuse of its own

Zuse is whoever holds the identity drive. Here it is a demo Zuse minted for this page alone — not anyone's real identity.

+

Gone when you go

Close the page, or let 30 minutes pass, and the machine is stopped and discarded. The next visitor starts clean.

+
+
+ +
+
+
+

A small server

+

Emulated, so a little slower.

+

The demo runs in an emulator on a modest server: slower than StarshipOS on real hardware, and only a few machines at once. The real thing boots straight from firmware, with nothing beneath it.

+
+ +
+
+ + + +
+
+ + + diff --git a/site/com/captain-bob.jpg b/site/com/captain-bob.jpg new file mode 100644 index 00000000..5e421e16 Binary files /dev/null and b/site/com/captain-bob.jpg differ diff --git a/site/com/install.sh b/site/com/install.sh new file mode 100755 index 00000000..bc9a3d0f --- /dev/null +++ b/site/com/install.sh @@ -0,0 +1,49 @@ +#!/bin/bash +# install.sh -- the starshipos-f18.com XWiki's pages, from the "StarshipOS.com" design canvas +# (build.py makes them): Main.WebHome (Home), Inquiries.WebHome, TryIt.WebHome, and the two +# images, attachments of Main.WebHome. All readable by everyone; the wiki's own rights decide the +# rest. Through XWiki's REST API: +# +# XWIKI_USER=rajames XWIKI_PASSWORD=... site/com/install.sh [https://starshipos-f18.com] +# +# Run it again after build.py: pages and images are replaced. It ends by checking, without +# logging in, that every page and image is there. +set -euo pipefail +cd "$(dirname "$0")" +base=${1:-https://starshipos-f18.com} +rest="$base/rest/wikis/xwiki" +user=${XWIKI_USER:?set XWIKI_USER} +pass=${XWIKI_PASSWORD:?set XWIKI_PASSWORD} +auth=(-u "$user:$pass") + +page() { # page <file>: create or replace <space>.WebHome + local body + body=$(python3 -c ' +import sys +from xml.sax.saxutils import escape +print("<page xmlns=\"http://www.xwiki.org\"><title>%sxwiki/2.1" + "%s" % (escape(sys.argv[1]), escape(open(sys.argv[2]).read())))' "$2" "$3") + curl -fsS -o /dev/null -w " page $1.WebHome: %{http_code}\n" "${auth[@]}" -X PUT \ + -H 'Content-Type: application/xml' --data-binary "$body" "$rest/spaces/$1/pages/WebHome" +} +attach() { # attach : create or replace an attachment of .WebHome + curl -fsS -o /dev/null -w " attachment $1.WebHome/$2: %{http_code}\n" "${auth[@]}" -X PUT \ + -H 'Content-Type: image/jpeg' --data-binary "@$2" "$rest/spaces/$1/pages/WebHome/attachments/$2" +} + +echo "=== $base, as $user" +page Main "StarshipOS" Main.WebHome.xwiki +attach Main badge.jpg +attach Main captain-bob.jpg +page Inquiries "Inquiries" Inquiries.WebHome.xwiki +page TryIt "Try StarshipOS" TryIt.WebHome.xwiki + +echo "=== as a guest" +bad= +for u in /bin/view/Main/ /bin/view/Inquiries/ /bin/view/TryIt/ \ + /bin/download/Main/WebHome/badge.jpg /bin/download/Main/WebHome/captain-bob.jpg; do + code=$(curl -s -o /dev/null -w '%{http_code}' "$base$u") + if [ "$code" = 200 ]; then echo " $u: 200"; else echo " $u: $code -- NOT readable"; bad=1; fi +done +[ -z "$bad" ] || { echo "install: a guest cannot read everything; see above" >&2; exit 1; } +echo "=== done: $base/bin/view/Main/" diff --git a/site/org/build.py b/site/org/build.py old mode 100644 new mode 100755