for product architects

Start buildingRead the doc

PART 01 · OF 05

Read your product

One graph, four maps. A strategist zooms out, an operator zooms in, an agent queries. Same data.

Journey map

Navigation is how people experience a product, so it is the first reading of the map.

Arkaik Maps JourneyLIVE
Rendered from Arkaik's own map, right now.
What
Flows are ordered playlists of views and sub-flows, with conditions and junctions. Drill from a top-level flow down to a screen.
How
The compose edges are synthesized from the playlist, so a flow cannot lie about its own screens.

System map

Every backend change starts with the same question: which screens render this, and what does this endpoint feed?

Arkaik Maps SystemLIVE
Rendered from Arkaik's own map, right now.
What
Views, API endpoints and data models as tiers, with the cross-layer edges drawn between them.
How
Scoped by a root anchor and laid out by species tier. A custom map is a saved JSON definition, not a feature.

Delivery board

"What is in flight on Android?" has no answer in a task tracker, because tasks are not screens.

Arkaik Project DeliveryLIVE

Idea

8

Development

3

Live

4
Rendered from the built-in Pebbles example, right now.
What
A board of (node × platform) items grouped by status. A view live on iOS and in backlog on Android sits in both columns, by design.
How
The rows are the same projection the MCP tool serves, so the board and the agent never disagree.

Overview

A strategist wants one screen that says where the product stands.

Arkaik Project OverviewLIVE

Platform delivery

Every view's delivery status across 3 platforms

Delivery
Web
iOS
Android
Web 31iOS 31Android 18

Release pulse

3 tagged releases, newest first

Changelog
0.4.0iOS6 changesJul 1, 2026
0.3.06 changesMay 25, 2026
0.2.0151 changesMay 2, 2026
Rendered from the built-in Pebbles example, right now.
What
Per-platform delivery gauges, the release pulse, backlog, inventory, parity and quality grade.
How
Every card is a pure projection over the snapshot and the journal. No card computes its own numbers.

PART 02 · OF 05

Track truth, not fields

Status is a history with a platform, not a dropdown. Every claim on the map can be checked.

Platform statuses

One status per feature hides that Web shipped and iOS did not.

Arkaik Library ViewsLIVE
Pebble DetailLive
Web
iOS
Android
Rendered from the built-in Pebbles example, right now.
What
Seven lifecycle statuses, stored per platform, plus a blocked-by flag that keeps the status and names the dependency.
How
Acceptances carry the stored values; views and flows roll them up through one function shared by the app, the CLI and the MCP server.

Acceptances and parity

"Live" is a claim. An acceptance is a testable promise.

Arkaik Project AcceptancesLIVE
Rendered from the built-in Pebbles example, right now.
What
Given / When / Then per acceptance, linked to the views it proves, one status column per platform. Parity gaps in one click.
How
Merged pull requests promote acceptances through the GitHub App, scoped per platform.

Value pyramid

Features should answer "what value does this create", not only "is it done".

What
Thirty value elements in four tiers, each with a delivery gauge and an acceptance count.
How
Acceptances are tagged with values; the pyramid aggregates them and links back to the matrix.

Decisions

A map without its reasons is archaeology.

Arkaik Project DecisionsLIVE
Rendered from the built-in Pebbles example, right now.
What
ADR-style decisions with their own status, and three edges: supersedes, generates an acceptance, impacts a node.
How
Decision status maps onto lifecycle status at write time, and the validator flags any mismatch.

Journal and changelog

"What changed between versions" needs history, and history must never bloat the snapshot.

Arkaik Project ChangelogLIVE

Journey Map Canvas

  • Journey Map Canvas created

    View

    Mar 19, 2026
  • Journey Map Canvas: Idea → Development

    Mar 19, 2026
  • Journey Map Canvas: Development → Live

    Mar 19, 2026

