GraphComplete
Graph-In/Graph-Out
Relayer Labs · Last updated September 2, 2026
1. Complete
is a function that takes in an and generates an output graph. Similar to chat the function can use different tools, skills and interact with your computer and output artifacts on the way to giving a response. The input graph in the desktop app is a that is connected to the surrounding graph. The is the root entry point into the interactive response graph.
Complete is called on every follow up interaction on the graph and is a function that can be called by agents as well. It updates a to update the user while the agent is executing so they can understand what is being done and steer it.
const completion = complete(inputGraph);
const current = await completion.current.snapshot();
const responseGraph = await completion.result;2. Graph
When you interact with your agent it’s a decision you make given the information you have. Context is important, but too much or irrelevant information can have a negative effect on judgement. The ability to make complex decisions is a function of your reasoning and retrieval. Graph Complete uses a layered graph to balance the depth and relevance of information. The screen is a – a collection of at most eight connected and any node could have multiple the user could take to trigger tasks, answer questions from the model, or existing nodes. A response can hold as many layers as the task needs, but no single layer can outgrow what a person can take in at one decision point. The limited context for each node and layer and the high connectivity between information in the created graph allow for us to write recursive functions that scale with the complexity of work.
Node
A node is a unit of information that can have visible with nodes in a layer and could have interactive UX elements. One interaction type is navigating to either a new or a or existing nodes. The recursive layers create a and won’t contain any cycles because all nodes are authored by only one recursive layer. A node can also request information from the user using or it can prefill potential work under an .
Interaction Types
- -
- Layer of new nodes generated by this complete call; called a recursive layer
- -
- Layer of existing nodes
- -
- Another complete call with prefilled query
- -
- information the agent is requesting from the user
Node Details
is the user interface for a node that the user can look at and interact with. The agent authors HTML and CSS using a that compiles into a format that application can render.
html`
<button gc=${invokeAnalysis}>
Run deeper analysis
</button>Layer
A layer is a collection of up to eight connected nodes. The product uses layers to limit what the user sees on the screen at any time. Layers encode meaning from the nodes and edges in the layer. Edges visible to the user show up between two nodes in a layer to indicate the relationship between them. The actions of nodes in a layer represent the actions that can be made from that layer and can be also used to create a of layers.
The evaluation that will be covered in a later section grade layers using a recursive function to limit decision scope will also evaluate every corner of the graph. Visible edges are the first shipped visual primitive for a layer, but the future vision is to use code to assemble a layer into an application that can be used
Capacity
A layer contains a finite number of nodes to control the amount of context shown to the user on any screen. By arranging the information in a layered graph, searching for information in the response is rather than linear because nodes can expand for more detail rather than scanning the full chat response. This artificial constraint – introduced to make each screen in the interface independently understandable forces the model to create semantic groups of information that together are the output for the task. Vector and graph databases have been in use for over a decade for search systems, but they are not viable for a user interface because of the high connectivity between nodes, massive size of the graph and the individual records are not meant for humans to understand. The limited layer size allows the recursive functions which govern the graph creation and are used to evaluate a single collection of nodes in a layer and make decisions about that layer rather than the whole graph. The layer size is a tunable number in complete(inputGraph) which will allow it to adapt to user preference.
Search
Complete can execute shaped graph queries to search through the graph and find relevant information from this or workspace. Layers represent a super graph that can also be searched through. The default result limit mirrors the layer size at 5 to 8 rows in order to not pollute the agent context and force specific queries.
3. Prime Agent
Prime agent is a “Self-Improving RLM Agent” that is one of the options in the Relayer app. A treats context as a variable and subagent delegation as a function. Prime Agent will write the graph into its context using code provided by the graph-complete library and write recursive functions to create the graph and solve the task.
We hypothesize that a graph is a better interface for an RLM and that an RLM is better at creating the graph than the claude and codex harness. To test this we create graph complete harnesses for claude, codex and prime agent to compare against each other.
4. Judge
The we used to evaluate the graphs is a recursive function simulating a user who has a rubric to fill out about the graph. At each layer and node the judge needs to grade the node by grading its actions and if it's an expand layer go in and grade that layer. The graph gets evaluated bottom up as a result. The judge has 2 separate grades: 1. Task completeness and 2. Graph quality. This tries to show that the performance is comparable to using chat while providing a better interface to understand and interact with the model.
5. Follow Up Work
- Product and algorithm stability / quality improvements
- style graph in -> list (graph) retrieval
- Further evals and benchmark
- Achieve “” product goal with time to first graph being below 30 seconds.