Should the launch page lead with the room or with the merge? I keep going back and forth.
Drafted both heroes in the preview. The room version reads faster on a phone.
Room it is. Keep the copy to two lines.
hilos design system
Every example below comes from the product. Change the variations, open the menus, and see how the system behaves.
Work stays behind one quiet disclosure, during the run and after it finishes.
These are observable work events and explicit notes. Private model reasoning is never shown.
A quiet default the group can turn into an emoji or any Central Icon. Native icon pickers share searchable, measured 44-point grids and system segmented controls; labels and inline custom emoji scale with text.
Interactive room header
Persisted variations
Contained and line variations for switching a local view.
Small labels and status without adding another button language.
Text, long-form input, switches, radio choices, and segmented controls. Native segments scale their title fonts and height with app text preferences and Dynamic Type. Native row menus align values to a shared leading edge and indicators to the trailing edge; labels truncate to one line while accessibility retains the full value.
New mentions and run results.
Grouped settings the way a system preferences pane reads (1353): a small title over one bordered box of hairline rows, label left and control right, or label over a full-width field. The rare knobs fold behind one Advanced line, closed by default. The agent editor, your own profile editor, and the profile view (1358: About, Details or Setup, Links or Recent, memory) are built from it; a view-only row puts its value where the control goes.
Saves as you change it
Runs through Claude Code on someone's machine, which controls its model and behavior.
Persistent pickers and small forms anchored to their trigger.
Bounded tasks that become drawers on smaller screens. On iOS, workspace settings pushes native sections with standard Back navigation. Custom emoji has its own screen, and edited forms confirm before discarding. Native recipe browsing opens the shared automation editor; GitHub account choices return from system authentication to the native repository picker.
Agent connection after creation. On a phone, client tabs use two rows and the token remains copyable. This specimen uses an inert token.
My Claude Code is ready
Copy the token now. It will not be shown again.
The plugin brings the server, a seat in the room, and the three gestures. Run this in your terminal; Claude Code saves the token for future sessions.
export HILOS_MCP_TOKEN="fibra-example-not-a-credential" claude plugin marketplace add pablostanley/hilos-agents claude plugin install hilos@hilos --config hilos_mcp_token="$HILOS_MCP_TOKEN"
Run this in your project, or add the block to ~/.claude.json.
claude mcp add --scope user --transport http hilos "https://hilos.sh/api/mcp" --header "Authorization: Bearer fibra-example-not-a-credential" --header "x-hilos-client: claude-code"
{
"mcpServers": {
"hilos": {
"type": "http",
"url": "https://hilos.sh/api/mcp",
"headers": {
"Authorization": "Bearer fibra-example-not-a-credential",
"x-hilos-client": "claude-code"
}
}
}
}Browser agents · WebMCP
16 page tools registered. Your browser agent uses your signed-in session.
Browser setupBrowser agents · WebMCP
WebMCP is not enabled in this browser. Coding-agent connections work below.
Browser setupBrowser agents · WebMCP
Some page tools could not register. Reload this page to try again.
Browser setupCircles are people. Squircles are agents. Working agents orbit. Group DMs overlap two peers; three or more collapse to a muted head-count chip. Native iOS portraits use balanced gutters and zoom into complete profiles: quiet people/contact sections; stable colored agent identity cards with job, runtime, placement, instructions, activity, and memory. Reduced motion uses standard navigation. Manage agent opens native configuration and authored-memory editing with system Save and Cancel controls.
Person
Agent working
Agent active
Group DM, 2 others
Group DM, 3+ others
The complete room composer, running locally with representative people and agents. Native iOS uses a 17-point scalable field with stable keyboard spacing, 44-point tools, compact links, removable GIF previews, and recoverable room/thread drafts. Emoji and GIFs share a searchable sheet led by its tabs, with selection or a swipe to dismiss; editing reuses the writing tools with Save and Cancel.
Two layouts, one preference (1343), rows by default. With bubbles on, everyone else's body sits in a muted bubble under a small name caption, the reader's own in a tint of the style's primary on the right, no name, no avatar, its time on hover. Left keeps every author in one column and still colors your own. Rows are the Slack shape. Everything the message says lives in the bubble (text, cards, attachments, unfurls); reactions and the replies link sit below it.
Draft is up. Split the PR in two, or keep the composer and the toolbar together?
Split it. Composer first, toolbar after.
Then the toolbar can wait for the icon audit.
On it. Opening the composer branch now; the toolbar stays on main until the audit lands.
The feed's read-only snapshot: the room's tile, the root, the newest two replies. The Threads page renders each thread live instead, with the same conversation the room's thread pane shows (1370).
Should the launch page lead with the room or with the merge? I keep going back and forth.
Drafted both heroes in the preview. The room version reads faster on a phone.
Room it is. Keep the copy to two lines.
Two sizes: 14px body content and 12px metadata. Weight and spacing organize the report; work details stay collapsed. Native reports retain the full hosted plan and its requester/admin Approve, Revise, and Dismiss controls; a plan attached to a pull request returns to the review gate. On iOS, reassignment and run activity use native stack form sheets and system toolbars.
Loading reports…
A read-only plan roster. A plan proposed from a coding session or by a specialist groups its proposer and budget below the request; a plan Hilo made itself says nothing. In a member's room, Activity opens the manager or specialist record; guests receive neither execution details nor controls.
The manager console opens roster-first: one line per specialist, folded from the plan's child facts.
A room's live state as three grouped lists: what waits on you, who is working, and who is here. History is not one of them — that is the Activity page, where the whole workspace's is. Every section folds and remembers — Here starts folded, and a folded label still carries its count. No section shows more than ten rows before a Show more row. A needs-you row is a sentence at rest: the decision and Mark as seen arrive on a hover toolbar, and ride the row itself on touch. A row marked seen reads muted and stops counting, without answering anything. The header opener sits with the room’s tools; its count takes the ink badge only when a decision is yours. On iOS, a native toolbar symbol and badge opens the inset-grouped board in Room details; both stay out of DMs.
Quiet guidance for a state someone may sit in.
No messages yet
Start with the thing this room is here to make.
Color, Fraunces, and illustration appear at rare transitions and firsts.
The room saw the work, and you chose what shipped.
Hilo helps plan the work. Choose a specialist for your first task.
Routine feedback stays brief and close to the action.
Max, a gift from Pabs
2,400 of 3,500 gift credits left this month. Refreshes Nov 5, 2026. Your gift ends Dec 5, 2026. No automatic charges. You can choose a paid plan whenever you’re ready.
The header is ready for review.
Answered from hosted; local daemon offline
One preloaded character holds steady across overlapping waits and loading handoffs, with a gentle pulse, float, or sway looping every two to three seconds. Reduced motion keeps the artwork still. Lists retain their geometry-matched skeletons.
Loading preview
pulse
Loading preview
float
Loading preview
sway
The quiet header and footer shared by docs, developers, blog, changelog, company, and legal pages.
Public content
The article can keep its own voice while navigation and site links stay put.

One workspace balance with separate plan, gift, and purchased credits. Each allowance has its own remaining meter, refresh date, and expiration; purchased credits never expire.
4,250
Shared by everyone in this workspace.
650 of 1,000 left
Refreshes Oct 5, 2026
2,400 of 3,500 left
Refreshes Oct 5, 2026 · Expires Nov 5, 2026
Max, a gift from Pabs. No automatic charges.
1,200 left
Never expire
0
Shared by everyone in this workspace.
0 of 1,000 left
Expires Oct 5, 2026
Pro, a gift from Pabs. No automatic charges.
0 left
Never expire