gemiweb0, a gemini-HTTP/HTML subset

No need to install a special client or pay for a custom server: enables HTTP-based shared web hosting of the simplest artisan content possible.

Status

Status: not public yet, volunteer developers and user brainstorming welcome!

The internal names of the work in progress subsets used are HTTP0, HTML0, JS0 and CSS0 respectively.

Documentation

See the doc folder for more information:

Older notes:

Development snapshots

Note that we are still accepting developer feedback on the specification. You should not build anything serious on it until we have finalized it. The proof of concept implementation of the js0 runtime, http0 fetcher and html0 renderer (so called "picobrowser") is not intended for general audiences yet and serves more of a code sample to review and be inspired by. All example web content is tested for compatibility with this kit. For safety, do consider running with containerization during testing.

Example web content

Play with an example game obeying this subset:

Rock-paper-scissors numerical strategy game

Simplified abstract tactical simulation inspired by PAX Britannica against two computer AI controlled opponents. Example interactive web0 app for JavaScript0/gemiweb0
4 kB | 2023-11-09/2025-08-07 | rockpaps

Ideas to talk about

Socialize with group of friends by speaking about in-depth topics. Keep track of questions you had discussed in each social circle using JavaScript0 on GemiWeb0. Default survey set from Ask Me Anything Meaningful.
12 kB | 2025-07-24/2025-08-07 | talkidea

Memory pair matching game

Flip two cards at a time to eliminate matching characters. Example interactive app for Web0/JavaScript0/gemiweb
3 kB | 2023-11-28/2025-01-01 | memopair

Numerical sequence memory game

A sequence of numbers is displayed to remember. You need to recall them in order. The list gets longer after each successful repetition. Play a JavaScript0 game on GemiWeb0
2 kB | 2024-07-09/2025-03-15 | memonums

Towers of Hanoi disk moving

Play a JavaScript0 mechanical puzzle game on GemiWeb0
2 kB | 2024-06-28/2024-12-26 | towhanoi

Permutation slide puzzle

Play the fifteen tile mechanical game on GemiWeb0 with JavaScript0
2 kB | 2024-07-08/2025-07-10 | permslid

rot13 snippet

Encode and decode text using a Caesar substitution cipher with key offset of 13 in JavaScript0 on GemiWeb0
2 kB | 2025-04-03/2025-07-01 | rot13

Sum-product list

Sum product of space delimited numbers in commented lines using JavaScript0 on GemiWeb0
2 kB | 2025-04-03/2025-05-27 | sumlist

Evaluate expressions as music

Simple musical synthesizer for running short snippets of code which produces momentary amplitude using JavaScript0 on GemiWeb0. Inlines sound as uncompressed wave file in data: embed.
5 kB | 2025-07-11/2025-08-07 | evalmus

ANSI sheet music in data: embed

Simple square wave based monophonic synthesizer for playing short snippets of escapes as uncompressed wave file using JavaScript0 on GemiWeb0
5 kB | 2025-06-29/2025-08-07 | ansimus

German-English flash card spaced repetition knowledge trainer quiz

Learning algorithm compatible with SuperMemo-2 to allow interoperability of your Mnemosyne database. Basic Germanic words with English translation as glossary. Uses JavaScript0 on GemiWeb0
14 kB | 2025-05-05/2025-06-08 | knowende

Flash card spaced repetition knowledge trainer quiz

Learning algorithm compatible with SuperMemo-2 to allow interoperability of your Mnemosyne database. Example interactive app using JavaScript0 on GemiWeb0
7 kB | 2025-05-02/2025-07-13 | knownone

Playing card shuffle goodness

Monte Carlo simulations for comparing the efficiency of algorithms that may be executed manually without electronics for shuffling a deck of playing cards and for determining how well a shuffle was executed using JavaScript0 on GemiWeb0
6 kB | 2025-01-01/2025-01-12 | goodshuf

JavaScript knowledge trainer

Answer quiz questions to learn facts. Example interactive app for Web0/JavaScript0/gemiweb
4 kB | 2024-02-02/2025-07-04 | knowcard

Property test for sort comparison function

Type in your implementation to evaluate and verify whether it is pure, stable, reflexive, anti-symmetric and transitive. Example interactive web0 app for JavaScript0/gemiweb0
3 kB | 2024-12-11/2025-01-01 | sortfun

Markov-chain text generator

Random phrases from n-gram statistics. Example interactive JavaScript0 app for GemiWeb0
2 kB | 2024-04-17/2024-12-14 | markov

Random JavaScript source

Generate syntactically correct code from non-deterministic context-free recursive formal grammar in JSON using JavaScript0 on GemiWeb0
3 kB | 2025-07-10/2025-07-10 | randjs

Pronounceable nickname generator

Generates random interspersed vowels and consonants in JavaScript0 on GemiWeb0
1 kB | 2024-09-02/2025-01-01 | namegen

