Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.hellofriday.ai/llms.txt

Use this file to discover all available pages before exploring further.

Friday runs as a set of local services managed by the Friday Studio launcher. Here’s how they fit together.

Daemon

Port 18080 — The core of Friday. The daemon is the backend service that runs everything. It manages workspace lifecycles, orchestrates agents, executes workflows, and exposes the HTTP API that all other components talk to. Key responsibilities:
  • Workspace management — loads workspace.yml configurations, creates runtime instances on demand, and tears them down after idle timeout
  • Workflow engine — executes jobs defined as FSM (finite state machine) pipelines, routing between states and managing transitions
  • Agent orchestration — dispatches agents (built-in, custom Python, or inline ), manages tool connections, and collects results
  • Signal routing — receives signals (HTTP webhooks, cron schedules, filesystem events, and chat messages from Slack, Discord, Telegram, and WhatsApp) and routes them to the correct workspace and job
  • Streaming — pushes real-time execution progress to connected clients via Server-Sent Events (SSE)
  • Storage — persists workspace registries, session history, artifacts, and activity logs using SQLite by default
The daemon is the only component that other services need to reach. Everything else communicates through it.

Studio

Port 15200 — The local web dashboard. The Studio is your visual interface for managing spaces, testing agents, inspecting job executions, and browsing skills. It communicates with the daemon API over HTTP. Key tools:
  • Space dashboard — view runs, jobs, signals, and agents for each loaded space
  • Agent Tester — test any agent in isolation with different inputs and models
  • Job Inspector — debug pipelines with visualization and waterfall timelines
  • Skills browser — navigate, edit, and publish skills
  • Configuration editor — edit workspace.yml with syntax highlighting
  • CLI cheatsheet — searchable command reference (press Shift+?)

Launcher

The Friday Studio launcher is a macOS system tray app that manages the full service stack: daemon, Studio, webhook tunnel, Link, and NATS. It starts everything together, shows per-service health status, and shuts down cleanly. The launcher runs a health server at http://127.0.0.1:5199:
  • GET /api/launcher-health — JSON snapshot of per-service status
  • GET /api/launcher-health/stream — SSE stream of service status transitions
  • POST /api/launcher-shutdown — trigger orderly shutdown
Port 13100 — Credential management service. Link manages OAuth connections and API key storage. When you connect an integration (Google Calendar, Slack, GitHub, etc.), Link handles the OAuth flow and stores tokens locally. The daemon routes credential requests through Link at runtime.

Chat interface

The primary way to build and manage spaces is through the Friday chat interface. Open any space in Studio and use the Chat tab to talk to Friday — describe what you want, and Friday creates signals, agents, jobs, and workspace configuration for you. The chat interface is backed by the workspace-chat agent, which has access to the full workspace API — it can create spaces, add signals, wire up jobs, configure MCP servers, and deploy changes, all through conversation.

Webhook Tunnel

Port 19090 (public-facing) · Port 20241 (cloudflared transport, loopback) — Public URL for receiving external webhooks. The webhook tunnel creates a Cloudflare tunnel so external services (GitHub, Jira) can send webhooks to your local instance. Without it, you’d need to expose your machine to the internet manually. How it works:
  1. On startup, the tunnel registers with Cloudflare and gets a public URL
  2. External services send webhooks to https://{tunnel-domain}/hook/{provider}/{workspaceId}/{signalId}
  3. The tunnel verifies the webhook signature (if configured) and forwards the payload to the daemon
  4. The daemon routes it to the correct workspace and triggers the job
Set TUNNEL_TOKEN for a stable URL across restarts, or let it generate a random temporary URL each time. Set NO_TUNNEL=true to disable it entirely.

NATS

Port 4222 (protocol) · Port 8222 (monitor / healthz) NATS is the internal message bus Friday uses for agent communication. The daemon, agents, and internal services communicate over NATS — you don’t interact with it directly. The monitor endpoint at http://localhost:8222/healthz can be used to verify NATS is running.

CLI

Binary: friday — Command-line interface for the daemon. The friday CLI communicates with the daemon over HTTP (localhost:18080). It’s an alternative to the Studio for managing spaces, triggering signals, inspecting sessions, and publishing skills. See the CLI reference for the full command list.

How they communicate

FromToPurpose
StudioDaemonAll UI operations, real-time streaming
CLIDaemonAll CLI operations
Webhook TunnelDaemonForward external webhooks
External servicesWebhook TunnelGitHub, Jira webhooks
AgentsNATSInternal message bus for agent communication

Data flow

When you trigger a job, here’s what happens:
1

Signal received

An external webhook, cron schedule, or manual trigger hits the daemon.
2

Workspace activated

The daemon finds the target workspace. If its runtime isn’t loaded, it creates one on demand from the workspace.yml.
3

Session created

A new session is created to track this execution. The workflow engine loads the job’s FSM definition.
4

FSM executes

The workflow engine walks through FSM states. At each action state, it dispatches agents via the orchestrator. Agents connect to MCP tool servers, call LLMs, and produce results.
5

Results stream

Each agent step, tool call, and state transition is pushed to connected clients via SSE. The Studio renders progress in real time.
6

Session saved

On completion (or failure), the session history and any produced artifacts are persisted to storage.