Technical flow

From hook event to operator view.

A local pipeline turns bounded workflow events into reviewable cockpit state.

FactionOS starts with Claude Code hooks, Codex CLI hooks, or compatible producers. Events become JSON payloads for local `/event` ingest, local server state, WebSocket updates, and cockpit views, with optional outbound adapters and optional War Room collaboration kept explicit.

Hook to cockpit

The pipeline is an ordered local flow.

Each step names the source, input, output, and boundary. The sequence is an ordered list so the flow remains understandable without relying on color, geometry, or motion.

  1. 01

    Claude Code

    Claude Code hooks emit local workflow events.

    Configured hooks can describe prompt lifecycle, tool activity, and validation milestones.
    Input
    Local Claude Code workflow
    Output
    Hook event

    Boundary Hook events start on the developer machine and do not require a hosted account.

  2. 02

    Codex CLI

    Codex CLI hooks use the provider-specific local map.

    Codex support installs managed user-level hook commands while leaving hook trust review to Codex.
    Input
    Codex CLI session event
    Output
    Managed hook event

    Boundary FactionOS does not change Codex auth, model, provider, profile, or trust settings.

  3. 03

    Compatible producers

    Other producers can follow the same event contract.

    Compatible producers can use the generic event API shape.
    Input
    Compatible event producer
    Output
    Protocol-shaped event

    Boundary Compatibility is contract-based and does not imply every agent provider is fully supported.

  4. 04

    Protocol

    Events become JSON payloads with known fields.

    Shared contracts keep event names, timestamps, mission context, and review state aligned.
    Input
    Hook signal
    Output
    Bounded JSON payload

    Boundary Payload examples should avoid secrets, raw source, and broad local path disclosure.

  5. 05

    Local /event

    The local `/event` endpoint ingests the payload.

    The server accepts local events and turns them into product state near the workspace.
    Input
    JSON payload
    Output
    Accepted local event

    Boundary Ingest is local product runtime behavior, not a browser call made by this website.

  6. 06

    apps/server

    The local server normalizes mission state.

    Server logic aligns events, snapshots, lifecycle state, diagnostics, and review posture.
    Input
    Accepted event
    Output
    Bounded state snapshot

    Boundary Server state is not automatically hosted, indexed, or sent to website analytics.

  7. 07

    WebSocket

    A WebSocket stream updates the local cockpit.

    When runtime is active, the cockpit can receive live state changes without polling static pages.
    Input
    State change
    Output
    Streamed cockpit update

    Boundary This static route does not open a WebSocket or connect to a visitor runtime.

  8. 08

    apps/web

    The cockpit renders missions, timelines, and review state.

    Operators inspect the roster, mission feed, battlefield map, approvals, timelines, and diagnostics.
    Input
    Snapshot and stream
    Output
    Operator view

    Boundary The product cockpit is separate from this public website route.

  9. 09

    Adapters

    Optional adapters send outbound notices only.

    Discord, Telegram, and generic HTTPS adapters are optional outbound paths. They receive narrow status messages only if configured.
    Input
    Operator-approved state
    Output
    External notification

    Boundary Adapters are not inbound command channels, remote execution paths, or visitor analytics.

  10. 10

    War Room

    Optional War Room exposes shared mission posture.

    A team-visible surface can be enabled separately when collaboration boundaries are configured.
    Input
    Shared mission state
    Output
    Collaborative view

    Boundary War Room collaboration is optional and separate from the local baseline. It is not a default hosted identity, storage, or public replay claim.

Setup examples

Command panels are static examples.

These panels show the shape of local setup without becoming an installer, copy action, hosted shell, or replacement for the public docs.

Example only

Install dependencies

static sample

Use the repository docs for the complete setup path and supported Node/npm versions.

npm install
npm --workspace apps/cli link

Boundary These lines are static examples. This website cannot install packages or link the CLI.

Read Docs External docs

Example only

Start local development

static sample

Local development starts product surfaces on the developer machine.

npm run dev
npm --workspace @factionos/public-website run dev
npm --workspace @factionos/public-website run typecheck

Boundary Run commands from your own terminal after reviewing the public docs and repository guidance.

Read Docs External docs

Example only

Initialize local hooks

static sample

Provider setup is explicit: Claude Code, Codex CLI, or both can be selected by the operator.

factionos init --cli claude
factionos init --cli codex
factionos status --cli all

Boundary Codex hook trust remains a Codex review step. These examples do not bypass local trust prompts.

Read Docs External docs

Handoff

Use examples as a map, not as an installer.

The setup panels show the shape of a local workflow. The public docs own complete setup detail, CLI guidance, and validation steps.

Boundary The website never executes terminal commands. Commands belong in an operator-controlled local shell after docs review.