Hybrid Execution Model — Online vs Offline Mode

📘 General javascript v1

Flowork apps and nodes operate under two strict execution modes: Online (HTML/JS in Chromium sandbox) and Offline (Python/Node/Go with full OS access). This article explains the rules, constraints, and how the engine handles each mode.

Online vs Offline

Every Flowork app runs in one of two modes:

Online Mode (Web Sandbox)

  • Languages: HTML, CSS, client-side JavaScript
  • Environment: Chromium WebEngine renderer
  • Access: Zero file system, zero native binaries
  • Use case: UI tools, dashboards, web-based utilities

Offline Mode (Native OS)

  • Languages: Python, Node.js, Go, C, C++, Ruby
  • Environment: Operating System level, powered by Go Engine
  • Access: Full system resources — files, processes, network
  • Use case: Automation scripts, CLI tools, background services

How It Works

The execution mode is set in the app's schema.json manifest file. When the engine loads an app, it reads this field and routes execution accordingly:

  • Online: App HTML is loaded into a sandboxed iframe via SandboxedApp.vue
  • Offline: App entry script is spawned as a child process via internal/runner/

Security Model

Online apps are completely sandboxed — they cannot access the file system, spawn processes, or interact with the OS. They communicate with the engine only through the REST API on Port 5000.

Offline apps have full system privileges. They can read/write files, execute commands, and access network resources without restrictions.