Circuit
What is Circuit?
Circuit is a companion application for Circuitry that supercharges your workflows with:
- Native Python execution - 10-100x faster than browser-based execution
- Remote workflow execution - Run workflows on your desktop from your iPad or laptop
- Home Circuit — remote access - Reach this computer's terminals, coding agents and files from anywhere, not just your home network. See Home Circuit
- Parallel cluster compute - Connect several machines into a compute cluster and run each code node on a different server — ideal for data science and large parallel jobs. See Compute Clusters
- File system access - Access files and folders on your computer through Circuitry
- Terminal access - Run terminal commands remotely from Circuitry
- GPU acceleration - Use your computer's GPU for AI and data science tasks
- Always available - Runs in the background, auto-starts on boot
Do I need it?
It depends on how you use Circuitry:
- Circuitry Desktop (macOS/Windows/Linux) — you don't need Circuit. Native execution, file access, and terminals are built into the desktop app. Install Circuit only on other machines you want to add as extra compute nodes.
- iPad and web — install Circuit on your computer to work on the files and projects stored there, and to use that computer as a compute node for native Python, GPU, and terminal access.
- Away from home? — turn on Home Circuit and this computer stays reachable from your iPad or phone wherever you are — switching between your local network and the internet automatically.
- No computer of your own? — use a Cloud Circuit instead. Circuitry runs a Linux machine for you, so you get a terminal, files and somewhere to run code without installing anything. Available on paid plans.
- Everyone — add Circuit on as many additional machines as you like to build a compute cluster: a workflow with parallel Python nodes can run each node on a separate machine. See Compute Clusters.
Installation Options
The desktop tray app is available now. CLI and Docker installs are coming soon.
Option 1: Desktop Tray App (Recommended)
The easiest way to get started. Download the installer for your platform:
- macOS: DMG installer for Apple Silicon (M1-M5) or Intel Macs
- Windows: Universal installer for x64 and ARM64
- Linux: .deb packages (Debian/Ubuntu) or AppImage (universal)
Downloading:
- Sign in at circuitry.dev and open your dashboard
- Click the Downloads card (or go directly to the Download Page — you'll be asked to sign in)
- The page detects your platform and offers the matching installer. Downloads require a plan that includes the desktop apps (Personal and up)
Installing:
- macOS: Open the downloaded DMG and drag Circuit to Applications, then launch it from Applications
- Windows: Run the downloaded installer and follow the prompts
- Linux: Install the package for your distribution —
sudo dpkg -i <file>.deb(Debian/Ubuntu),sudo rpm -i <file>.rpm(Fedora/RHEL), or make the AppImage executable (chmod +x <file>.AppImage) and run it
First Launch:
- Launch Circuit - it appears as a tray icon in your menu bar/system tray
- The server starts automatically and is ready to connect
- Open at Login is enabled by default so Circuit starts automatically on reboot
Open at Login:
- Enabled by default on first launch - Circuit starts automatically when you log in
- Toggle via the tray menu: click the tray icon → Open at Login (checkbox)
- Uses native platform APIs: macOS Login Items, Windows Registry, Linux XDG autostart
- Disable if you prefer to start Circuit manually
Option 2: CLI Installation — Coming soon
A command-line installer for servers and headless machines is on the way. For now, use the Desktop Tray App (Option 1).
Option 3: Docker Container — Coming soon
A Docker image for cloud, Kubernetes, and containerized deployments is on the way. For now, use the Desktop Tray App (Option 1).
Connecting to Circuit
Automatic Connection (Same Network)
Circuit automatically advertises itself on your local network. Circuitry will detect it and show a connection notification.
On your computer:
- Start Circuit (tray app or CLI)
- The server starts on port 3030 (or 3031-3039 if 3030 is busy)
On Circuitry (any device):
- Open Circuitry in your browser
- Click Settings (⚙️) → Models → Circuit
- Click "Connect" - Circuitry will auto-discover Circuit
- You'll see "Connected" with a green indicator and latency (e.g., "45ms")
Manual Connection (Cross-Network)
If you want to connect to Circuit on a different network (e.g., Cloud Circuit, remote desktop):
Find your Circuit IP:
- macOS/Linux: Run
ifconfigand look forinetaddress - Windows: Run
ipconfigand look forIPv4 Address - Example:
192.168.1.100
Connect from Circuitry:
- Open Settings (⚙️) → Models → Circuit
- Uncheck "Auto-discover server"
- Enter the URL:
http://192.168.1.100:3030 - Click "Test Connection" to verify
- Click "Connect"
Remote Access with Home Circuit
The connections above work on your local network. Home Circuit keeps this computer reachable when you leave it behind — at a café with your iPad, or away from the office.
- In Circuitry, open the server menu in the top bar and choose Home Circuit
- Follow the three steps — it ticks each one off as it's done
- On the computer, click the Circuit icon and turn on Allow Remote Connections
Your devices then switch between the local network and Home Circuit automatically, always preferring the local network when you're home. It isn't screen sharing — Circuitry talks to your machine directly over an end-to-end encrypted connection, and only devices you paired in person can connect. Full details, including the security model: Home Circuit.
QR Code Connection (Mobile Devices & Docker/CLI)
The easiest way to connect your iPad, iPhone, or other devices to Circuit:
Desktop Tray App (macOS/Windows/Linux)
On your computer:
- Open Circuit tray menu (click the tray icon in menu bar/system tray)
- Click "Show QR Code"
- A QR code appears with the connection URL
On your mobile device:
- Open Circuitry in Safari/Chrome
- Click the Circuit indicator (⚡ icon) in the top-right corner
- Click "Scan QR Code"
- Point your camera at the QR code on your computer screen
- Connection is automatically configured with a secure temporary key
Docker / CLI Installation
On your server (Docker, Linux, or remote machine):
# Start the server with network access
eserver config set server.allowNetworkAccess true
eserver start
# In another terminal, generate QR code
eserver qr
You'll see an ASCII QR code displayed in the terminal with connection details.
On your iPad/iPhone/Android:
- Open the Circuitry app
- Click the Circuit indicator (⚡ icon) in the top-right corner
- Click "Scan QR Code"
- Point your camera at the QR code in the terminal
- Connection is automatically configured with a secure temporary key
Benefits:
- No manual IP address or port entry
- Automatic secure key generation
- Works across your local network
- Each device can connect to multiple Circuits
Running Python Workflows on the Server
Enable Circuit for Python Nodes
Once connected, you can run Python code nodes on Circuit for massive performance gains:
Per-Node Setting:
- Select a Code node in your workflow
- Set the language to "Python"
- Click the "Configure Node" icon (⚙️ gear icon on the node)
- In the node configuration panel, you'll see a green box: "Execute on server"
- Enable the checkbox to run this node on Circuit
- If you have multiple Circuits connected, a dropdown appears where you can select which server to use for this specific node
- Run the workflow - Python executes on your selected server at native speed
Multiple Server Support:
- Each Code node can use a different Circuit
- Great for distributed workflows (e.g., one server with GPU for ML, another for file processing)
- Server selection is saved per-node in the workflow
- If a selected server is offline, the workflow will show an error
Default Setting (All New Python Nodes):
- Open Settings (⚙️) → Models → Circuit
- Enable "Use Circuit by default for Python"
- All new Python nodes will automatically use Circuit
- You can still toggle per-node if needed
Performance Comparison
Here's what you can expect:
| Task | Browser (Pyodide) | Circuit (Native) | Speedup |
|---|---|---|---|
| Calculate 10,000 primes | 4.2 seconds | 42ms | 100x faster |
| NumPy matrix (1000×1000) | 8.5 seconds | 85ms | 100x faster |
| Pandas CSV (100k rows) | 12 seconds | 120ms | 100x faster |
| Simple calculations | ~100ms | ~10ms | 10x faster |
When to use Circuit:
- Data science and machine learning
- Large dataset processing
- Complex calculations
- GPU-accelerated tasks
- When you need access to pip packages
When to use browser (Pyodide):
- Simple scripts
- Working offline on iPad
- Don't have Circuit installed
- Basic calculations
Accessing Files with Circuitry
Circuit gives Circuitry access to your computer's file system:
File Browser
- Open Circuitry
- Click the File Browser icon (📁)
- You can now:
- Browse your computer's files and folders
- Read file contents
- Upload files to your computer
- Download files from your computer
- Create new folders
Supported file types:
- CSV, JSON, XML - Auto-preview with syntax highlighting
- Images (PNG, JPG, GIF) - Inline preview
- Text files (.txt, .md, .log) - Full-text display
- Code files (.py, .js, .ts) - Syntax highlighting
Using Files in Workflows
Read a file:
- Add a File node to your workflow
- Click "Browse" and select a file from Circuit
- The file path is stored in the node
- When the workflow runs, Circuit reads the file and passes content to the next node
Write a file:
- Add a File Output node to your workflow
- Specify the output path (e.g.,
/Users/you/Desktop/output.csv) - Connect a data source (e.g., DataGrid, Code node output)
- When the workflow runs, Circuit writes the file to your computer
Accessing Terminals
Run terminal commands on your computer from anywhere:
Opening a Terminal
- Click the Terminal icon (⌨️) in Circuitry
- Select Circuit as the connection
- You now have a full shell on your computer:
- macOS/Linux: bash or zsh
- Windows: PowerShell or cmd
Terminal in Workflows
Add terminal execution to your workflows:
Terminal Node:
- Add a Terminal node to your workflow
- Enter the command (e.g.,
ls -la,git status) - Choose Circuit as the executor
- When the workflow runs, the command executes on your computer
- The output (stdout/stderr) is passed to the next node
Use Cases:
- Run git commands
- Execute build scripts
- Process files with system tools
- Monitor system resources
- Automate system administration
Compute Node Features
Circuit unlocks advanced compute capabilities:
GPU Acceleration
If your computer has a GPU (NVIDIA, AMD, or Apple Silicon), Circuit can use it:
Check GPU status:
- Open Settings → Models → Circuit
- Look at "Server Capabilities"
- GPU Available: Yes/No
- GPU Name: e.g., "NVIDIA RTX 3080" or "Apple M1 Max"
Use GPU in Python:
import torch
# PyTorch will automatically use GPU if available
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"Using device: {device}")
# Your ML code here
model = model.to(device)
Multiple Circuits
You can connect to multiple Circuits and distribute work:
Setup:
- Install Circuit on multiple computers (e.g., gaming PC, Mac, Linux server)
- Each Circuit gets a different port or IP address
- Add all connections in Circuitry Settings
Usage:
- Select which Circuit to use per-node
- Run different parts of your workflow on different machines
- Load-balance heavy compute tasks
- Use the machine with the best GPU for ML tasks
Parallel Execution
Circuit supports true parallel execution — connect several machines into a compute cluster and spread the work across them. This is ideal for data science and large parallel jobs: fan a dataset out across machines, run native Python (and GPU) on each, and merge the results. See Compute Clusters for connecting and routing across servers.
Fork/Join Pattern:
- Add a Fork node to split the workflow into branches
- Each branch can run on a different Circuit
- Add a Join node to merge results
- All branches execute simultaneously
Example:
Start → Fork → [Branch 1: Python on Mac]
↓ [Branch 2: Python on PC with GPU]
↓ [Branch 3: Python on Cloud Circuit]
→ Join → Combine Results → End
Connection Settings
Auto-Discovery
How it works:
- Circuit broadcasts its presence on ports 3030-3039
- Circuitry scans these ports when you click "Connect"
- Works on same WiFi network or local network
Enable/Disable:
- Settings → Models → Circuit
- Toggle "Auto-discover server"
- When disabled, you must enter the URL manually
Manual URL
Format:
http://localhost:3030- Same computerhttp://192.168.1.100:3030- Local networkhttp://your-server.com:3030- Remote server
Custom Port: If Circuit runs on a different port:
http://localhost:3035(ports 3030-3039 are tried automatically)
Connection Health
Circuitry monitors the connection:
- Latency: Shown next to "Connected" (e.g., "45ms")
- Status: Green = good, Yellow = slow, Red = disconnected
- Auto-reconnect: If connection drops, Circuitry tries to reconnect automatically
Troubleshooting
Can't Connect to Circuit
Check Circuit is running:
- macOS: Look for Circuit icon in menu bar
- Windows: Look for Circuit in system tray
- Linux: Run
eserver statusin terminal
Check the port:
- Default: 3030
- Circuit console shows which port it's using
- Try:
curl http://localhost:3030/ping
Check firewall:
- macOS: System Settings → Network → Firewall → Allow Circuit
- Windows: Windows Defender Firewall → Allow Circuit
- Linux:
sudo ufw allow 3030
Check network:
- Same WiFi network? (for auto-discovery)
- Correct IP address? (for manual connection)
iPhone or iPad Can't Connect (Local Network Permission)
On iPhone and iPad, an app must be granted Local Network access before it can reach Circuit on your computer. When that permission is missing, iOS reports it as "The Internet connection appears to be offline" — even though your Wi-Fi is fine. That message is misleading, and it is the most common cause of a phone or tablet that won't pair.
First check: Settings → Privacy & Security → Local Network → is Circuitry listed and switched on?
- Listed but off — turn it on, then reopen Circuitry.
- Listed and already on, but still failing — switch it off and on again, fully close Circuitry, and reopen it.
- Not listed at all — iOS believes it has already asked, so it never prompts.
If it still fails, delete Circuitry and reinstall it. A fresh install has no stale permission record and asks properly the first time it needs the network. Your documents and projects are not stored on the device alone, so nothing is lost.
Signs it is this and not your network:
- Other apps and websites work normally on the same Wi-Fi.
- Safari on the same device can load
http://<your-computer-ip>:3030/ping— Safari is exempt from this permission, so if Safari works and Circuitry doesn't, it is the permission and not your network. - The failure is instant rather than a slow timeout.
Running a development build from Xcode? There is one more cause. iOS ties this permission to the app's signing identity, so a build signed against a wildcard provisioning profile can never hold the permission you grant it — Settings shows it switched on while the system refuses every request, and no amount of reinstalling, rebooting or resetting privacy will help. Register a real App ID for the bundle identifier and rebuild. App Store builds are never affected.
Pairing QR Code Expired
Each pairing QR code is valid for about five minutes, and Circuit replaces it automatically when it lapses. If setting up takes a while — granting permissions, say — the code you scanned may already be dead by the time you retry. Show the QR code again and scan the fresh one rather than retrying the old scan.
Circuit Frozen or Unresponsive
If the tray icon stops responding — the menu won't open, or Stop/Quit do nothing — the app itself is frozen. This is rare, but can happen when the whole system runs out of memory (for example while running large local AI models): the operating system suspends background apps, and because Circuit runs as a background tray app it may not appear in the macOS "Force Quit" or out-of-memory dialogs.
A frozen app ignores a normal Quit, so force-stop it from a terminal and relaunch:
macOS (Terminal):
pkill -9 -f "Circuit"
open -a "Circuit"
Windows (PowerShell or Command Prompt):
taskkill /F /IM "Circuit.exe"
Then relaunch Circuit from the Start menu.
Linux:
pkill -9 -f circuitry-eserver
circuitry-eserver &
You can also force-quit it from Activity Monitor (macOS) or Task Manager (Windows) — search for "Circuit". Circuitry reconnects automatically once the server is back up.
Python Not Executing on Circuit
Verify toggle is enabled:
- Code node → Config panel → "Execute on Circuit" must be checked
Check connection:
- Settings → Circuit → Must show "Connected" in green
Check logs:
- Browser console (F12 → Console) shows execution errors
- Circuit logs (Tray menu → View Logs) shows server-side errors
Try fallback:
- Uncheck "Execute on Circuit"
- Workflow will use browser-based Python (slower but always works)
Files Not Accessible
Check permissions:
- Circuit needs read/write permissions to the folder
- macOS: System Settings → Privacy → Files and Folders → Circuit
- Windows: Run Circuit as Administrator
- Linux: Check file ownership and permissions
Check path:
- Use absolute paths:
/Users/you/file.txtnot~/file.txt - Windows: Use forward slashes:
C:/Users/you/file.txt
Terminal Commands Fail
Check shell:
- Circuit uses the system default shell
- macOS/Linux: bash or zsh
- Windows: PowerShell
Check path:
- Commands must be in PATH
- Use full path:
/usr/bin/python3not justpython3
Check permissions:
- Some commands need sudo (not recommended in workflows)
Security Considerations
Local Network
Circuit runs on your local network without authentication. This is safe if:
- You trust everyone on your WiFi network
- You're using it at home or on a private network
- Firewall is enabled and configured
Remote Access
If you expose Circuit to the internet:
- Use a VPN - Don't expose port 3030 directly to the internet
- Use SSH tunnel -
ssh -L 3030:localhost:3030 user@server - Authentication - Future versions will support API keys
- HTTPS - Use a reverse proxy (nginx, Caddy) with SSL
Code Execution
Circuit executes arbitrary code:
- Only run workflows you trust
- Be careful with code from unknown sources
- Review Python code before executing
- Use environment variables for secrets (don't hardcode API keys)
Advanced Configuration
Environment Variables
Set environment variables that all workflows can access:
In Circuitry:
- Settings → Environment Variables
- Add variables (e.g.,
API_KEY,DATABASE_URL) - Scope: Global or per-project
- These are passed to Circuit when executing Python
In Python:
import os
api_key = os.environ.get('API_KEY')
db_url = os.environ.get('DATABASE_URL')
Custom Python Packages
Install packages on Circuit that Circuitry can use:
CLI Method:
# SSH into the machine running Circuit
pip3 install pandas numpy scikit-learn tensorflow
Docker Method:
FROM johnwylie/eserver:latest
RUN pip3 install pandas numpy scikit-learn tensorflow
Verify:
# In a Circuitry Code node
import pandas as pd
import numpy as np
print(pd.__version__, np.__version__)
MCP Proxy (Advanced)
Circuit can act as a Model Context Protocol (MCP) proxy:
Enable in Circuit:
- This is automatically enabled when Circuit starts
- Allows Circuitry to use MCP tools through Circuit
- Useful for accessing local MCP servers from remote devices
Multi-Client Support: When multiple Circuitry clients (iPad, browser, Electron) are connected to Circuit, MCP connection requests are broadcast to all clients. The first client to approve binds the MCP session to that client. See Multi-Client Connection Behavior for details.
What's Next?
- Circuit CLI Documentation - Complete CLI reference
- Docker Deployment Guide - Cloud deployment, GPU, Kubernetes
- Python Support - Writing Python code in Circuitry
- Workflow Executor - How workflows execute
Getting Help
- Documentation: Docs Home
- Support: Contact support through the app settings