The
HIGHEST level programming language.
Write wishes. Run JavaScript.
@name wish-counter
Read an optional integer N from the
command line (default: 5).
Count from 1 to N, printing each number
with a 300ms delay between them.
When done, print "Done counting to N!"
Exit with an error if N is not a
positive integer.
$ wish run .
🙏 Wish Compiler
→ Scanning for 🙏 files…
→ Compiling with anthropic…
✓ Compilation complete!
1
2
3
4
5
Done counting to 5!
Overview
Write wishes. Run JavaScript.
Create .🙏 files describing what your
program should do, and .🧪 files
describing how it should behave. Natural language —
no syntax to learn.
Run wish run. Wish compiles and
executes your project. Re-runs are fast — Wish skips
recompiling if nothing has changed.
Run wish test. Wish generates a
node:test suite from your
.🧪 files and verifies behaviour from
the outside — outputs, exit codes, HTTP responses.
Installation
Requires Node.js ≥ 18 and git.
curl -fsSL https://raw.githubusercontent.com/TheRoyalTnetennba/wish-lang/main/install.sh | sh
Clones into ~/.wish-lang, installs
dependencies, and links the
wish command globally. Re-run at
any time to update. Prefer manual control?
Install manually ↗
wish setup
Opens an interactive wizard. Pick a provider,
enter your API key (masked), and optionally set
a default model. Settings are saved to
~/.config/wish/.env — every project
picks them up automatically. No copying
.env files between projects.
wish new my-app
cd my-app
wish run .
Scaffolds a my-app.🙏 with a
placeholder — edit it to describe your program,
then wish run . to compile and
execute.
--yolo
Can't decide what to build? Pass
--yolo to wish new and
Wish will pick three random words, imagine what an
app with that name might do, and pre-fill your
.🙏 file with the result. Ready to
compile immediately.
$ wish new --yolo
🎲 Rolling the dice… amber-fox-cipher
Asking anthropic to imagine "amber-fox-cipher"…
🙏 New Wish project created!
location ~/amber-fox-cipher
source amber-fox-cipher.🙏
Language
Both file types share the same simple format — comments, optional directives, and natural language.
.🙏Describe what the program should do
@name,
@version
# A simple JSON API
@name my-server
@version 1.0.0
Create an HTTP server on port 3000.
GET /hello returns:
{ "message": "Hello!", "time": <ISO timestamp> }
Any other route returns a 404 JSON response:
{ "error": "Not found" }
Log each request method and URL to stdout.
.🧪Describe how the program should behave
# Verify the server API
GET /hello responds with status 200 and
a JSON body containing a "message" field
and a "time" field.
GET /unknown responds with status 404 and
a JSON body containing an "error" field.
The server logs each request to stdout.
Wish compiles .🧪 files into a
node:test suite that runs against the
generated source in out/. Run with
wish test.
Examples
Each project is a single .🙏 file.
@name hello-world
Print "Hello, world!" to the console.
When run, the program prints exactly
"Hello, world!" to stdout.
$ wish run .
✓ Compilation complete!
Hello, world!
@name wish-fizzbuzz
Print the numbers from 1 to 100,
one per line, with substitutions:
- Divisible by 3 and 5: "FizzBuzz"
- Divisible by only 3: "Fizz"
- Divisible by only 5: "Buzz"
- Otherwise: the number itself.
The program prints exactly 100 lines.
Line 3 is "Fizz", line 5 is "Buzz",
line 15 is "FizzBuzz", line 7 is "7".
$ wish run .
✓ Compilation complete!
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
...
@name wish-counter
Read an optional integer N from the
command line (default: 5).
Count from 1 to N, printing each
number with a 300ms delay.
When done, print "Done counting to N!"
Exit with an error if N is not a
positive integer.
With no arguments, prints 1–5 then
"Done counting to 5!".
With argument 3, prints 1, 2, 3
then "Done counting to 3!".
With "abc" or a negative number,
exits with a non-zero status code.
$ wish run . -- 3
✓ Compilation complete!
1
2
3
Done counting to 3!
$ wish test .
🧪 Wish Tester
✓ Test compilation complete!
✔ counter.test.js
ℹ pass 3 fail 0
CLI
Every command accepts --help for full
option details.
wish setup |
Configure your provider and API key. Interactive
by default — or pass flags for scripted setup:
--provider, --key,
--model, --base-url.
Use --show to print current config.
|
wish new [name] |
Scaffold a new Wish project — creates a
directory with a starter
.🙏 file and
.env.example. Pass
--yolo to generate a random name
and have Wish dream up the concept.
|
wish add <name> |
Generate a .🙏 source file in the
current directory. Pass --test (or
-t) to generate a
.🧪 test file instead. Alias:
wish g.
|
wish compile [dir] |
Scan [dir] for
.🙏 files and compile them to a
Node.js project in out/. Skips
recompiling if nothing has changed since the
last compile. Flags: --output,
--provider, --model,
--base-url, --force.
|
wish run [dir] |
Compile (if needed) and immediately run the
generated project via npm start.
Installs node_modules
automatically if missing.
|
wish test [dir] |
Compile .🧪 test description files
into a node:test suite and run it.
Requires out/ to exist — run
wish compile first. Recompiles
tests when either .🧪 or
.🙏 files change. Flag:
--test-output (default:
test-out/).
|
Providers
Cloud or local. Switch anytime with
wish setup or a per-project
.env override.
Recommended · claude-sonnet-4-5 default
wish setup \
--provider anthropic \
--key sk-ant-...
JSON mode enabled automatically ·
gpt-4o default
wish setup \
--provider openai \
--key sk-...
LM Studio, Ollama, any OpenAI-compatible server
wish setup \
--provider openai-compat \
--base-url http://localhost:1234/v1 \
--model qwen3-coder
API keys are stored in ~/.config/wish/.env and
apply to every project on your machine. Per-project
.env files override specific values when
needed.