Skip to content

Decentralized social networking where your domain is your identity. Publish signed posts, follow authors across the web, own your entire social graph—cryptographically signed, fully portable, no lock-in.

License

Notifications You must be signed in to change notification settings

vdibart/polis-cli

Polis

License: AGPL-3.0 Platform: Linux | macOS | Windows

A decentralized social network that makes the open web fun again.

Polis helps you publish, follow, and have conversations — without losing control over your content. Your posts are signed markdown files. Your identity is a keypair. Easily deploy to GitHub Pages, Netlify, or any static host and own everything you create.


Why Polis

  • Your content can't be deplatformed. Posts are markdown files signed with your Ed25519 key, hosted on your domain. No API to shut off, no account to suspend.

  • Comments without spam. Anyone can comment on your posts (published on their domain). You bless the ones you want your audience to see. Unblessed comments still exist — just not on your site.

  • Move hosts anytime. Everything is flat files. Switch from GitHub Pages to Netlify to a VPS — your content, keys, and followers come with you.

  • No algorithms, no fees, no lock-in. No engagement metrics, no 10% platform cut, no terms of service that change under your feet.


See it

$ polis init
[✓] Generated Ed25519 keypair
[✓] Created .well-known/polis
[✓] Ready to publish

$ polis post essay.md
[i] Content hash: sha256:a3b5c7d9...
[i] Signing with Ed25519 key...
[✓] Published: posts/2026/01/essay.md

$ polis follow https://alice.dev
[✓] Following alice.dev
[i] 12 posts, 3 with comments

Get started

curl -fsSL https://raw.githubusercontent.com/vdibart/polis-cli/main/scripts/install.sh | bash

mkdir my-site && cd my-site
polis init
export POLIS_BASE_URL="https://yourdomain.com"

echo "# Hello World" > hello.md
polis post hello.md
polis render                    # Generate HTML

# Preview locally before deploying
polis-full serve

# Deploy
git init && git add . && git commit -m "First post"
git push                        # To GitHub Pages, Netlify, etc.

Two ways to use it

Command linepolis post, polis follow, polis discover, polis comment, and 23 more commands. All support --json for scripting and automation. See the full command reference.

Web UI — Run polis-full serve to get a full publishing environment in your browser — write and preview posts, manage blessings, and discover what authors you follow are writing.


The blessing model

Polis replaces top-down moderation with author-controlled curation.

  1. Someone comments on your post (the comment lives on their domain)
  2. They request your blessing via the discovery service
  3. You review and grant or deny — blessed comments appear on your rendered post
  4. Unblessed comments still exist on the commenter's domain, just not amplified to your audience

Curated conversation without censorship.


Installation

Pre-built binary (recommended)

curl -fsSL https://raw.githubusercontent.com/vdibart/polis-cli/main/scripts/install.sh | bash

Three binaries are available on GitHub Releases:

Binary What you get Size
polis-full (recommended) CLI + web UI + local preview ~12 MB
polis CLI only ~9 MB
polis-server Web UI only ~11 MB

Build from source

git clone https://github.com/vdibart/polis-cli.git
cd polis-cli && make all
./dist/polis version

Going deeper

  • Themes — Three built-in themes (sols, turbo, zane) with Mustache-style templating. See TEMPLATING.md.
  • JSON mode — Every command supports --json for scripting and automation. See JSON-MODE.md.
  • Interactive tutorial — Run polis-tutorial for a guided walkthrough with simulated commands.
  • AI integration — Polis includes a Claude Code skill for natural language workflows: "publish my draft", "check my blessing requests", "comment on Alice's post".

The bash CLI as specification

The bootstrap bash implementation (cli-bash/polis) is a single ~9000-line file that implements the complete Polis protocol with minimal dependencies (bash, jq, curl, ssh). It serves as a readable, executable specification — purpose-built for developers and LLMs to reference when porting Polis to other languages. Not deprecated, not legacy: a spec you can run.


Documentation


Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

Support

Questions or issues? Open a GitHub issue

License

AGPL-3.0 — See LICENSE


Your content, your domain, your rules.

About

Decentralized social networking where your domain is your identity. Publish signed posts, follow authors across the web, own your entire social graph—cryptographically signed, fully portable, no lock-in.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •