Geobe is an experimental geometric esolang toolkit written in Python. Its most complete experience is an interactive triangle-alphabet console. It also includes a small interpreter for 2D Unicode-symbol programs.
Geobe is not yet a general-purpose programming language. The current runtime is an experiment in directional flow, one memory cell, input/output nodes, pluggable transforms, and array traversal.
Start the console:
geobe --consoleType lowercase ASCII letters and Geobe immediately renders their geometric encoding. Press Enter to decode the visible symbols back to English.
For example, typing hello! displays:
▹▶▿▿◂!
Pressing Enter then prints:
hello!
Backspace removes the most recent encoded character. Press Ctrl-C or Ctrl-D to exit. Uppercase letters, numbers, spaces, and punctuation pass through unchanged.
Install the CLI:
pipx install geobeRun a small program that reads one input value and writes it to output:
geobe --code "○→▽" --input helloExpected output:
{"outputs": ["hello"]}Geobe programs are rectangular text grids. The interpreter finds every ○
source node and follows directional flow through the grid until a path ends.
The current MVP supports a single deterministic memory cell, input buffering,
output collection, and pluggable △ transforms.
Core symbols:
○read the next input value□store the current value in memory△transform the current value▲change/delta transform the current value▽append the current value to output◀append the current value to output▶traverse the current array by one index▶▶continue the current array loop, or finish when exhausted→,←,↑,↓move execution through the grid«... »read a literal string into the current valuespell ...decode triangle alphabet symbols into lowercase text output
Spaces are treated as empty cells for traversal. Other non-traversable characters stop a path.
The triangle alphabet is deliberately separate from the execution model. In a
.geo file, spell ▹▶▿▿◂ is parser shorthand for a literal string output. In
geobe --console, typing lowercase English letters shows their triangle-symbol
encoding and Enter decodes the visible line back to English.
The project targets Python 3.11+.
For normal CLI use, install Geobe with pipx:
pipx install geobeTo install a specific release:
pipx install geobe==0.1.1If pipx is not installed and you use Homebrew on macOS:
brew install pipx
pipx ensurepath
pipx install geobeIf pipx is not installed in another Python environment, follow the
pipx installation guide.
For local development from a cloned checkout, install Geobe in a virtual environment:
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -e ".[dev]"Avoid installing Geobe into a system Python with pip install geobe. On modern
macOS Homebrew Python and some Linux distributions, pip may fail with
externally-managed-environment because the operating system or package manager
owns that Python installation. Use pipx install geobe for the CLI, or install
inside a virtual environment for development.
Run a .geo file:
geobe examples/input_store_transform_output.geo --input hello{"outputs": ["hello"]}Run inline source:
geobe --code "○→▽" --input hello{"outputs": ["hello"]}Run a literal string program:
geobe --code "«hello, Geobe!»→▽"{"outputs": ["hello, Geobe!"]}Read additional input values from standard input:
printf 'first\nsecond\n' | geobe --code "○→▽\n○→▽" --stdin-input{"outputs": ["first", "second"]}Trace execution as JSON:
geobe --code "○→□→▽" --input hello --traceTrace execution in readable text:
geobe --code "○→□→▽" --input hello --trace --trace-format textRunning the package module directly executes the built-in demo program:
python3 -m geobeexamples/input_store_transform_output.geo
○→□→△→▽With input hello, the program stores the value, applies the default identity
transform, and outputs hello.
Array loop:
○→▶→◀→▶▶With Python input [1, 2, 3], the program traverses the array and outputs
[1, 2, 3].
Triangle alphabet shorthand:
spell ▹▶▿▿◂ ◮◂ ◣▿▵!This decodes to hello world! and is expanded by the parser into a literal
string output program.
Python code can also encode English into the triangle alphabet:
from geobe.parser import encode_spell_text
encoded = encode_spell_text("Hello world!")The △ symbol is backed by a transform registry. The default transform is
identity, and you can register your own behavior in Python code.
See examples/custom_transform.py for a minimal example that returns a custom
formatted value.
Run the test suite:
pytestRun linting and type checks:
ruff check .
mypy src testssrc/geobe/interpreter, parser, runtime state, and CLIexamples/documented sample programstests/coverage for the CLI, parser, interpreter, and examples
geobeCLI:geobe.cli:main- Module entry point:
python3 -m geobe