Skip to content

wish-cli

wish-cli is the command-line interface to a local wish-core — for creating identities, granting apps, inspecting connections, and driving the kernel directly during development and debugging. It connects over wish-core's local Unix socket (no Dashboard required), so it's the fastest way to poke at the stack.

The installed command is wish.

Install

One line — detects your platform, verifies the checksum, installs to ~/.local/bin (no sudo, no Rust toolchain):

sh
curl -fsSL https://developer.wishtech.fi/install.sh | sh

Re-running upgrades in place. The same script installs the kernel too:

sh
curl -fsSL https://developer.wishtech.fi/install.sh | sh -s -- wish-core

Other ways

From a wish-stack checkout: cargo install --path apps/wish-cli-rs. Or grab a prebuilt binary directly (macOS + Linux incl. Raspberry Pi armv6, + Windows) from developer.wishtech.fi/downloads/wish-cli/ via the channel's latest.json.

Connecting

wish talks to a running wish-core over its Unix socket. Start Wish (the desktop app hosts the kernel), or run a wish-core yourself, then:

sh
wish id                       # lists identities — confirms the connection

By default it uses ~/.wish/core.sock. Override with --socket <path> or the WISH_SOCKET environment variable:

sh
WISH_SOCKET=/tmp/my-core.sock wish id
wish --socket /tmp/my-core.sock conn

Identities & contacts — wish id

sh
wish id                       # list local identities + contacts
wish id get Alice             # full details (name or uid hex-prefix)
wish id create "Alice"        # create a new identity (admin only)
wish id remove Alice          # remove an identity + close its connections (admin)
wish id export Alice          # print a base64 contact bundle to stdout
wish id import <base64>       # import a contact bundle (output of `id export`)
wish id requests              # pending incoming contact requests
wish id accept Bob            # accept a pending request (name or uid prefix)
wish id join <target>         # join an identity hosted on a nearby device
wish id accept-join [name]    # accept device-join requests (runs until Ctrl-C)

Sharing a contact between two nodes is id export on one → id import on the other.

Apps & permissions — wish apps

Apps are sandboxed: they only see identities explicitly granted to them, and no contacts by default.

sh
wish apps                          # registered apps + their grants
wish apps peers <app>              # peers wish-core sees for an app's protocols
wish apps grant Reason Alice       # grant an identity to an app (admin only)
wish apps contacts Reason Alice            # show contact visibility
wish apps contacts Reason Alice all        # all | none | allow <names…> | deny <names…>
wish apps contacts Reason Alice allow Bob Carol

Contact-visibility changes take effect on new connections.

Network & connections

sh
wish conn          # active connections (subcommands: check / connect / disconnect / inspect)
wish relay         # configured relay servers (subcommands: add / remove)
wish dht           # DHT routing-table summary (subcommands: bootstrap / announce)
wish nearby        # peers discovered on the local network
wish request <who> # send a contact request to a nearby peer
wish ice           # ICE connection-pool slot status
wish host          # this node's host id + name (subcommand sets the name)
wish peer          # peer pinning (connection-preference policy)

Inspect

sh
wish api           # list wish-core API endpoints
wish api --json    # raw methods map as JSON
wish watch         # stream unsolicited events (peer online/offline, frames, signals) until Ctrl-C

Run wish <command> --help for the full options on any command.