Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vine Desktop

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.

Building

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.

Prerequisites

  • libtrellis (built from parent project)
  • ncurses (apt install libncurses-dev)

Usage

# 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

Commands

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

Testing

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

CLI Options

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

About

Native C terminal chat over the Bloom Protocol mesh, powered by libtrellis

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages