Communal

Command line

The communal command runs Communal on a computer with no screen (a home server, a NAS) and controls it. It’s the same engine as the app.

Install on Linux

The quickest way installs or upgrades to the latest release (it needs Node.js 24 or later):

curl -fsSL https://hypnopompia.github.io/Communal/install.sh | sh -s -- headless

Or by hand: download communal-<version>-linux-x64.tar.gz (or -arm64) from the latest release. It needs Node.js 24 or later.

tar xzf communal-*-linux-x64.tar.gz
cd communal-*-linux-x64
sudo ./install.sh

That installs Communal to /opt/communal, adds /usr/local/bin/communal, and starts the communal systemd service as its own user with its data in /var/lib/communal. Settings such as the UDP port or upload limits go in /etc/communal/communal.env.

Run commands as the service user, which owns the data:

sudo -u communal communal hub add wss://hub.example.com/v1 --name "Home server"
sudo -u communal communal share add /srv/media/Movies --name Movies
sudo -u communal communal acl set Movies/ hub
sudo -u communal communal status

The folders you share must be readable by the communal user. A Docker image is also available; see the repository’s docker/ folder.

With the desktop app

When no communal daemon is running, the command controls the open desktop app instead, as long as Settings › AI agents › Allow control from the CLI and AI agents is on. Running from a checkout of the source: pnpm --filter @communal/cli dev -- status.

Setting up

Command What it does
communal hub add <url> --name <name> Join a hub (the first one creates your account). hub list, hub remove.
communal daemon Run the engine in the foreground (what the service runs).
communal status This device, its hubs and indexing progress.
communal check Check the install: native modules, ffmpeg, the trash helper.
communal netcheck NAT type per hub, router port mapping, IPv6, carrier-grade NAT.

Sharing and access

Command What it does
communal share add <path> --name <name> Share a folder. share list, share remove <name>, share hubs <name> [hub ids…].
communal acl set <path> <audience> Who can see a folder (ending in /) or file: me, hub, users:<ids> or groups:<ids>. Add --hub when on several hubs.
communal acl clear <path> Remove a rule so the path follows its folder again. acl list shows every rule.

People and groups

Command What it does
communal people search <name> Find people on a hub.
communal people request|accept|remove <user_id> Connect, accept a request, or disconnect.
communal people list Connections and pending requests.
communal people verify <user_id> [--confirm] Show the safety code to compare; --confirm marks them verified.
communal group set <name> [members…] Create a group from connections (--id replaces one). group list, group delete.

Managing a hub

On a hub you administer (the first account on a hub is its admin). Add --hub if you administer more than one.

Command What it does
communal admin users [--waiting|--banned] Everyone on the hub, with their computers and how much each shares.
communal admin approve|unban <user_id> Let in someone who’s waiting, or lift a ban.
communal admin ban <user_id> [--reason] Sign someone out of the hub for good. Admins can’t be banned here.
communal admin settings [--join-mode open|approval] [--name|--clear-name] Show or change the hub’s name and who can join, and its limits: --signups-per-hour, --max-files (per device), --max-devices (per account). 0 means no limit.
communal admin graph, communal admin log Who’s connected to whom, and every admin action.

Finding and downloading

Command What it does
communal search <words…> Search every hub. --kind, --min-size, --online, --seen today|week|month, --from connections|verified, --json.
communal browse <hub> <device> [path] List a folder on a computer you can see.
communal peek <hub> <device> <hash> Show the start of a text or code file.
communal thumbs <hub> <device> <path> Fetch a folder’s thumbnails into the cache.
communal get <hash> Download by content hash from every online source. --name, --dest <folder>, --to <destination>, --on <device>.
communal get-folder <device> <path> Download a folder and the folders inside it, once. Files you already have are copied, not downloaded. --dest, --to, --on, --hub.
communal download-dir [folder] Show or change where downloads go. --reset goes back to the usual one.
communal transfers Downloads, with the reason and tips when a source can’t be reached. --clear removes finished ones from the list (the files stay). communal cancel <id>. Both take --on <device>.
communal log Who downloaded what from this computer (kept locally only). --user, --path, --clear.

Subscriptions

Command What it does
communal subscribe <device> <path> --no-mirror-deletes Follow a folder. You must say --mirror-deletes or --no-mirror-deletes. Also --dest, --to, --flat, --hub, --on.
communal subscriptions [list|set|remove] List, change (set <id> with --pause, --resume or --mirror-deletes on|off) or remove subscriptions. Add --on <device> for another device’s.
communal sync [on [folder]|off] The synced folder: one folder kept the same on all your computers (default ~/Communal). Run on on each computer. On its own, communal sync shows which computers it’s in step with.

Destinations

Named folders on this device that downloads can go into, like Movies or TV. Downloads is built in and is the downloads folder. A folder you download or subscribe to goes inside the destination under its own name.

Command What it does
communal dest [list] This device’s destinations and their folders.
communal dest add <name> <folder> Add one, e.g. communal dest add Movies /srv/media/movies.
communal dest set <name> <folder> Point a destination at another folder. --rename renames it too.
communal dest remove <name> Forget it. The folder and its files stay.
--to <name> On get, get-folder and subscribe: save into a destination instead of the downloads folder. With --on, it names one of that device’s destinations.

Remote control

Your devices can download for each other: a laptop or phone sends a film to the media server, or subscribes it to a friend’s folder. Only the request goes through the hub, sealed so the hub can’t read it, and the files still travel directly. A device takes requests only once you allow it, and other devices can only name its destinations, never a folder.

Command What it does
communal remote [status] Whether this device takes requests, and your other devices: online, and whether they do, with their destinations.
communal remote allow|deny Let your other devices start downloads here, or stop them (off to begin with).
communal remote downloads on|off Off: your other devices can only save into the destinations here, not the downloads folder, and must name one.
--on <device> Another of your devices, by name or id, does it instead: on get, get-folder, subscribe, subscriptions (list, set, remove), transfers and cancel.

Setting up a media server, on the server:

sudo -u communal communal dest add Movies /srv/media/movies
sudo -u communal communal dest add TV /srv/media/tv
sudo -u communal communal remote allow
sudo -u communal communal remote downloads off

Then from your laptop:

$ communal remote
this device: doesn't take downloads from your other devices
  Media server             linux    takes requests  d_rr75yzpn5xtcvtlpiilx2nluta
    destinations: Movies, TV
$ communal get-folder d_4kq… "Films/Night Bus (2024)" --on "Media server" --to Movies
$ communal subscribe d_4kq… "Shows/Harbor Lights" --on "Media server" --to TV --no-mirror-deletes
$ communal subscriptions --on "Media server"
$ communal transfers --on "Media server"

The desktop and Android apps do the same from their Download menus, Subscriptions and Transfers (see the app guide).

Devices and recovery

Command What it does
communal devices [list] Your computers.
communal devices add Make a link code for a new computer or phone, then approve it. --yes approves whoever claims the code.
communal devices requests|approve|deny Computers waiting for approval.
communal devices revoke <device> Remove a lost computer everywhere (can’t be undone).
communal link <code> --hub <url> Add this computer to your account (works with the daemon stopped).
communal recovery export --out <file> or --words Save the recovery key (on the computer that holds the account’s root key).
communal restore <file> or --words --hub <url> Restore your account onto a fresh computer.

Passphrases and words are read without echo, or from COMMUNAL_RECOVERY_PASSPHRASE / COMMUNAL_RECOVERY_WORDS.

Settings

Variable Meaning
COMMUNAL_DATA Data folder (default ~/.communal).
COMMUNAL_PEER_PORT UDP port for peers (0: any). Forward it on your router for the best reachability.
COMMUNAL_ADVERTISE_ADDR Extra ip:port others can reach this computer at (a port forward, a public IP).
COMMUNAL_UPNP=false Don’t ask the router to open the port.
COMMUNAL_UPLOAD_KBPS, COMMUNAL_MAX_UPLOADS, COMMUNAL_LAN_ONLY Upload limits (changes made with the API or app take precedence).
COMMUNAL_DOWNLOADS Where downloads land.

The command for AI assistants, communal mcp, is covered under AI agents.