Docs · The guide
How to use Technically Not.
Install it and run the coding agents you already use side by side. This page covers every part of the app that works today, in plain words, and what to do when something goes wrong.
Install and update
Install on Windows#
- Download the installer. Get it on the Download page. It is free and needs no account.
- Run it. The installer isn't code-signed yet, so Windows SmartScreen may warn you. Select More info, then Run anyway.
- Open a project folder. Everything reads and writes on your own PC.
- Press New thread and pick an agent CLI. If it isn't signed in yet, its sign-in runs first.
On Linux or a Mac? See Install on Linux or Install on Mac.
Install on Linux#
Technically Not runs on Linux as an AppImage or a .deb, for x64 and arm64. Download it from the Download page, the same as on Windows.
- .deb (Ubuntu, Debian and relatives): install the file you downloaded, for example
sudo apt install ./TechnicallyNot.ai-*.deb, then start Technically Not from your app menu. - AppImage (most other distributions): make it runnable with
chmod +x TechnicallyNot.ai-*.AppImage, then open it. It needslibfuse2(libfuse2t64on Ubuntu 24.04). - Open a project folder and press New thread, as in the Windows steps above.
Your shell
The terminals your agents run in open your own login shell. bash and zsh work fully; in fish the
tnaicommands may not be found first.Agent CLIs are found
CLIs installed in
~/.local/bin, through nvm or in~/.npm-globalare found even when you start the app from the menu.Updates
Installing a .deb, including a newer one, may ask for your password, since system packages need it.
Install on Mac#
Technically Not runs on macOS as a .dmg: arm64 for Apple Silicon (M1 and newer), x64 for Intel. Download it from the Download page.
- Open the .dmg and drag Technically Not into Applications.
- Let macOS open it. The app isn't signed by Apple yet, so macOS stops it the first time. Run the line below once in Terminal, or start the app once, close the warning, then open System Settings › Privacy & Security and select Open Anyway.
- Open a project folder and press New thread, as in the Windows steps above.
xattr -dr com.apple.quarantine /Applications/TechnicallyNot.ai.appNo sign-in, no plans#
Technically Not is free and open source. It opens without a Technically Not account, and there is no plan to buy.
Free
Nothing to buy. Every feature is in the app for everyone.
Any number of computers
Install it on as many computers as you like. Nothing counts them.
No server of ours needed
The app does not ask our server whether it may run. Your agents still need the internet to reach their own providers.
Settings and updates#
Settings has Accounts, Usage, Agents, General, Keyboard, Voice and Updates. The app has two looks, Dark and Light, and General has the accent color.
Your agents
Agent CLIs#
Technically Not runs the agent CLIs installed on your PC. It finds them on your PATH, shows each version and which account is signed in (Settings › Accounts).
| CLI | Support |
|---|---|
| Claude Code | Fullest: live steps, task clock and tokens, results, sub-agent rows, several accounts, API-key accounts |
| Codex | Fullest: task clock and results from its own records, several accounts, API-key accounts |
| OpenCode | Fewer features. Can lead sub-agents. Runs on its free built-in models without a provider |
| Cursor Agent | Fewer features. Works as a sub-agent, can't lead. One sign-in per PC |
| GitHub Copilot CLI | Basic. Its thread is its CLI screen, with its own sign-in and model list |
| Gemini CLI, Droid | Paused: not fully supported yet. Detected as "Installed", but no new connection starts on them |
| Antigravity CLI | Paused: not fully supported yet. No new connection starts on it |
Signing in a CLI: the sign-in dialog runs the CLI's own login in a real terminal, and the provider's page opens in your browser. Technically Not never stores your passwords or sign-in tokens.
CLI updates: when a newer Claude Code, Codex, Gemini CLI, OpenCode, GitHub Copilot or Droid is out, the bell says so. Its Update button runs the update and resumes the agents it had to pause.
Accounts and usage limits#
Several accounts
Claude Code and Codex can hold any number of accounts, each with its own settings folder. Pick one with Use for new sessions; its plan (Pro, Max, Plus…) shows as a tag.
API-key accounts
On the Claude Code and Codex cards, + Add an API key · pay per use runs that CLI on your own provider key. The key is encrypted on your computer by the system's secure store and never sent to our server. Only that account's agents get it, and after saving you only see its last 4 characters.
One account only
Cursor Agent keeps one sign-in per computer (Switch account signs out and in). OpenCode, Gemini CLI and Droid use one account.
When an agent hits its usage limit#
A card in the agent's thread shows the limit, and its row in the thread list says "Usage limit reached". The card offers Resume now on another signed-in account when one is free, or Resume at reset with the time. Switching restarts the agent on that account and resumes its conversation when the CLI can; it tells you whether it resumed or started fresh.
Settings › Usage shows each plan window's % used and reset time for Claude Code and Codex, plus your token use by day, model and project.
Agents working together#
Every agent gets the tnai command, so agents in the same open project can find and talk to each other. One asks for a review, another finds the bug, a third fixes it, with no copy-pasting.
| Command | What it does |
|---|---|
tnai agents | Lists the project's agents with their status. |
tnai intervene NAME message | Interrupts another agent with a message that cannot wait. An idle agent just gets the message. |
tnai send NAME message | Types a message into another agent. A closed agent is brought back with its conversation first. |
tnai read NAME | Shows another agent's recent output. |
tnai context | What other agents finished, known issues and next steps. |
tnai lock / unlock / locks | File locks (below). |
tnai preview URL | Shows a local page in Live preview. |
The Command menu row of the three-dots menu lists these commands too; picking one puts it in the composer.
Sub-agents#
A lead agent can hand parts of a task to sub-agents. Leads can be Claude Code, Codex or OpenCode; sub-agents can also be Cursor Agent. Each sub-agent runs in a real terminal of its own, shows as a card in its lead's thread and as a small row under it in the thread list, and its final answer goes back to the lead. Limits live in Settings › Agents › Delegation limits.
File locks#
Claude Code
Takes the lock by itself. An edit of a file another agent holds is refused, with the holder's name and what to do.
Other CLIs
Are told to run
tnai lock FILEbefore editing. That works when the agent follows the instruction.Ends by itself
On
tnai unlock, when the holder's thread closes, or 20 minutes after its last edit of that file.
Project context#
Every finished task is saved as a short entry (what it did, found, changed, what remains) that other agents in the project can read. Decisions waiting for you show on a card above the composer and in the bell; any item can go to the composer. The bell collects finished results and next steps.
The workspace
Threads#
The app opens on the Threads page. The list on the left has one thread for each running agent, with a live status: agents that need you come first, then a group for each open project, with a lead's sub-agents as small rows under it. New thread at the top starts an agent. A press on a thread opens it in the middle. For Claude Code, Codex, OpenCode and Cursor Agent the open thread shows the agent's work as a conversation: your prompts, its words, what it read, edited and ran, and the files a task changed. The other agent programs keep no record the app can read, so their thread opens on its CLI screen. Every other page opens from the three-dots button at the top right. There is no page of terminals and no left navigation.
Status colors#
- WorkingGreen, pulsing. The agent is busy.
- Needs youAmber, pulsing. A permission, a question or a decision waits for you.
- Waiting on agentsPurple. It waits for its own sub-agents.
- ErrorRed. The process stopped with an error.
- Idle or exitedGray. Nothing running.
One place to type
The prompt box under the open thread sends your prompt to that agent.
A lead and its helpers
When an agent starts sub-agents, they appear as cards in the lead's thread, and a helper's own conversation opens beside it.
Two looks
A neutral Dark and an off-white Light, with a choice of accent color.
A thread's own menu#
The "..." button in the open thread's top row has Rename, Team (group agents you started separately, so they share file locks), CLI screen, Stop or Start, and Close thread, which asks first while the agent is running. A closed thread's conversation stays in Past conversations.
The side column#
The button at the end of the thread's top row shows and hides a column beside the thread. It has up to four tabs.
Files
Your project's folders and files, with a search over the whole project. See Files.
Helpers
There while the open thread has helpers: each helper's own conversation, beside its lead.
Details
The agent's running time, its queued prompts, what it is doing now, its sub-agents, recent activity, files, skills and setup.
Terminal
Your terminal: one plain terminal for your own commands. See The CLI screen and Your terminal.
Past conversations#
Past conversations, in the thread's top row and at the foot of the thread list, lists the open project's earlier conversations, newest first. Read one, or continue it with Resume.
All threads#
A page of the three-dots menu. It shows several of the project's threads side by side as conversations, next to Live preview, with the prompt box under them and New thread in its top row. The thread list stays beside it, as on every page.
The composer#
The prompt box at the bottom of the window. Enter sends your text to an agent:
- The agent of the open thread. The prompt box under an open thread sends to that agent.
- Otherwise the only running agent. With several running and none picked, it asks.
- With nothing running, it starts a new agent for the task, usually Claude Code.
The hint row under the box always shows where Enter will go.
+ New agent
Toggle it, or press Ctrl+Enter, to give the task to a brand-new agent in a new thread.
Agent · Model · Effort
Pick which agent, model and effort level. For a running agent this types the CLI's own
/modelor/effort.@mentions
Type
@to send to a specific running agent, or to point at a file or folder.Attachments
Upload, paste or drop up to 8 files, 20 MB each. Long pastes fold into a short token.
Voice prompts#
- Hold your voice key (Ctrl+Space by default) or the mic button, and talk.
- Let go. Your words appear at the cursor: in the composer, in the terminal you're typing in, or in any other text box.
- Send it when you're ready; Esc cancels.
On your PC
Speech is transcribed on your computer and the audio never leaves it. The default speech model downloads once, about 150 MB.
Unlimited
No minutes, word caps or credits. Up to 5 minutes per hold, as many holds as you like. English by default; Auto-detect and other languages are in Settings › Voice (voice commands stay English).
Any key
Change the key in Settings › Keyboard. Say "new agent, …" to hand a task to a fresh agent; on pages without the composer, that sends it right away.
The CLI screen and Your terminal#
Every agent runs in a real terminal: the CLI itself, in your project folder. You see it as a thread, and the terminal stays underneath. Two places show a terminal when you need one.
CLI screen
In a thread's "..." menu. It shows the tool's own terminal for that thread, the same session, for what only the tool can do: signing in, or its own menus. Back to the conversation returns.
Your terminal
The Terminal tab of the side column, also in the three-dots menu. One plain terminal per project for your own commands, in the project folder. On Windows it is PowerShell unless you pick another shell found on your computer. It is not a thread, and the prompt box never sends to it.
Working in one
A− / A+ change the font. Ctrl+C with a selection copies, Ctrl+V pastes, right-click does either.
After a restart#
If agents were running when you closed the app, it asks once: Start clean (no agents) or Restore agents and conversations. A restored agent waits for you to start it; nothing restarts on its own. Claude Code and Codex pick up their conversations again.
Files#
Files tab
The Files tab of a thread's side column lists your project's folders and files, and its search covers the whole project.
File viewer
A press on a file opens a view-only window with syntax colors. Technically Not does not edit your files; your agents do.
Own worktree
An agent can work on its own git branch in its own folder. Merge or discard its work from its ⎇ row in the thread's Details tab. There is no diff or commit page; agents run git for you.
Live preview#
The Live preview page runs your project's dev script (from package.json) with Start and Stop, or shows an address you type in. Only localhost addresses are shown. Desktop, Tablet and Phone views use real sizes, alone or all three side by side, and Phone and Tablet act like touch devices. Click to ask puts the part of the page you click into your prompt, and a strip shows the page's errors with Ask agent to fix. The All threads page shows the same preview beside several threads.
tnai preview http://localhost:5173 desktopKeyboard shortcuts#
| Keys | What it does |
|---|---|
| ? or Ctrl+/ | List every shortcut |
| Ctrl+K | Search of the three-dots menu: pages and settings; its Command menu row has files, actions and tnai commands |
| Ctrl+1, 5, 6, 7 | Threads, All threads, Skills, Settings |
| Ctrl+B | Show or hide the thread list |
| Ctrl+Enter | Turn + New agent on or off: the next prompt starts a fresh agent |
| Hold Ctrl+Space | Voice prompt (changeable); Esc cancels |
| Ctrl+Shift+J | Jump to the agent that has needed you longest |
| Ctrl+Shift+Alt+S | Snapshot: drag over the screen to copy a picture, then paste it into a prompt or terminal |
Several computers
Devices#
The Devices page, in the three-dots menu, connects your computers so each one shows when an agent on another needs you. The other computer's agents of the open project stand in the thread list under its name, and a press on one opens it as a thread. It is off until you turn it on. It works through a relay you run yourself: choose Use my own relay, put the small relay on your own Cloudflare account, and enter its address and secret on each computer. Then pair two computers by typing a six-digit code on each. Messages are sealed on your computers: the relay passes them on and cannot read them. It stores no message; it remembers only which of your devices connected and when. We run no relay and see none of it. First release: you cannot answer another computer's agent from here yet.
Help and your data
Troubleshooting#
Windows warns about the installer#
It isn't code-signed yet. Select More info, then Run anyway.
My agent CLI isn't listed#
Install it natively on Windows (not inside WSL) and check it runs in a new PowerShell window, for example with claude --version. Then open Settings › Accounts and choose Check again.
An agent says "Needs you"#
It's stopped on a permission, a question or a decision. Answer it on the card above the prompt box of its thread, or on the thread's CLI screen. Ctrl+Shift+J takes you there.
An agent is heading the wrong way#
Open its thread and type the correction in the prompt box, or choose Stop in the thread's "..." menu.
An agent hit its usage limit#
Switch it to another account from the card in its thread, or let auto-continue pick up after the reset. See Accounts and usage limits.
The app is locked#
Current versions have no lock: Technically Not is free and needs no plan. If yours shows one, it is an older version. Install the newest from the Download page.
Linux: the AppImage won't start#
Install libfuse2 (libfuse2t64 on Ubuntu 24.04), or use the .deb.
Agents don't work in the browser#
That's expected: agents, threads and Live preview need the desktop app. The browser version is for looking around.
Your data#
Your code stays on your PC
Agents run your own CLIs locally. The app needs no account with us.
Voice stays on your PC
Speech is transcribed on your computer, and recordings aren't kept.