Running Workflows
This page covers how to run workflows — locally via the CLI for development testing, self-hosted for production, or in Tensorify's managed cloud with no local setup needed.
| What | How | Handles |
|---|---|---|
| Development | tensorify runner start + Test in the canvas | Test signals from the editor |
| Production (CLI) | tensorify runner start + Deploy in the UI | Live webhook / API calls |
| Production (Managed) | Deploy in the UI with Managed mode | Live traffic on Tensorify cloud |
One runner process serves all workflows you assign to it. You do not start a separate CLI command per workflow.
Using Managed mode? No local setup needed — deploy from the UI and Tensorify handles execution in the cloud. Skip to Deploying Workflows.
Install the CLI, then configure and start a runner for your environment:
Local machine (has a browser):
curl -fsSL https://cli.tensorify.io/install | sh
tensorify init
tensorify login
tensorify runner start
VPS / headless server (no browser):
curl -fsSL https://cli.tensorify.io/install | sh
tensorify init --name my-vps --api-key tfk_your_key_here
tensorify runner start
Get an API key from Settings → API Keys in the web app.
Leave runner start running in a terminal during development. On a VPS, use sudo tensorify runner install for systemd — see below.
With the runner connected:
Canvas Editor
│
│ Click "Test" → "Run to Selected"
▼
Tensorify Servers (signal routing)
│
│ WebSocket (your runner)
▼
Your Machine (tensorify runner start)
│
│ Executes workflow locally
▼
Canvas Editor (outputs appear in node panels)
- Configure nodes on the canvas and click Test
- Select which node to run up to, then click Run to Selected
- Tensorify routes the signal to your runner
- The workflow runs locally — your Python environment, your file system, your secrets
- Node outputs appear in the editor so you can inspect each step
You do not restart the runner when you change node settings. Edit the canvas, click Test again, and the updated configuration is used immediately.
Canvas tests do not process real webhook requests. For live traffic, deploy the workflow from the UI with CLI or Auto execution mode.
- Keep
tensorify runner startrunning (or usesudo tensorify runner installon a server) - In the canvas, click Deploy and choose CLI or Auto
- Confirm the runner appears as Connected on the Runners page
When a request hits your deployed endpoint, Tensorify's hooks service routes it to your runner via WebSocket. The workflow executes locally and the result is recorded on the Jobs page.
VPS / Linux server — install as a system service:
tensorify init --name production-vps --api-key tfk_your_key_here
sudo tensorify runner install
# Verify:
systemctl status tensorify-runner
runner install requires sudo on Linux because it writes a systemd unit file to /etc/systemd/system/. On macOS, it creates a user-level launchd plist without requiring sudo.
Process manager — wrap the foreground command:
pm2 start "tensorify runner start" --name tensorify-runner
pm2 save
pm2 startup
Docker — build your own runner image:
FROM python:3.11-slim
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
RUN curl -fsSL https://cli.tensorify.io/install | sh
ENV PATH="/root/.tensorify/bin:$PATH"
ENV TENSORIFY_API_KEY=""
CMD ["sh", "-c", "tensorify init --name docker-runner --api-key $TENSORIFY_API_KEY && tensorify runner start"]
docker build -t my-runner .
docker run -e TENSORIFY_API_KEY=tfk_your_key my-runner
Deploy individual workflows from the web UI after the container is running — the runner picks them up automatically.
Go to the Runners page in the sidebar. You will see all active runners and their last heartbeat time. A runner must show as Connected before it can receive test or production executions.
export requires a Team or Enterprise plan. All plans can execute workflows via a connected runner.
tensorify export bundles the compiled Python so you can run it without the Tensorify CLI at all.
tensorify export <workflowId> --output ./my-workflow
The exported bundle contains:
main.py— the entry pointutils.py— shared classes and helpersrequirements.txt— all Python dependencies
Run it directly:
cd my-workflow
pip install -r requirements.txt
python main.py
This is useful for scenarios where you want to deploy to infrastructure that cannot maintain a persistent runner connection, or where you want to fork the code and modify it manually.
- Deploying Workflows — configure execution modes and trigger endpoints
- CLI Reference — all commands and flags