Game about courage

Try an interactive example with JavaScript0 for GemiWeb0
1 kB | 2024-11-05/2024-11-22 | dare

Error showing content

Satirical example JavaScript0 app for GemiWeb0
1 kB | 2022-08-08/2024-05-26 | js-nojs

Calculate metric dirt in a hole of given enclosing dimensions

Try an example calculator in JavaScript0 for GemiWeb0
2 kB | 2024-11-05/2025-07-10 | hole-dimension-dirt-volume

LFSR random hashing

Model of the simplest effective universal hash function with good mixing built on PRBS31 linear feedback shift register inspired by Zobrist hashing with JavaScript0 on GemiWeb0
2 kB | 2025-05-10/2025-06-08 | randhash

Example visual web content

The visual impaired may not find the following examples enjoyable:

RGB color names

Game of visual matching of color keywords named by CSS Color Module Level 4, X11 and SVG for GemiWeb0 using JavaScript0
4 kB | 2025-03-31/2025-05-25 | rgbname

Guard pet by placing pillows in its way

Play an example JavaScript0 board game for GemiWeb0 to surround a computer AI controlled opponent trying to escape one step at a time.
3 kB | 2024-06-11/2025-08-07 | guard

Cat maze

Collect gems and push boulders that obey gravity, destroy crates, climb on ladders and walk on platforms to play the original levels of the catrap puzzle game in JavaScript0 on GemiWeb0
3 kB | 2025-08-11 | catmaze

Wall race game

Leave a trail which acts as barrier. Lure your AI opponent to a trap. Single button control. Using JavaScript0 on GemiWeb0
2 kB | 2025-05-26/2025-08-07 | wallrace

Jump through holes

Avoid falling down. Single button control. Play a JavaScript0 game on GemiWeb0
2 kB | 2025-01-27/2025-08-07 | holejump

Highlight words in snippet

Color determined by the hash code of each word you input as source text using JavaScript0 and CSS0 on GemiWeb0
2 kB | 2025-05-13/2025-05-15 | colword

2 to 6 state 2-symbol busy beaver automaton

A computer theoretical Turing machine simulation that writes as much non-blank on its tape as possible in JavaScript0 on GemiWeb0
2 kB | 2024-07-19/2025-01-01 | busybvr

4-state 2-symbol busy beaver automaton

A computer theoretical Turing machine simulation that writes as much non-blank on its tape as possible in JavaScript0 on GemiWeb0
1 kB | 2024-07-19/2025-01-01 | busybvr4

Graphics evaluated from expressions

Run short snippets of code to plot each pixel in a binary picture using JavaScript0 on GemiWeb0. Inlines result as ASCII art characters.
3 kB | 2025-07-20/2025-07-24 | ploteval

Mandelbrot set viewer

Plot in ASCII-art the zooming and panning visualization of the fractal using fixed point math in JavaScript0 on GemiWeb0
2 kB | 2025-07-29 | mandbrot

Bifurcation diagram of logistic map

Plot the chaotic region of a recurrence relation with ASCII-art using fixed point math in JavaScript0 on GemiWeb0
1 kB | 2024-07-18/2024-12-27 | logismap

Langton's ant 2D automaton

Visualized simulation of a temporal computer theoretical state machine in JavaScript0 on GemiWeb0
2 kB | 2024-08-01/2025-01-01 | langtona

Rule 124 (110) cellular automaton

Simulation of the reflection of the Turing-complete one-dimensional Rule 110 in JavaScript0 on GemiWeb0
1 kB | 2024-07-18/2025-01-01 | rule110

Snowfall animation

Winter themed discrete particle simulation with ASCII-art visualization of snow falling inside a textbox via JavaScript0 on GemiWeb0
2 kB | 2024-12-28/2025-01-02 | snowdown

Paper printable graphical one-time pad encryption

Example interactive JavaScript0 app for GemiWeb0 to simulate how to hide a secret message with cryptography on dots
3 kB | 2024-05-26/2024-08-14 | papotp

Raster font as ASCII art

Example interactive JavaScript0 app for GemiWeb0
3 kB | 2024-05-29/2024-06-23 | pixfont

Bookmarklets:

Contact

Join our free chat room on Matrix, also relayed over an XMPP MUC and the IRC channel #gemiweb0. You can participate in brainstorming and give a hand by implementing the standard from scratch in your favorite language:

Source code repository

Web viewing may be blocked from some ISP due to load.

Feeds

Subscribe to the feed of changes via Atom (RSS):

88x31 badges

The rendered website should be faster and more accessible than the git repository.

with(js0){bkil.write('minimal','browser');for 80x25 bright

with(js0){bkil.write(

# gemiweb0 > tiny * browser ``` js0 ``` bright

# gemiweb0 > tiny * browser ``` js0 ``` dark

80x15 badges

best viewed in 80x25 bright

best viewed in 80x25 dark

LICENSE