Chapter 11
Let a model read, and an agent work
Orbital can ask a model about the node you are on: who it is for, what type it is, what an image says, what a Dutch title means. It can also hand the node to a Codex agent and show you, on the row, how that work is going.
Connect a model first
Everything in the first half of this chapter asks a model, through your ChatGPT account. Signing in once turns all of it on: translation, Discuss with, Auto-pick type, Process image and the icons for your types. The sign-in stays on this Mac.
Sign in with ChatGPT
Open ⌘K and run Sign in with ChatGPT (under Settings). The ChatGPT account page shows a short code: enter it in the browser page that opens. Copy code puts it on the clipboard, and Cancel ChatGPT sign-in stops waiting.
Once you are in, the same row reads Sign out of ChatGPT, and its page says who you are signed in as. The first sign-in on a Mac without Codex may say Getting ChatGPT sign-in ready… while it fetches what it needs, once.
What each part needs
| Feature | Needs |
|---|---|
| The name Discuss with … suggests, Auto-pick type, Process image, Auto-translate …, Translate into … | Sign in with ChatGPT, or an OpenAI API key you saved before |
| Icons for your types, picked for you | Sign in with ChatGPT, or an OpenAI API key you saved before |
| Assign to Agent with Tana | Nothing: Tana is always there |
| Assign to Agent, Open in … and @ in a chat, with Codex or Claude | The Codex app or CLI, or Claude Code, on this Mac |
| Assign to Agent with your personal agent | Orbital and Tana added to your agent (your OpenAI Dot, or any agent that speaks MCP) as custom MCP servers, and the agent linked once (below) |
Ask the model about a node
Two rows under Current node in ⌘K use the model to fill in what a document is about. Both show the sparkle while the model reads, and both leave the choice to you.
Discuss with …
For a document you want to talk through with someone. Run Discuss with … and type who: one colleague, two people, or a team. ↩ gives the document the Discussion Task type and writes your words into its Discuss with field. Names of people in your workspace become links to them.
While the page is open the model reads the title. After Reading the title… its guess shows as a second row, marked From the title. Your own words always stay on the first row, so ↩ sends what you typed and ↓ ↩ takes the guess.
Auto-pick type
Run Auto-pick type to let the model pick from the same types Set type offers. It reads the document and each type's description, then answers with the odds for every option, No type among them.
- At 80% or more it sets the type at once and says so: “Type set to Decision Record (91%)”.
- Below that it lists every option with its odds, most likely first, and you pick. The current type has a tick.
- It never takes a type off by itself, even when No type comes first.
Turn an image into a task or a note
A screenshot of a message, a photo of a whiteboard, a receipt: the model reads it and decides whether it is a task or a note. Orbital makes that node with a title and the lines worth keeping, puts the image under them and opens it. With Auto-translate on, it writes in your language.
Drop it on Create new
Drag an image file from the Finder onto the round Create new button in the window's bottom-right corner. It turns into Process image. Let go, and it reads Processing image … until the new node opens.
Process image from clipboard
Copy an image, from a screenshot tool or the Finder, then open ⌘K. Process image from clipboard is waiting under Image. The Create new … page leads with it too, and so does Quick Add Task (⇧⌘Space), where ↩ with no title runs it.
Process image
With the caret or the selection on an image in an outline, ⌘K offers Process image for that image.
Read notes in your language
When a colleague writes in Dutch, you can read the title in English without anyone changing it. Translation happens on your screen only. Tana keeps the words as they were written.
Turn it on: Auto-translate …
Run Auto-translate … (under Settings) and pick a language: English, Dutch, German, French or Spanish. Off turns it off. The choice follows you to your other Macs and applies at once, in every pane.
What you see
Only titles are translated: the title of the page you are on, and a document's title as a row in a list. The lines inside a document stay as written. A translated page title has a grey line under it with the sparkle and Translated from Dutch · Show original, which switches back and forth. While the model works, the line says Translating…. A title seen before comes back at once, even after a restart.
In a list, a translated row says Translated from Dutch as the first fact of its grey line. Click those words to switch that row.
Rows the app writes itself translate the node they name and keep their own sentence: a meeting on the Timeline, “Priya completed …”, a notification. Push notifications are translated before they show.
Editing a translated title
Put the caret in a translated title and it shows its own words, so you edit and save the original. The line under it reads Original, in Dutch · Show translation while you type. Leave, and the translation comes back, asked again if you changed the words. Read-only rows, like the Timeline, keep their translation when you click, so the first click opens them.
Keep a translation for good
Replace with translation (Current node, hinted From Dutch) writes the English you see as the document's title in Tana.
Translate into … writes a translation into the selection, or the row you are on, or the page. It uses your Auto-translate language, English while that is off. Rows already in that language are left alone, and a note says how many it changed. It only offers plain text you may edit, because a link or a mark would not survive.
Choose your agents
An agent does work: it drafts, researches, files things in Tana. Orbital knows three of its own, and your personal agent, like your OpenAI Dot, once you link it (below). Tana is always there: a task for Tana is a new Tana chat with the node attached, answered by Tana's own AI. Codex and Claude run on this Mac, through the Codex app or CLI and through Claude Code, each with its own sign-in.
Run Choose agents … to see them in one list. One that is not installed is greyed, with what to install. ↩ on an installed agent switches it on or off; every agent that is on brings its own rows to ⌘K and to @ in a chat. An agent you linked is in the same list under its own name, and its last row is Connect your personal agent ….
Set default agent … in ⌘K, its hint the current one, lists the agents that are on: ↩ makes one the agent Assign to Agent starts on. Tana is the default until you choose another, and a Dot becomes it the moment you link it. Both choices follow you to your other Macs.
Connect your personal agent
Your own agent can take tasks from Orbital: your Dot, OpenAI's always-on assistant in ChatGPT, or any other agent that can add MCP servers and hear MCP events. It needs two plugins, Orbital's MCP server at orbital.md/mcp and Tana's own, and a code from Orbital that links it. From then on it is one of your agents, under the name it gives itself, and each node you assign it wakes it with an event.
Run Connect your personal agent … (under Settings, and last in Choose agents …). After Getting a code… the page has two parts.
Add both plugins. Add Orbital and Tana to your agent as custom MCP servers, a name and a URL each: ↩ on a row copies its address. How to add them … opens the steps.
Then ask your agent to link. Copy the instructions copies a few lines with a code that works once, for fifteen minutes; paste them in your agent's chat. They ask it to link under its own name and to subscribe to Orbital's events. While the page says Waiting for your agent to use the code… with the time left, your agent does both, and the palette closes on a note naming it, like Linked Echo · ChatGPT. It is your default agent from then on.
You can close the page and paste the instructions later: the code keeps working until it runs out, and opening the page again shows that same code. Cancel stops it at once.
How to add them
Your OpenAI Dot: Open ChatGPT plugins opens chatgpt.com/plugins. There choose Add, then Create custom MCP server, once for Orbital and once for Tana, signing in to Tana when it asks; the rest of ChatGPT's form stays as it is. Then send your Dot the instructions.
Any other agent: add the same two MCP servers wherever it keeps them, then send it the instructions. It needs support for MCP events: that is how it hears about the tasks you hand it.
esc goes back to the page, its code still waiting.
Your linked agent
Your agent is in Choose agents … under its own name, with whether it is on, the app it runs in and when it last checked in. ↩ on it opens its page: Rename …, Switch off (it stays linked, but leaves Assign to Agent) and Unlink, which also unassigns the nodes it had.
Assign a node to it as to any agent. Orbital sends it one event: which node, what you asked, and how to handle it. Your agent reads the node in Tana with its own Tana access, does the work there, and keeps the node's last line saying how it is going (the badge).
On your phone it works the same way (Chapter 16): Settings → Agents → Connect your personal agent is this page, and your agent is at the top of Assign to … in a long press on a task or a note. An agent linked on the phone is linked on your Mac too, and the other way round.
Hand a node to an agent
Assign to Agent gives the node you are on to a new task, with the node as its context. You only say what to do with it. Its hint says which agent it goes to. On a node an agent already has, it says it replaces what that agent was asked: assigning again sends your new request in place of the old one.
Assign to Agent
Run Assign to Agent. The palette turns into a few lines to write in: ↩ adds a line, ⌘↩ assigns, esc cancels and writes nothing. With more than one agent on, they are listed under the prompt, the default ticked; ⇥ moves between the prompt and that list. The agent's own default model does the work.
Each agent that is on also has a row of its own, like Assign to Codex … or Assign to Echo …, its hint Default on the default: it opens the same prompt with that agent already chosen, so no list under it.
- The prompt What the agent should do with this node.
- Assign to Tana Sends it, the same as ⌘↩, and names the agent that will take it.
- Agent The agents that are on, the default ticked. Choose another for this one task.
The node now carries the agent badge. Under Group by Responsibility it belongs in the Agent section, but it stays where it is until you press Clean up, so nothing jumps under your pointer. Dropping a task into the Agent section opens the same prompt.
Unassign from Agent takes the node back at once, and removes what the agent left at the end of the node: the agent's context and its status line. The task itself stays where it ran: a Tana chat, a Codex task, a Claude session, your Dot's chat.
Read the agent badge
The robot at the end of a row says what its agent's task is doing. Orbital asks every 30 seconds while anything is assigned. The colour and the tooltip say the same thing, so you never need colour alone.
- Agent pending Grey. Assigned, and no task has started yet.
- Agent working Blue, with a sheen crossing it. The task is running; only this state moves.
- Agent waiting for you Blue and still. The task wants an approval or an answer from you.
- Agent completed Green. The task finished its last turn.
- Agent needs attention Red. The task failed or cannot be reached; assign again to retry.
- Agent on another Mac Grey. A Claude task lives on the Mac that started it: open it there. Assigning the node here starts a new one on this Mac.
- A completed task The badge drops to a grey outline: a record that there was a task.
A node handed to your Dot follows its own last line, Agent status: …. Orbital writes Agent status: Assigned as it sends the event, and the badge stays grey until your Dot picks the task up and changes the line to Working, so blue means it really started; then Completed turns it green, or Failed red. Whatever your Dot writes goes above that line, which stays the node's last. It is ordinary text, so anyone who opens the node in Tana sees it too, and the task's own status stays yours: Agent completed means your turn to look, not done.
Click a badge, or press ↩ on it, to open its task: a Tana chat opens right here, a Codex task in Codex, a Claude session in Terminal. Your Dot's badge only shows how it is going: its work is in the node itself. On the Timeline, a task row carries the badge right after its title.
Go to a task, link one, or start a fresh one
Every agent that is on brings the rows it can do. Codex and Claude bring all three; Tana, whose tasks are chats here, brings only Go to Tana task; your Dot, whose work is in the node, brings none. Type codex in ⌘K to see Codex's:
- Go to Codex task opens the task this node is assigned to. Go to Claude task opens the session in Terminal, and Go to Tana task opens the chat here.
- Link Codex task … links a task that already exists. Link Claude task … takes a session id.
- Open in Codex starts a new Codex task with this node's link and tracks nothing: no badge, no state. Open in Claude does the same in Terminal.
Link Codex task …
In Codex, use Copy link on the task, then paste the codex://threads/… link (or the bare id) here. Link to this Codex task links it, and the badge follows that task from then on.
Ask @Codex or @Claude in a chat, privately
In a Tana chat, type @ in the message box and pick Codex (after Tana, hinted “Ask Codex · the answer stays on this device”), or Claude when it is on. Your question goes to a task on this Mac with the whole conversation as context. Nothing of it reaches Tana, so nobody else in the chat sees it.
The question shows on your side in a grey bubble, with a crossed cloud in its corner: only visible to you, on this device. Dots show while Codex works, then its answer appears on the other side in grey text under Codex.
- Add to message on the answer's name line, ↩ on a selected answer, or ⌘K Add Codex’s answer to message puts the answer in the message box. Sent from there, it is your message: the only way it reaches Tana.
- Click the Codex line over an answer, or run Open Codex task, to open the task in Codex.
- Select the question or answer (↑ from the start of the message box) and press ⇧⌘⌫, or run Delete message, to forget both from this Mac. The task stays in Codex.
- Questions and answers are kept on this Mac, so they are still there after a restart. Your other Macs do not see them.
Keys in this chapter
| Action | Keys |
|---|---|
| Open Cmd+K, where every row in this chapter lives | ⌘K |
| Take the model's suggestion on Discuss with … | ↓ ↩ |
| Quick Add Task: ↩ with no title processes the clipboard image | ⇧⌘Space |
| Assign to Agent: send the prompt | ⌘↩ |
| Assign to Agent: a new line in the prompt | ↩ |
| Assign to Agent: to the list of agents, and back | ⇥ |
| Assign to Agent: cancel, writing nothing | esc |
| In a chat: select the newest message from the message box | ↑ |
| In a chat: delete the selected message, or a Codex question and its answer | ⇧⌘⌫ |