Friday modules are separated pieces of software. A module owns its runtime boundary, dependencies, root store settings, and service API. Some modules can also be wrapped as LLM tools, but tool exposure is only one possible surface for a module.

Store settings are documented in store.md. Each module owns one root-level store property.

Use module terminology for product architecture, documentation, UI descriptions, and future runtime boundaries.

Rules

  • Each module owns its dependencies and hides provider-specific behavior behind adapters.
  • Credentials stay on configured provider records, never in task, schedule, channel, or tool payloads.
  • Tool wrappers call modules; they do not become the module boundary.
  • Service APIs are main-process boundaries that UI, IPC, tasks, schedules, and tools can call after validation.
  • Provider/model overrides may pass ids only. API keys, base URLs, webhook secrets, and raw provider records must still resolve from StoreService.

Module Inventory

Module Store key Documentation Surfaces
Task scheduler taskScheduler scheduled.md Service, IPC, LLM tool cron
Background task backgroundTask background.md Service, IPC, LLM tool task
Agent llmAgent large-language-model.md Service only for now
Speech to text speechToText speech-to-text.md Service, future/optional LLM tool
Text to speech textToSpeech text-to-speech.md Service, future/optional LLM tool
Text to image imageCreator text-to-image.md Service, future/optional LLM tool
Text to video textToVideo text-to-video.md Service, future/optional LLM tool
Sound textToSound music-creator.md Service, future/optional LLM tool
OCR ocr ocr.md Service, future/optional LLM tool
Embedding embedding embedding.md Service, future/optional LLM tool

Tool And Service Boundaries

The task scheduler and background task modules are already valid LLM tool surfaces because they expose scheduling and immediate task creation as explicit agent actions.

The agent module is different: it is a service that runs agent turns. It should not be exposed as a direct LLM tool for now. Other modules may call the agent service through validated paths, such as the agent.run background task handler or Friday cron agentTurn jobs.

TTS, STT, text-to-image, video, sound, OCR, and embedding are module services first. They may also have LLM tools, but those tools must stay thin wrappers around the module service and must not own provider/model selection or credentials.