A router project takes an incoming message and decides which of your other Tensic projects should answer it. You design the decision as a visual flow in the Router IDE: nodes for the steps, and block-based logic for the conditions. Use a router when one entry point (a widget, an app, an API client) must serve several specialised projects, for example a support agent and a knowledge-base project.
What a router project does
- A router is one of the project types in Tensic, next to agent, RAG and inference projects. It needs no model of its own: it calls other projects and returns their answer.
- The flow is drawn left to right: an input node receives the user's message, logic nodes decide the path, Call project nodes pass the message to other projects, and an Output node returns the answer.
- Conditions are built with visual logic blocks (in the style of Scratch/Blockly) instead of typed expressions, so the flow can be read and changed without writing code.
- Tensic converts the finished flow into an internal workflow language and runs it with its own interpreter. The generated code is not shown to you; you edit the flow only through the IDE.
- Routers can chain several projects, for example: translate the input, check the customer's sentiment, then hand unhappy customers to a support project.
- A router flow may loop back on itself by design. Build any loop with a clear exit condition.
Create a router project
- In the sidebar, open Projects and start a new project from scratch.
- Enter a Project name and choose the Team the project belongs to.
- Under Type, select Router ("Build the logic visually. No model needed.").
- Click Create project.
The project type is fixed once the project is created; a project cannot be converted to another type later. The router project gets the same tabs as other projects (Overview, Configuration, Integrations, Orchestration, Routines, Access, Guards, Budget & Limits, Logging), so budgets, access and logging work the same way.
Build a router flow in the Router IDE
- Open the router project and click IDE in the project header. The Router IDE opens with an input node and an Output node.
- From the Add node panel on the left, add the nodes the flow needs:
- Condition – splits the flow into a True and a False branch.
- Call project – sends the message to another Tensic project and passes on its answer.
- Set variable – stores a value for later nodes.
- Logic – a free logic block.
- Output – the answer returned to the caller.
- Connect the nodes by dragging from one node's output handle to the next node. Connect each branch of a Condition to its own Call project node, and connect those to Output.
- In each Call project node, select the target project.
- Use Tidy layout (bottom of the node panel) to rearrange the canvas.
- Click Save flow. The header shows Unsaved changes until you save.
Use Export to download the flow and Import to load one, for example to copy a router between projects or environments. Back to project returns to the project page.
Define a router condition with logic blocks
Click a Condition node to open its block editor. The editor has one slot, Take the True branch when, and a block palette with the categories tensic.ai, Logic, Math, Text, Lists and Variables.
- Drag the blocks for your test into the Take the True branch when slot. For example, to route greetings:
- From tensic.ai, take Get Input (the user's message).
- From Logic, take a comparison block and set it to =.
- From Text, take a text block and type
hello. - Assemble them as Get Input = "hello".
- Alternatively, click Generate in the condition editor and describe the test in plain English.
- Click Back to flow to return to the canvas, then Save flow.
If the test evaluates to empty, false, 0 or no, the flow takes the False branch. A condition with an empty slot therefore always takes False; the IDE warns about this with a Worth a look banner.
Generate a router flow from a description
- In the Router IDE, click Generate with AI.
- In Generate workspace with AI, choose:
- Start over – build a new flow from the description; the current flow is replaced.
- Add to it – extend the current flow.
- Describe the routing in plain English, for example:
if user input is equal to "hello" call project "test_agent" otherwise call project "test_rag". - Click Generate. The platform's system LLM builds a starter flow with the nodes, the condition blocks and the connections.
- Review each node and condition, adjust if needed, and click Save flow.
Use exact project names in the description so the generated Call project nodes point to the right projects.
Test a router flow in the Router IDE
- Save the flow first. Test runs use the saved flow, not unsaved edits.
- Type a message in Send a test message through the flow… at the top of the IDE.
- Click Run.
- Read the result:
- Answer shows what the router returns.
- A row of chips shows each node that ran, with its duration (for example user message, condition, the called project, output).
- On the canvas, the path that was taken is highlighted, and each node shows its output.
- Send different messages to check that every branch reaches the intended project.
Monitor router calls in Observability
Every router call is logged like any other project call, including the calls the router makes to other projects and the models they used.
- Open the router project and click Logs to see its requests.
- Open the called project's Logs to see how it handled the forwarded message.
- Use Observability in the sidebar for the platform-wide view of calls.
Use these logs to check which branch a message took and which model answered it.
Common questions
Does a router project need its own model?
No. A router only decides where a message goes and calls other projects; those projects use their own models. Generating a flow with Generate with AI uses the platform's system LLM.
Do I have to write code to build a router?
No. Flows are built from nodes and visual logic blocks, or generated from a plain-English description. Tensic runs the flow with its own interpreter.
Why does my router always go to the False branch?
The condition's Take the True branch when slot is probably empty, or the test never evaluates to true. Open the condition, check the blocks, save, and run a test message.
Why doesn't my test run reflect my latest change?
Test runs use the saved flow. Click Save flow before clicking Run.
Can a router flow loop?
Yes, loops are allowed by design. Give every loop a clear exit condition.
Can I copy a router flow to another project?
Yes. Use Export in the Router IDE, then Import in the other router project.
Where do I see which project answered a message?
In the router project's Logs and in Observability. In the IDE, a test run highlights the path taken.