Troubleshooting
Installing and starting
The messages you meet before the board ever opens, and what each one means.
The setup line printed nothing, or a curl error
The one line from the home page is:
/bin/bash -c "$(curl -fsSL https://docs.torta.app/install.sh)"
If the download fails, curl prints a short error and nothing else runs,
because there was nothing to run. Nothing on your computer was changed.
- “Could not resolve host” means this computer is not online, or a company network is blocking it. Reconnect and paste the line again.
- Nothing at all happened: the line was pasted without its last character.
Copy it again, and check it ends with
)". - “curl: command not found”: rare. Install curl, or follow the by-hand steps instead.
To read the script before running it, open docs.torta.app/install.sh in a browser.
The setup asked for my password
Only one step asks: installing Node on a Mac that has no Homebrew. Node goes into a folder shared by everyone on the computer, so macOS asks you to confirm you are allowed to put it there. It is your normal login password.
Nothing appears on screen as you type it. No dots, no stars, no moving cursor. That is how a terminal takes a password. Type it and press Enter.
The setup never asks for a password for anything else. Claude Code and torta
install wherever npm already puts things, as long as that is a folder you can
write to. When it is not, the setup switches to ~/.torta/npm, which you own,
rather than asking you for a password.
torta: command not found, right after the setup finished
This only happens when the setup had to move your install folder, which it
does only when the folder npm was using is not one you can write to. In that
case it appended one line to your ~/.zshrc, or ~/.bashrc on bash:
export PATH="$HOME/.torta/npm/bin:$PATH"
A terminal window reads that file when it opens, and never again. The window you ran the setup in was opened before the line existed, so it does not know.
Close that window, open a new one, and the command is there. The setup itself
does not need this, which is why it can still reach torta start on the first
run.
What the setup check reports
To see what is installed without changing anything:
/bin/bash -c "$(curl -fsSL https://docs.torta.app/install.sh)" -- --check
It prints one row each and then stops:
- Computer: the system and chip, and whether the setup supports it.
- Node and npm: here with a version, too old, or not here yet.
- Tools install into: where a global install lands now, and whether it is a folder you can write to. Writable means the setup leaves it alone. Not writable is the case that causes permission errors, so the setup switches.
- Your own folder: whether
~/.torta/npmexists, and whether it is being used at all. On most machines it is never needed. - PATH line: whether that line is in your shell profile, and whether it is needed.
- Claude Code: not here, here but not signed in, or here and signed in.
- torta: installed globally, or fetched by
npxeach time it starts.
It changes nothing, makes no folder and installs nothing, so it is safe to run whenever something looks wrong.
command not found: npm
Node is not installed, or the terminal window was already open before you installed it.
Close the terminal window, open a new one, and try again. If it still says this, install Node from nodejs.org and take the big green download button.
permission denied, or EACCES, on a global install
Your computer wants permission to install into a shared folder. Install with
sudo:
sudo npm install -g @anthropic-ai/claude-code
Then run claude on its own to sign in. The same applies to
sudo npm install -g torta-ai.
To avoid sudo altogether:
npx -y torta-ai start
Claude Code is not on this machine’s PATH
Install it:
npm install -g @anthropic-ai/claude-code
or use the native installer from the Claude Code page.
Claude Code is installed, but nobody is signed in
Run claude in a terminal and sign in. Type /exit to leave the chat
afterwards.
This machine cannot say whether it is signed in
The probe checks an API key in the environment, a credentials file and a
keychain entry, and none could answer. Torta carries on; if a session then
fails to start, run claude once and sign in.
A red wall of text
Copy the last few lines and ask about them.
torta: has no torta.json
Every command except start, init and status refuses this way when the
directory is not a workspace. Point it at the folder the wizard created:
torta pending ~/Documents/projects/my-project
torta start opens the wizard instead of refusing, looking in the directory
you named and one level below it, never deeper.
torta: does not exist
Torta creates the workspace folder itself, but not the folders above it.
torta: unknown flag –thing
See the CLI reference for the flags each command takes.
torta init also refuses a platform flag it does not know, by name.
torta: –port takes a port number, e.g. –port 5599
The port has to be a whole number from 0 to 65535.
port 5599 is already in use
Another board is probably running. Stop it, or pass --port <n>.
torta: has no workflow installed
The workspace has no generators for sync, verify and doctor to run. It
is probably not a torta workspace, or was only partly copied.
torta adopt refuses the folder you pointed it at
torta adopt takes over projects you already have, and it checks the folder
before it writes or moves anything. There is no stack it refuses; what it
refuses is a folder it cannot safely take over. Each refusal names what it
found:
- nothing to adopt. There is no project inside the folder you named, within three folders of it.
- too large to read. The walk stopped early, so torta cannot describe what is in there. Point it at one project instead.
- nobody could be worked out for anything in there. The reading came back
with nothing usable. Say who owns each project with
--as <owner>, or adopt them one at a time. - two projects in one repository. An owner keeps one project per repository. Give one of them another owner, or leave it where it is.
- already a torta workspace, or a folder inside one. There is nothing left to adopt.
- your home folder, or the root of the disk. Adopting either would move everything you own into one project.
Nothing is written by a refusal. torta adopt <dir> --dry-run prints the whole
plan without touching anything.
torta adopt moved my project and I want it back
torta adopt <dir> --undo
That is the command ADOPTED.md prints at the bottom of the folder torta
adopted. It removes what torta wrote, puts back anything it moved aside, and
reverses every move through the journal that recorded it. It refuses, naming
the file, rather than remove something of torta’s you have edited since: move
that file aside and ask again.
An adoption stopped part way
torta adopt <dir> --resume
Every rename is written down before it happens, so a move that was interrupted
is finished from its own record rather than guessed at. Once it has finished,
--undo still puts the folder back.
torta adopt started a Claude Code session
It did, and that is how it works now. Adoption reads the folder you named with one read-only Claude Code session on your own login, to answer the one question nothing on disk can: which agent owns each project in there. It reads files and runs nothing, no writes, no commands, no network, and both doors say it is happening while it works.
It is not asked for because torta refuses to run at all without Claude Code
installed and signed in, so a second permission for one read-only session is
friction for something you agreed to by installing it. Saying who owns every
project yourself, with --as <owner> once per project, skips the reading
entirely: there is nothing left to read for.
torta adopt left one of my folders where it was
The reading would not place it, so torta did not guess. An unplaced project is
never moved, nothing is written inside it, and ADOPTED.md names it. Adopt it
on its own once you have decided who owns it, or say so up front:
torta adopt <dir> --as frontend --as infra