Agent workflows you can watch run
Novalink is a self-hosted editor for AI agent workflows. Wire agents, tools and branches on a canvas, watch every node report its status live, and replay any run afterwards.
Start with a graph you can read
A workflow is a versioned JSON graph, and the canvas is only its editor. A trigger starts the run and every node hands its output to the next.
Templates such as
{{ nodes.classify.output.urgency }}may reference upstream nodes only, and validation rejects anything else before a run starts.The agent is the core node
Attach any capable node to an agent with a tool edge, and the agent decides when to call it. Here the classifier looks up the customer through an HTTP Request node before it answers.
Structured output picks the branch
The agent returns JSON matching your schema, using the model's native structured output mode. The If node reads
urgencyand routes the run. The branch it did not take is marked skipped, so you can see exactly which path fired.Every run can be replayed
Each run stores the exact graph it executed. Open any past run on a read-only canvas and inspect what every node received and returned, even after the workflow has changed.
Your infrastructure, your keys
Novalink runs on your own machine against Postgres. Credentials are encrypted at rest and never returned to the browser once saved, and the HTTP node refuses private and loopback addresses unless you allow them.
9 node types, one of them calls any API
No catalogue of hundreds of integrations. A small set of nodes, plus one HTTP Request node that works as a step or as a tool an agent can call, keeps the whole system small enough to understand.
- Triggers
- Manual Triggermanual_triggerRun from the editor with a test payload.
- Webhookwebhook_triggerEndpoint plannedAn HTTP request starts the run.
- Agents
- AgentagentLLM call with tool calling and structured output.
- Tools
- HTTP Requesthttp_requestCall any API. Can also be attached to an agent as a tool.
Run it on your own machine
Postgres in Docker, with the API and the editor running beside it on infrastructure you control. Model keys stay encrypted in your own database.
Start Postgres
Runs in Docker on localhost:5433.
docker compose up -dRun the API
Generate a Fernet key and paste it into
FERNET_KEYin.env.cd backend python3 -m venv .venv && source .venv/bin/activate pip install -r requirements.txt cp .env.example .env python -c "from app.security.crypto import generate_key; print(generate_key())" alembic upgrade head uvicorn app.main:app --port 8000Run the editor
Then register, add an Anthropic credential, and build a workflow.
cd frontend npm install npm run dev
Build the first workflow
Logic-only workflows run without any key. Add an Anthropic credential when you reach for an agent.