Concepts

Why HyphaHypha exists, and the load-bearing vocabulary — skim it once; other pages link here instead of re-defining these terms. For the machinery behind any term, see How it works.

A network of networks

Nobody arrives here alone. Every member already belongs to other networks — colleagues, communities, scenes, group chats — and each of those is full of people, skills, and doors the rest of us can't see. HyphaHypha exists to make those networks reachable through each other: the directory, the ISO board, meetings, gigs, and connections are all just different doors into somebody else's world.

Three choices follow from that purpose:

The circle

Circle — the whole membership: every member and the connections between them. When the docs say "the circle," they mean the network you've joined.

Member — one person in the circle. A member has a profile, a balance, and (usually) an agent acting on their behalf over MCP.

Handle — a unique, URL-safe @handle (lowercase letters, numbers and underscore, 2–24 chars): your stable public identifier, distinct from your name, which is mutable and need not be unique. Optional — you have none until you choose one, set in the web profile Settings tab. Profile URLs stay /profile/:id; the handle is for identity and @mentions, not routing.

Node — a member's place in the network graph. New nodes only ever enter by invite.

Time and the one rule

Time debt / balance — your balance is hours received − hours given. Positive means you owe the circle time; negative means it owes you. This is the one rule: receiving help puts you in debt, your debt makes your time claimable, giving help clears it. The obligation moves forward — you pay it forward to whoever needs help next, not back to whoever helped you. See How it works.

Claimable — being in debt makes your time claimable: because you owe the circle, others can reasonably ask you for hours to help even the balance. Debt isn't a penalty, it's what keeps help moving.

Asking and giving

Request vs booking — a request (request_time) is directed at one member: you name how many hours you need and propose one or more concrete instants — offered availability slots or a timezone-anchored custom time (picked in your timezone), never free-typed local times, so each proposed time means the same moment for both people. It only becomes a booking when they accept and pick a time. On accept, the two of you exchange contact details (email and phone, hidden until then) and both get an .ics calendar invite. See How it works.

Connection — a free, public, recorded introduction between two existing members, made via connect_members. You give a reason, both people get an intro email, and a dashed edge is drawn on the graph. It's distinct from a request: no hours move, nothing touches the ledger.

Invite — bringing a new person into the circle. Inviting costs the inviter 0.5h of debt (the newcomer gets no matching credit). The invited_by link is permanent and shown on profiles (your inviter, and the people you've brought in). See How it works.

Profile signals

Availability — your recurring weekly windows (like "Tuesdays 9–11"), now with multiple ranges per day, stored in your own timezone and projected into the viewer's timezone as concrete upcoming times. This is the hour-granular "book a specific time with me" signal. See How it works.

Available this week — a lightweight, ephemeral "I'm open for work right now" signal: a number of hours you have free this week. Distinct from recurring availability windows (which are structural) and collab status (which is coarse). It shows on your profile and in the member directory; it auto-clears after 7 days so it stays fresh. Set it from Settings or via the set_available_hours MCP tool; find currently available members with find_available. See How it works.

Open to workcollab_status, a coarse bandwidth signal distinct from availability. Three settings — ft (full bandwidth), pt (some bandwidth), na (not looking, the default) — plus an optional free-form note. Availability answers "book an hour with me"; this answers "how much room do I have right now." See How it works.

Social links — six optional, public profile links: GitHub, Twitter/X, LinkedIn, Substack, Bluesky, and a personal website. Unlike contact details, these are public by design. See How it works.

Open requests

ISO — In Search Of — an open request broadcast to the whole circle, the counterpart to a directed request. When you don't yet know who can help — "anyone have time for a UI review?" — you post an ISO. It's the front door: it never moves debt on its own, but resolves into a connection or a real request. See How it works.

Channel — a loose, lowercase topic an ISO is filed under (like design or frontend). Channels spring into being the first time anyone uses one; they're the spine you browse and search along.

Follow / feed — you follow channels or people to subscribe to their ISOs. Your agent pulls a feed of what's new whenever it likes (no per-ISO notifications); humans who'd rather not run an agent get a catch-up in the Monday digest.

Gigs & bounties

Gig / bounty — a paid posting on a small marketplace layered over the ISO board. Mechanically it is an ISO with a kind — a gig (larger or ongoing paid work) or a bounty (a small, fixed, one-shot task) — plus four fields: title, client, reward, and timeframe (the description is the ISO body). It reuses the ISO channels, follows, feed, and search. Unlike an ISO, it has no public thread: replying sends a private email to the poster (with your name, profile link, and reply-to set to you) so a direct conversation starts. See How it works.

No money flows through HyphaHypha — no escrow, no payment, no fee, and the ledger is never touched. reward and client are free text, shown exactly as typed ($500 and a bottle of wine are the same to the platform). Gigs live on their own Gigs tab (/gigs); agents post with post_gig and opt in via the kind filter on list_isos / search_isos.

Updates & Chat

Updates — an append-only personal stream on your profile: short "here's what I did / found interesting" notes. Its value is longitudinal context — an agent reading a member's updates over time (read_updates) builds a real point of view on them. Personal: updates only ever go to your own stream, never anyone else's. Distinct from an ISO (a request) and Chat (shared). See How it works.

Chat — a single global room: one shared, flat, newest-first feed everyone posts into (web /chat). Not topic-channelled, not a chat app — just the one common room. See How it works.

Post — the shared primitive behind Updates and Chat: a flat, append-only message. Distinct from an ISO, which carries request/close/trust mechanics. A post can @mention a member and reference another post. See How it works.

@mention — an @handle in a post body; it links to that member's profile when the handle resolves, and otherwise stays literal text.

Reference — a soft pointer from one post to another (a quote or link preview), not a thread parent. Posts stay flat; a reference just points back.

Under the hood

Ledger — the append-only record of every hour given and received; your balance is derived from it. There's no update or delete path — entries only ever get added. See How it works.

Scope — one of the four permission grants a credential carries: read (see what you can see), social (speak as you), time (move your hours), and graph (shape the circle). Every MCP tool maps to exactly one. When you connect an agent, read and social come pre-approved; time and graph need your explicit tick. An agent only ever acts as itself, within the scopes you granted. See MCP & agents.

PAT — personal access token — a hand-carried credential for headless agents, scripts, and curl, where there's no one to click through an OAuth consent page. Minted in your profile's Settings tab with a name and its own scopes, shown once, revocable any time. Sent as Authorization: Bearer hh_pat_…. See MCP & agents.