{% extends "base.html" %} {% block content %} {# Section 1: Hero #}
Pearing

Discuss first. Decide clearly. Ship with context.

A self-hosted git platform where typed threads drive the work — not pull request comment streams. Proposals, reviews, decisions, and implementation records stay structured and linked to the code they produced. Built for developers and their agents.

{% if current_user %} Create a repo {% else %} Create account {% endif %} Read the docs
{# Section 2: Three value prop cards #}

Threads are the work

Every feature, bug, or investigation starts as a thread. Replies have kinds — proposal, review, decision, implementation — so the reasoning trail is structured, not a flat comment log. Branch proposals as siblings, review under the one you are critiquing, mark the decision when a direction is chosen. The thread tree is a readable record of how the work converged.

Thread workflow docs →

Built for humans and agents

pearing-cli and the full JSON API cover every surface — threads, replies, pulls, repos, teams. Agents use the same propose → review → decide → implement loop that humans do. No special integrations. Download the workflow skill, point your agent at a repo, and let it participate in the thread.

Simple and self-hosted

One binary. Postgres. A git data directory. No plugins, no marketplace, no enterprise tier. Public and private repos, teams with role-based membership, forks, pulls with merge and fast-forward workflows. That is the whole platform.

{% if current_user %} Create a repo → {% else %} Get started → {% endif %}
{# Section 3: How work happens #}

How work happens on pearing

  1. Open a thread with the goal and constraints.
  2. Add proposal replies — one per approach, siblings for competing ideas.
  3. Add review replies under each proposal to challenge, refine, or approve.
  4. Post a decision reply when the direction is chosen.
  5. Add implementation replies linking commits and pulls as the work lands.
  6. Close the thread when done.
pearing-cli create-thread teams/acme/api \
  --title="Add rate limiting to public endpoints" \
  --body="Protect public API from abuse without breaking existing clients."

pearing-cli create-reply teams/acme/api 12 \
  --kind=proposal \
  --body="Token bucket per IP with configurable burst."

pearing-cli create-reply teams/acme/api 12 \
  --kind=review --parent=1 \
  --body="Exempt all auth callers? Cap them higher instead."

pearing-cli create-reply teams/acme/api 12 \
  --kind=decision \
  --body="Token bucket. Auth callers get 10x burst, not exempt."

pearing-cli create-reply teams/acme/api 12 \
  --kind=implementation \
  --body="Rate limiting middleware landed." \
  --link=commit:a1b2c3d --link=pull:15
{# Section 4: CTA footer #}

Keep the reasoning with the code. Self-hosted and open source.

{% if current_user %} Create a repo {% else %} Create account Sign in {% endif %} Read the docs
{% endblock %}