AI-powered · Natural Language · Non-deterministic

Wish ✨

The HIGHEST level programming language.
Write wishes. Run JavaScript.

counter.🙏
counter.🙏
@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.
Terminal
bash
$ wish run .
🙏  Wish Compiler
→  Scanning for 🙏 files…
→  Compiling with anthropic…
✓  Compilation complete!

1
2
3
4
5
Done counting to 5!

How it works

Write wishes. Run JavaScript.

1

Write

Create .🙏 files describing what your program should do, and .🧪 files describing how it should behave. Natural language — no syntax to learn.

2

Run

Run wish run. Wish compiles and executes your project. Re-runs are fast — Wish skips recompiling if nothing has changed.

3

Test

Run wish test. Wish generates a node:test suite from your .🧪 files and verifies behaviour from the outside — outputs, exit codes, HTTP responses.

Get started in three steps

Requires Node.js ≥ 18 and git.

1

Install Wish

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 ↗

2

Add your API key

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.

3

Create your first project

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.

🎲 Feeling lucky? Try --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.🙏

Two file types. No syntax to learn.

Both file types share the same simple format — comments, optional directives, and natural language.

🙏

Source files  .🙏

Describe what the program should do

# comment Stripped before compilation — notes to yourself
@directive value Metadata: @name, @version
everything else Natural language that becomes the specification
server.🙏
# 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.
🧪

Test files  .🧪

Describe how the program should behave

# comment Same as source files — ignored entirely
everything else Observable behaviour: outputs, status codes, side effects
server.🧪
# 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.

See it in action

Each project is a single .🙏 file.

hello.🙏
hello.🙏
@name hello-world

Print "Hello, world!" to the console.
hello.🧪
hello.🧪
When run, the program prints exactly
"Hello, world!" to stdout.
Output
bash
$ wish run .
✓  Compilation complete!

Hello, world!
fizzbuzz.🙏
fizzbuzz.🙏
@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.
fizzbuzz.🧪
fizzbuzz.🧪
The program prints exactly 100 lines.

Line 3 is "Fizz", line 5 is "Buzz",
line 15 is "FizzBuzz", line 7 is "7".
Output (truncated)
bash
$ wish run .
✓  Compilation complete!

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
...
counter.🙏
counter.🙏
@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.
counter.🧪
counter.🧪
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.
Output (N=3)
bash
$ 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

Command reference

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/).

Works with any LLM

Cloud or local. Switch anytime with wish setup or a per-project .env override.

Anthropic

Recommended · claude-sonnet-4-5 default

wish setup \
  --provider anthropic \
  --key sk-ant-...

OpenAI

JSON mode enabled automatically · gpt-4o default

wish setup \
  --provider openai \
  --key sk-...

Local models

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.