History
    ⏎ puts it on the line · ⇧⏎ runs it · Delete or × removes it · Esc closes
    Tasks
      A line ending in & runs as a task, and so does a running command moved here with its Move to Tasks button. Tasks keep running when panes and windows close. Drag a task onto a folder, or right-click it.
      Projects

        New project

        On any line, @name is its directory: cd @null::id.

        One command a line; each runs as a task in its directory.

        @name on any line is a project's directory · project open name --start · drag onto a folder, or right-click
        Runbooks
          Yours are the .md files in your Runbooks folder: put one online and send its link. A runbook is kept under Run here once it runs; a newer version at its address shows as an update, with what changed, before you run it.
          Machines
            Connect opens the other machine's oTerminal, with its panes, tasks and files, in a new browser tab (or this one: the arrow beside it). A machine shows here once sharing is on there (ot share), and is let in once with the code it shows. It stays let in until you Disconnect, or for 90 days unused.
            Scratch Pad
            This pane snips into
              Into
              == and a note on the line adds one (==@ for another project). Snip on a command or an = answer, or select text and right-click → Snip (). Kept in the pane's folder, else in the project the pane is in, else in General.
              Files
              Folder
                Newest first. Use types a file's path into the focused pane: on its line, or into the program running there (Claude Code, say). Tick several, then Use at the top. The eye views it, the arrow opens it, the bin moves it to the Trash. Each project keeps the folder it was last on.
                HelpF1 or ⌃⇧? opens and closes this
                zoomed
                Settings

                Projects

                A project is a name for a directory (cd @name), with the commands that start it. With this on, each new task makes one: its directory, its command to start it, its folder, and a name from the task's (or its folder's). A task in a directory that has a project joins it. Renaming, moving or removing the task does the same to its project, until you change the project's name or start commands yourself. Turning it on makes projects for the tasks there are now.

                System notifications

                Updates

                Update installs the latest release, as the install command does, with the OS/A sign-in it kept: oTerminal restarts on it, every shell and task ends, and this page reloads. If the new version does not start, the one before comes back. ot update does the same from any line.

                oTerminal

                Restart starts the daemon again from its files as they are now, then this page reloads. Every shell and task ends, as on any stop; tasks can be started again from their list.

                Intellisense

                As you type, an earlier command that carries on from the line shows faint after the cursor: → or Tab takes it, ⌥→ one word of it, and Enter runs only what you typed. With nothing faint, Tab opens a list: earlier commands, then the files, branches, scripts, hosts or commands the word could be. Under the line, what the command does, the option under the cursor, or examples to click. On a line that starts with =, the questions you have asked before.

                Commands

                Auto-run runs the command an LLM answer suggests as soon as it arrives, without waiting for Enter. Debug pipes runs every line with a pipe (a | b | c) one stage at a time; ⌥Enter does it for one line. Both are in the palette (⌃⇧P) too.

                Help library

                Preview

                Memory

                A question after = can point back at earlier work: “connect to the mac mini again”, “where did I put those files I copied”. oTerminal keeps every command it runs (in ssh too, read off the remote screen), and what was settled in your questions. A small model on this computer (nimble, through Ollama) decides whether a question points back at any of it; only what it picks goes to your LLM, and the answer says so.

                Remembered from questions

                Nothing yet. After a question, a small local model (qwen3.5:2b) keeps anything lasting, such as a machine's name or where something lives.

                  Raycast Hyper key

                  Move to the pane

                  Hyper and this key moves to the pane on that side.

                  LeftRightUpDown

                  Split, with the new pane

                  Hyper and this key splits the pane, the new one on that side.

                  LeftRightUpDown

                  Click a key, then press the key you want. Esc keeps it as it was.

                  Always on

                  Programs

                  What oTerminal does for a program while it runs in a pane. A program is known by its name, wherever it is run from and whatever is in front of it: htop, sudo htop and /opt/homebrew/bin/htop are all htop. Click one to change what it is set to; a change applies to the next command run.

                    Plugins

                    What oTerminal knows of a particular program, each a folder in plugins/ or your own ~/.oterminal/plugins/. Restart oTerminal after adding or changing one.

                    Output types

                    Output is recognised by its shape, whatever printed it, and drawn with the visualiser its type is set to, beside the raw text. du -sh *, find … -exec du -h {} + | sort -rh and ssh host du -h are all sizes. The result’s Raw switch changes what is shown first, for every result of that type.

                    TypeRecognised byDrawn withShown firstActions

                    Add a type

                    For output oTerminal does not know: the pattern each of its lines matches, a regular expression with a name for each part. Amounts are drawn as bars, and need the parts (?<label>…) and (?<amount>…); an amount can have units (4.0K, 87G). Table rows get a column for each named part. Most lines must match before output counts as the type; for the programs it is printed by, one is enough.

                    What answers when a line starts with =.

                    Rates each sentence when the editor checks writing (Editing). nimble takes 26 options a question, so a check asks in rounds and is slow.

                    Restarting oTerminal…Waiting for it to come back.
                    Connect to a window

                    These oTerminal windows are still running, with no browser tab showing them.

                        ⏎ puts it on the line · ⇧⏎ runs it · Esc closes
                        Save a command

                        Mark a blank to fill in when it runs with {{name}}, or {{name:default}}: ssh {{host:beetler.local}}.