NovalinkIn dev

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.

Ticket triageIdleDemo data
  1. 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.

  2. 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.

  3. Structured output picks the branch

    The agent returns JSON matching your schema, using the model's native structured output mode. The If node reads urgency and routes the run. The branch it did not take is marked skipped, so you can see exactly which path fired.

  4. 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.

  5. 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.

Demo workflow: Idle

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.
Logic
SetsetBuild a new JSON object from templates.
IfifBranch on an expression.
SwitchswitchMulti-way branch.
MergemergeJoin branches.
Output
OutputoutputMarks the workflow result.

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.

  1. Start Postgres

    Runs in Docker on localhost:5433.

    docker compose up -d
  2. Run the API

    Generate a Fernet key and paste it into FERNET_KEY in .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 8000
  3. Run 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.