going-multi-productthe-self-map

  • Shipped: File ideas before you build them

    Acceptances can now start life as intake ideas — write them down first, then attach them to views and flows as those get built, or split one idea into several. The product stays with the idea through every step.

    Aug 3, 2026
  • Anchorless acceptances are intake, not floating NFRs: Approved → Enacted

    Decision

    Aug 3, 2026
  • Split keeps the context: Development → Live

    Aug 3, 2026
  • Idea stays a status: Proposed → Approved

    Decision

    Aug 3, 2026
  • Idea stays a status created

    Decision

    Aug 3, 2026
Rendered from Arkaik's own map, right now.
What
An append-only event log; node timelines, changelogs per release, release notes and the backlog are derived from it.
How
The snapshot is authoritative for now, the journal for history, and the validator cross-checks them by value.

PART 03 · OF 05

Keep it honest

A map says what exists. Kritik says how good it is, surface by surface, and what to fix first.

Quality matrix

"How good is each surface, and what do we fix first" deserves one comparable answer, not a folder of audit PDFs.

Arkaik Quality MatrixLIVE

Security · Web app

  • SEC-01Authentication and session lifecycle integrityL3
  • SEC-03Security-definer RPC and privileged-role hygieneL1
Rendered from an illustrative Kritik audit of the Pebbles example, right now.
What
Criteria scored 0 to 4 per surface, weighted into domain scores and rolled up to a grade. An open critical finding caps the grade.
How
Scores and findings are data files in the repo; severity, priority and grade are derived, never stored, so two readers cannot disagree.

Findings and signals

An audit is a snapshot. Regressions happen between audits, when nobody is looking.

Arkaik Quality FindingsLIVE
  1. 0
    Web app
    16High· costS· Confirmed
  2. Android
    12High· costS· ConfirmedResolved
  3. 2
    Android
    9Medium· costM· Confirmed
  • Finding F-2026-08-A11Y-android-01 resolved

    by https://github.com/pebbles/pebbles/pull/745

    Aug 27, 2026
  • Signal tripped: TST-01 on android

    CI workflow exists per surface that runs its test command · at 9f2c1e4

    Aug 28, 2026
Rendered from an illustrative Kritik audit of the Pebbles example, right now.
What
Findings with a lifecycle: open, resolved, refuted, accepted risk. Signals that trip on regression. A board that opens on the open work.
How
CI trips signals over HTTP; agents open and resolve findings through MCP tools. Both are journal events, so the board is never stale.

PART 04 · OF 05

Maintained by agents

Nobody maintains a map by hand for long. Arkaik is built to be read and written by the agents that already write the code.

The agent skill

Documentation rots because updating it is a second task. A map that lives in the repo can be patched in the same commit as the code.

