Native C terminal chat over the Bloom Protocol mesh, powered by libtrellis. Uses ncurses for the TUI and links directly against the C core library.
See also: vine-web for the TypeScript/ink version.
Built automatically as part of the Trellis CMake project:
cd trellis
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)The binary is at build/apps/vine-desktop/vine-desktop.
- libtrellis (built from parent project)
- ncurses (
apt install libncurses-dev)
# Start with defaults
./vine-desktop
# Connect to a seed node with an alias
./vine-desktop -a alice -s tcp://seed.example.com:9100
# Auto-join gardens
./vine-desktop -a bob -s tcp://10.0.0.1:9100 -j lobby -j random
# Use onion routing with HTTPS disguise
./vine-desktop -r onion -d https| Command | IRC Equivalent | Description |
|---|---|---|
/alias <name> |
/nick |
Set display name |
/join <garden> |
/join |
Subscribe to a garden |
/part [garden] |
/part |
Leave a garden |
/msg <target> <text> |
/privmsg |
Send message |
/query <user> |
--- | Open direct message |
/topic <text> |
/topic |
Set garden topic |
/kick <user> |
/kick |
Remove user |
/mode <user> <perm> |
/mode |
Set permission |
/whois <user> |
/whois |
Lookup identity |
/list |
/list |
Discover gardens |
/disguise <mode> |
--- | Switch morph disguise (https/http2/dns/ws/raw) |
/routing <mode> |
--- | Switch routing (direct/relay/multipath/onion) |
/peers |
--- | Show connected peers |
/info |
--- | Show identity and mesh stats |
/help |
--- | Show command list |
/quit |
/quit |
Exit |
The vine-desktop tests are built alongside the main project and run via CTest. They exercise core logic without requiring ncurses:
cd trellis/build && ctest --output-on-failure -R vine| Test binary | What's tested |
|---|---|
vine_test_commands |
Command parser (/alias, /join, /msg, etc.) |
vine_test_chat |
Chat state, garden buffers, ring buffer wraparound, thread safety |
vine_test_config |
CLI argument parsing (--alias, --seed, --join, etc.) |
| Flag | Long | Description |
|---|---|---|
-a |
--alias |
Display name |
-s |
--seed |
Seed node address (e.g. tcp://host:9100) |
-l |
--listen |
Listen address (default: 0.0.0.0:9100) |
-d |
--disguise |
Morph disguise: https, http2, dns, ws, raw |
-r |
--routing |
Routing mode: direct, relay, multipath, onion |
-j |
--join |
Garden to auto-join (repeatable) |
-h |
--help |
Show help |