SPOOK OS

Operator's guide — v1.4 "Cursor"


SPOOK OS is a computer that lives in a single web page. Open it anywhere, mount your own web host as its drive, and you have publishing, encrypted storage, and dead-drop messaging — on any device with a browser. Close the tab and walk away; your machine reassembles wherever you open it next.

Everything is typed into the SYS> bar at the bottom of the screen. Type /help inside the machine any time for the built-in version of this guide.

QUICK START

  1. Open the terminal. Type /help, look around. Try /color green and /scale 3.
  2. Make something: /new notes drops you straight into editing. Type. Press ESC (or tap the bottom bar) when done.
  3. To publish to the web you need a node — a single PHP file on any web host. Type /node to download it, open it in any text editor and set the secret at the top, upload it to your host's web root. That is the entire server installation.
  4. Connect: /mount yourdomain.com YOUR-SECRET
  5. Publish: /publish notes — the post URL appears in comms and lands on your clipboard.

COMMANDS — CARDS & EDITING

Cards are the machine's documents: a stack of headings, rules, and paragraphs, each with a name you type in commands.

/new [card]create a card and start editing it
/edit [card]edit an existing card (cursor lands at the end)
/kill [card]remove a card from the machine
/clear [card]wipe a card's text, keep its structure
/view [card]show one card full-screen (monotasking)
/homeshow all cards again
/copy [card]copy a card's text to the clipboard
/copy urlcopy the last published post's URL (also just /copy)

COMMANDS — PUBLISHING

Your node is one PHP file on your own host. It stores posts as flat JSON, regenerates the whole site as static pages on every change — index with live search, one page per post, RSS feed — and can email you when a post lands.

/mount [host] [secret]connect your node. /mount spookos.net abc123 — the address is normalized for you
/unmountdisconnect and forget the secret
/publish [card]push a card to the site. First h1 is the title; paragraphs are the body. A card that has published before updates its post
/unpublish [card]remove that card's post from the site
/postslist every post on the node (* marks edited posts)
/pull [post-id]fetch a post back into an editable card — edit anywhere, republish to update
/attach [card]pick a photo (camera works on phones); it uploads to your node and an [img:...] token lands in the card, becoming a real image on the published page
/nodedownload spook_node.php — the machine carries its own server
/sourcedownload this machine's ROM. A saved copy cannot be swapped out from under you

Photos are scrubbed before they leave your device. The attach pipeline re-encodes every image, which strips EXIF metadata — GPS coordinates, device identifiers, timestamps — automatically. What uploads is the picture, not where you were standing.

COMMANDS — THE ENCRYPTED DISK

Your whole machine — every card, setting, and draft — sealed with a passphrase and stored on your node. The passphrase never leaves your browser; the host holds ciphertext it cannot read.

/store [passphrase]seal the machine and store it (optional slot name as a second word: /store pass fieldwork)
/restore [passphrase]reassemble the machine from the disk. Wrong passphrase fails clean
/savedownload the machine as a JSON file instead (unencrypted, local)
/loadrestore from a local JSON file

The burner ritual: walk up to any computer → open your terminal URL → /mount host secret/restore passphrase → your machine is back. Close the tab and it is gone from that computer.

COMMANDS — DEAD DROPS

Sealed messages left at your node under a channel derived from a passphrase. The node cannot read them and cannot even see the channel's real name. Drops always expire — seven days by default.

/drop [passphrase] [message]leave a sealed message on that passphrase's channel
/pickup [passphrase]collect the channel's messages into comms

Share the terminal URL, the mount details, and a drop passphrase with someone, and you have an asynchronous sealed channel — no accounts, no apps, nothing retained past the TTL.

COMMANDS — SYSTEM

/helpthe built-in guide and the constitution
/verifythis ROM's fingerprint (see INTEGRITY below)
/color [red|green|amber|ghost]set the phosphor
/scale [1-5]set pixel size — 2 is default; 1 is dense, 4 is display type

KEYS & TOUCH

ESCleave editing; from a view, return home
←↑↓→move the cursor while editing; scroll otherwise
Home / Endstart / end of the current line
Deletedelete forward at the cursor
PgUp / PgDnscroll by a screen
click / tap textplace the cursor right there
tap the bottom barsame as ESC (phones have no Escape key)
dragscroll (touch)
pasteworks anywhere — including the mount secret on a phone
Alt+P E A K C G Stactical glyphs: 🔒 👁 👾 🗝 ⌖ ᗣ ☠
Alt+[ ] { }curly quotes “ ” ‘ ’
Alt+1 2 3signal bars ① ② ③

THE TWO CREDENTIALS

The system uses two different keys for two different jobs, and it pays to keep them straight:

The node secret (set inside spook_node.php) proves to your host that it's you. It authorizes publishing, the disk, and media. It is held in memory only while the tab is open — never written into saved state — which is why each session begins with /mount.

Passphrases (for /store, /restore, /drop, /pickup) encrypt content. They never travel anywhere — keys are derived from them inside your browser, and your host stores only ciphertext. Lose a passphrase and nothing can recover what it sealed. That is the design working, not failing.

INTEGRITY

/verify shows the SHA-256 fingerprint of the kernel, computed at boot. Compare it out of band against a copy you trust — the hash published with each release, or your own saved file. Stated plainly: a tampered ROM can fake the verify screen, so the fingerprint is a tripwire to check, not a promise to believe. The strong defenses are the simple ones: /source yourself a copy and keep it. A file on your own drive cannot be swapped out from under you.

SPOOK MARKUP — HOW A CARD BECOMES A POST

When you publish, the post is formatted from the card, not typed in a separate syntax. Structure you already have carries over, and a few line prefixes handle the rest. Everything is decided by how a line starts — there are no closing marks to match, which is the point on a phone.

first headingthe post title
a later headinga section heading in the post
a rulea divider
# texta heading, typed inline
- texta bullet — stack lines for a list
1. texta numbered item — stack for a list
> texta quote — stack for a block
---a divider, typed inline
a web link on its own linebecomes clickable
anything elsea normal paragraph

A blank line separates paragraphs. Text that follows none of the rules publishes exactly as written, so you never have to think about markup you aren't using. HTML you type is shown as literal text, never run — the post can't be made to do anything you didn't intend.

WORKFLOW — RUNNING A BLOG FROM THE TERMINAL

  1. /new mypost — write. The first heading becomes the title. ESC when done.
  2. /attach mypost if a photo belongs in it; place the [img:...] token where the image should sit.
  3. /publish mypost — the post is live, its URL copied.
  4. Spotted a typo from another device days later? /mount/posts/pull [id] → tap the typo → fix → /publish [id]. The post updates in place, keeping its date and gaining an "updated" stamp.
  5. Retract it entirely with /unpublish [card].

Your site regenerates as pure static files on every change: readers, the RSS feed, and the search box never touch a running program.


SPOOK OS boots from one file, makes zero external requests, runs on old hardware, and keeps the whole machine in one readable JSON state you can save, seal, and carry. The machine lives at spookos.com · transmissions at spookos.net