Arkaik Repo docs/arkaikLIVE
The change
components/maps/JourneyMap.tsx
@@ -41,6 +41,9 @@ export function JourneyMap({ projectId }: JourneyMapProps) {
const params = useJourneyGraphParams(projectId);
+ const handleNodeClick = useCallback(
+ (id: string) => openNode(id), [openNode],
+ );
return <JourneyCanvas {...params} onNodeClick={handleNodeClick} />;
What the skill wrote
docs/arkaik/bundle.json
"id": "V-journey-map",
- "status": "development",
+ "status": "live",
docs/arkaik/journal.jsonl
+{"id":"01K4…","ts":"2026-09-04T10:12:00Z","actor":"claude-code",
+ "type":"node.status_changed","node_id":"V-journey-map","from":"development","to":"live"}
The gate
$ arkaik validate seed/arkaik-self-map.json
Arkaik Bundle Validation
=======================
Nodes: 231 (35 views, 38 flows, 26 data-models, 23 api-endpoints)
Edges: 436
Journal: 809 embedded event(s)
Result: VALID
Rendered from Arkaik's own map, right now.
What
A Claude Code skill that knows the schema, patches the affected nodes surgically, and appends the matching journal event.
How
npx arkaik init scaffolds it into any repo; the bundled validator is a hard gate, so a snapshot its journal contradicts never lands.

The MCP server

An agent should not parse a 4,000-line JSON into its context to answer "what is live on the web".

Arkaik arkaik-mcpLIVE
@arkaik/schemacomputeDeliveryItemsDelivery pagethe boardarkaik CLIarkaik logMCP toolget_backlog
One projection, three readers
Agent hostClaude Codearkaik-mcpupdate_nodeStorerepo · hostedValidatorhard gateJournalappend only
The write path
request
tools/call list_nodes
{
"species": "view",
"status": "live",
"query": "map",
"limit": 3
}
response
10 matching · 3 returned
[
{
"id": "V-projects",
"title": "/projects",
"species": "view",
"status": "live"
},
{
"id": "V-maps-index",
"title": "Maps Index",
"species": "view",
"status": "live"
},
{
"id": "V-journey-map",
"title": "Journey Map Canvas",
"species": "view",
"status": "live"
}
]
Rendered from Arkaik's own map, right now.
What
arkaik-mcp: read tools that are the pages' own projections, write tools gated by the validator, Kritik tools for findings and signals.
How
One tool catalog over two stores, a repo bundle or the hosted API. Clients send operations, not graphs, and every write is a journal event.

Start from a prompt

An empty map is the hardest one to start.

Arkaik GenerateLIVE
prompt
You are **Arkaik Map Architect**, an expert at translating product ideas into structured product graph maps for Arkaik — a product graph browser used by product architects.
---
## Context: What is Arkaik
Arkaik is a product graph browser for product architects. Projects are visual maps of product architecture, containing nodes and edges that describe the product's screens, journeys, data, and APIs.
### 4-Species Model
Every node belongs to exactly one species:
- **flow** (level 1): An ordered sequence of views and sub-flows. Represents a user journey or process. Contains a "playlist" of entries.
- **view** (level 0): A reusable page or screen in the product. The atomic visual unit.
- **data-model**: A data entity, table, or domain object (e.g., User, Order, Product).
- **api-endpoint**: An API endpoint consumed or exposed by the product (e.g., POST /orders, GET /users).
### Composition via Playlists
Rendered from the built-in Pebbles example, right now.
What
A prompt builder that turns a pitch, an existing plan or a map you already have into a first bundle, for whichever model you use.
How
The generated output goes through the same schema validation as everything else before it is imported, so a hallucinated field never lands.

PART 05 · OF 05

Run it your way

No account to start, no lock-in to stay. One bundle format under every way of running it.

Lokal, Publik, Synk, Inkognito

A tool for your product's anatomy should not decide where that anatomy lives.

  • LOKAL

    In your browser

    Local-first in IndexedDB. Works offline, needs no account, and exports the whole project as one JSON file.

  • PUBLIK

    Published snapshot

    A read-only copy at arkaik.app/p/{id} for anyone you send the link to. Strip what should stay private before it leaves.

  • SYNK

    Hosted with a free account

    Backups, hosted projects, the GitHub App and the MCP remote store, behind a GitHub sign-in.

  • INKOGNITO

    Self-hosted

    Run the services on your own Postgres and storage. Same code, your keys, nobody else's database.

What
Four ways to run Arkaik, from a browser tab with no account to your own infrastructure.
How
The same bundle format under all of them: export from one, import into another. The schema and toolchain are MIT; the hosted services are open too.

Arkaik maps itself

The strongest proof of a product graph is the tool's own.

Arkaik Maps JourneyLIVE
Rendered from Arkaik's own map, right now.
What
One of Arkaik's own flows, every sub-flow open, exactly as the built-in self-map project ships in the app. Pan around, then open it and drill anywhere.
How
The same seed file the app loads, maintained by the same skill, validated by the same gate, and published with every release.

Start with your product

Everything above was rendered from a JSON file. Yours can be one prompt or one command away.

What
Create a project in the browser, generate a first map from a pitch, or run npx arkaik init in a repo and let the skill grow it.
How
Free to start, open source to stay. The docs cover every path, and the self-map is the worked example.