
Figranium
Figranium is an open-source, deterministic browser automation platform that lets you build visual browser tasks that can be called as APIs. Create scraping and automation workflows visually, pass dynamic inputs at runtime, and get structured results—without usage credits or third-party data hosting.
What You Get
- Block‑based automation — build flows with actions like click, type, wait, hover, and execute JavaScript against modern pages.
- Task API — trigger saved tasks via HTTP (
/api/tasks/:id/api), pass variables at runtime, and secure runs with the API key you control. - Captures & Cabinets — review screenshots and recordings in Captures, while browser downloads are routed into task-selected Cabinets for later download or upload.
- Proxy management — host, rotate, or import HTTP/SOCKS proxies, flag a default, and toggle rotation per task.
- Task Scheduling — run workflows automatically using visual interval/daily/weekly/monthly settings or advanced cron expressions.
- Security-first — session authentication, IP allowlists, secret management, and audit trails live entirely inside your environment.
Official Partners
Figranium is proudly supported by:
Featured Partner
Integration Partner
Infrastructure Backers
Getting Started
This starts the app on http://localhost:11345 and the VNC viewer on http://localhost:54311.
Docker Compose (Standard)
1. Create a Project Directory
Create a directory for your Figranium installation and navigate into it:
mkdir figranium-server
cd figranium-server
2. Create docker-compose.yml
Create a docker-compose.yml file in your project directory:
wget https://raw.githubusercontent.com/figranium/figranium/main/docker-compose.deploy.yml -O docker-compose.yml
3. Start with Docker Compose
Run the following command to start the application in detached mode:
docker compose up -d
Session Secret
Set SESSION_SECRET before any run. A quick generator:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
Configuration
| Variable | Purpose | Default |
|---|---|---|
SESSION_SECRET |
Signs session cookies. Required. | — |
ALLOWED_IPS |
Comma list for basic IP allowlisting. | none (open) |
TRUST_PROXY |
Honor X-Forwarded-* when behind a reverse proxy. |
0 |
ALLOW_PRIVATE_NETWORKS |
Allow scraping local/private IPs (SSRF risk). | false |
VITE_DEV_PORT |
Port for front-end dev server. | 5173 |
VITE_BACKEND_PORT |
Backend port for proxying + scripts. | 11345 |
DB_TYPE |
Optional database type overriding disk storage. Set to postgres to use PostgreSQL. |
— |
DB_POSTGRESDB_HOST |
Hostname for the PostgreSQL database (required if DB_TYPE is postgres). | — |
DB_POSTGRESDB_PORT |
Port number for the PostgreSQL database (required if DB_TYPE is postgres). | — |
DB_POSTGRESDB_USER |
Username for the PostgreSQL database (required if DB_TYPE is postgres). | — |
DB_POSTGRESDB_PASSWORD |
Password for the PostgreSQL database (required if DB_TYPE is postgres). | — |
DB_POSTGRESDB_DATABASE |
Database name for PostgreSQL. | postgres |
USE_CLOAK_ENGINE |
Set to true to run the browser engine on CloakBrowser instead of the default Playwright stealth stack. |
false |
CLOAKBROWSER_LICENSE_KEY |
CloakBrowser license key for the latest binary. | — |
CAPTCHA solving
Figranium uses Fiptcha for CAPTCHA solving. Fiptcha owns the CAPTCHA solver implementation and its configuration, supported providers, local/remote solving behavior, model setup, and platform-specific companion tooling. See the Fiptcha repository for the current CAPTCHA documentation instead of relying on duplicated configuration here.
Proxy rotation also respects data/proxies.json (see below), and data/allowed_ips.json works as an alternate allowlist format.
Advanced Configuration
PLAYWRIGHT_BROWSERS_PATH(or setPLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH) when using a shared Playwright installation.NODE_ENV=productionenables the bundleddist/client and reduces console verbosity.HOST=0.0.0.0allows binding beyond localhost inside Docker containers, whilePORToverrides the Express listen port (defaults to11345).- Set
LOG_LEVELtodebugif you need more Playwright or proxy diagnostics.
Task Modes
Figranium has two task modes:
- Agent Mode — deterministic browser automation built from an ordered sequence of actions, control flow, variables, and extraction.
- Scrape Mode — lightweight HTTP-based scraping and extraction without launching a browser.
Visible browser sessions are a debugging/runtime capability, not a third task mode.
UI Walkthrough
- Dashboard — view Task and execution metrics, search and sort Tasks, and open or create Tasks.
- Task Editor — build Agent or Scrape Tasks, configure actions and extraction, test blocks, manage variables, choose a Cabinet, schedule runs, and trigger executions.
- Executions — browse and filter run history, inspect outcomes and execution details, and review returned data.
- Captures — review generated screenshots and recordings with open, download, copy, and delete controls.
- Cabinets — manage durable file queues used by Task downloads and Upload blocks, including files, ZIPs, folders, and upload status.
- Settings — manage API Keys, AI Models, User Agent, Proxies, Appearance, and About settings.
Task Capabilities
- Tasks support actions including navigation, click, type, wait, press, scroll, JavaScript, hover, screenshots, conditions, loops, variables, uploads, and error handling.
- Variable templating (
{$var}) and structured conditions make Tasks reusable with runtime inputs. - Extraction can return structured data from browser or scrape executions.
- See
AGENT_SPEC.mdfor the Task schema and action contract.
Proxies
Proxies can be defined via the UI or data/proxies.json:
[
"http://user:[email protected]:8000",
{ "server": "socks5://proxy2.example.com:1080", "label": "data center" }
]
hostis always available and represents your machine’s default IP.- Rotation settings (
round-robinorrandom) live in Settings and persist through the backend endpoints. - Import/export operations live behind
/api/settings/proxies/import.
API Surface
Figranium exposes a REST