Vocabulary

tide works in parallel and names each piece after the sea. The model and the interface use the same words.

≋wavea subagent
Another conversation, with its own context and tools, that hands back only its conclusion. Runs in the foreground or background, on the model and thinking level you ask for: “use waves with haiku”.
▸currenta background process
A dev server, a build or the tests running while the session goes on. Ctrl+B sends the running command there. When it ends, the result reaches the model.
∿surfweb search
Searches with Exa, no key needed. web_fetch reads HTML pages and PDFs and returns clean markdown.
›steer, follow-uptalking to a run
A steer enters the running run at its next step: Enter while it works. A follow-up waits for it to end: Alt+Enter. Reports from currents and waves arrive as follow-ups.
∩tsunamia plan of waves
Describe the job; tide interviews you, proposes a plan, and runs its tasks as cheap waves by role, inside caps on rounds, cost and parallel agents.
∴recap, bottlecoming back
A recap says where a session stands after a break. A bottle is a message the agent sends itself for later: “in 2 h see if the deploy is up”.

What it does

Four features set tide apart. The rest is what any coding agent needs.

Sessions that survive a crash

Each session is a SQLite file. Kill the terminal mid-run and tide picks the run back up when it opens. Come back after a break and a short recap says where things stand. tide -c continues, tide -r picks one.

/flood, until it's done

Give it a goal and tide works run after run. After each one, an Opus judge reviews the work and says what is missing, until the goal is met or a cap on runs or cost is hit.

A safety-net for destructive commands

Everything runs without asking, except what is destructive or public: recursive deletes, rewriting git history, DROP, and anything that writes to Slack. Those wait for your answer, with a one-sentence summary and risk chips, and in print mode they are blocked.

An Android app

On the phone, tide serve runs in Termux and the Tide app drives it: the same sessions, waves and currents, plus routines on a schedule. Each session in the sidebar wears the Tide face and a state word in its own colour: working, Needs you, done, Limited. The chat is near-black down to the bottom edge, and a request is the one card in it. The microphone transcribes on the phone itself, Portuguese and English in one sentence.

A terminal on another machine that runs /remote shows up under Remote over Tailscale, grouped by machine and project; the row menu can rename, pin, disconnect or delete it. The screens below are the app itself, in dark, on an emulator shaped like the Galaxy Z Fold's cover screen, with a scripted demo model. The Remote list is not in a picture yet.

The Tide sidebar in dark: the Tide row on top, four sessions each with a face, one marked working in blue and one marked Needs you in amber with the summary Deletes the build folder, then New project, Remote and Routines.
Sidebar. Each state word takes its colour.
A Tide chat in dark: a near-black canvas that runs to the bottom edge with the composer inside it, grouped tool lines, the reply, and an amber request card that asks to allow rm -rf build with the chips Deletes files and Irreversible and the buttons Allow, This session, Edit and Deny.
Chat. Black to the bottom; the request is the only card.
A Tide chat in dark after a run: a recap in plain prose with Done, Open and Next in bold and a Do it link, and the empty composer inside the black chat.
Recap. Plain prose, and one link for the next step.

Limited is the one state not in a screenshot: the demo model cannot hit a 5-hour window, so these rows are redrawn from the app's own code, faces included. A Limited face sleeps: closed eyes, a moon and a z in lilac. A session behind the window sleeps and says when it is back; a message you type waits and goes at the reset.

CI and diffs, in the terminal

Two panels take the editor's place and give it back on Esc. Both need nothing running: /ci asks gh, /diff asks git.

The /ci panel under the banner: a heavy blue rule, the title CI failed: check hit an error, the pull request number and branch, then one row per job with a mark, a time and a state, the failing job opened to its log tail, and the line enter send the failure to the agent. The status line below ends with CI, 3 passed, 1 failed, 1 running.
/ci or Ctrl+N. The checks of this branch's pull request, else the jobs of its latest commit's runs. A failed job opens to the step and the end of its log; Enter sends it to the agent, O opens the run. The same count sits in the status line.
The /diff pager under the banner: the branch, file 2 of 4 with its plus and minus counts, the keys, then a hunk with line numbers on both sides, a removed line in red and two added lines selected in blue, and a line saying no comments queued.
/diff or Ctrl+F on an empty box. The working tree's changes, one file at a time: N and P move between files, V selects lines, C queues a comment, A asks tide about the lines at once, S sends the comments as one review.

And the rest

  • Memory Say “remember this” and the fact is saved for later sessions, in the same folder as Claude Code’s memory, so the two share it. Only a short index enters the prompt; each fact is read when it matters.
  • /btw A side question mid-work, answered from the context without tools, without stopping the run or touching the history.
  • Prompt suggestions After each run your likely next message shows up dimmed; Tab accepts it. The app shows it as one quiet line on the composer.
  • Queue What you type while it works waits as your own faded message at the end of the thread. A steer goes in at the next step; a follow-up waits.
  • /usage Your subscription limits as a table: a bar per window, the percentage, a tick where the pace says you should be, and the reset. A full window becomes one line that says when it resumes.
  • Skills Folders with a SKILL.md, in the Claude Code and Pi format, from .agents/skills and .claude/skills. A project's own skills are always offered to the model.
  • MCP and Code Mode The MCP config from the project, Pi, Claude Code and its enabled plugins (Slack included), with OAuth. Tools sit behind a search, and one script can call several at once.
  • Voice Ctrl+G in the terminal, the waveform button in the app: it transcribes on the machine you talk to, Portuguese and English in one sentence.
  • Review diffs /diff in the terminal and a git panel in the app: pick lines, ask tide about them or leave review comments, sent as one review.
  • @ files Type @ in the editor to pick a file from the project and reference it.
  • /context What fills the context window, part by part, on a colour map. Auto-compaction runs before it fills up.
  • Models A Claude subscription through the Claude Code login, or any provider Pi supports. Ctrl+P switches.
  • tide update Moves to the newest release; a session says when one is out.

Principles

  1. One user. No profiles, no speculative options. A feature earns its place by being used.
  2. Light. The core is Pi Durable and pi-tui. Every feature is an extension, with a test.
  3. Native. No third-party plugins at runtime. A plugin worth having is rewritten as tide code.
  4. Pinned versions. Durable is experimental, so every dependency has an exact version.
  5. One source of truth. Skills, subagents, AGENTS.md and .mcp.json are read from where they already live.

How it looks

tide's look changed four times in its first week. Here is where it stands, then the tideline of how it got here, a picture for each step.

Every picture is a real screen from that version of the code: the terminal in tmux, the app on an Android emulator shaped like a Galaxy Z Fold. The model is a scripted demo (it reads faux-1) working in a throwaway repo, so nothing here comes from a real session. Click a picture to open it full size.

›The terminal, today

One mark per meaning. A ● in the state's colour opens each answer, ▸ opens yours, and the rules around the editor take the same colour. Calls in a row fold into one line and a failure stays open under it.

tide in a terminal while it works: the water-drop banner, the request, a group of two calls with a failed test, the reply, a running test, a swell spinner with the words Wading in, the editor between two blue rules, and a status line reading working 9s.
Working. The swell and a tide verb under the calls; blue rules and a blue ● in the status line.
tide asking before a risky command: an amber rule, a one-sentence summary saying it deletes the build folder, the chips Deletes files and Irreversible, the command rm -rf build, and the choices Allow, This session and Deny. The status line reads needs you.
Waiting for you. An amber rule, one sentence on what the command does, risk chips, the command itself.

≋The app, today

Material You underneath, Tide on top. Each session has the Tide face and a state word in its colour, the chat is a near-black canvas that runs to the bottom edge with the composer inside it, and a request is the only card.

The Tide app unfolded on a Fold-sized screen, dark: the sidebar on the left lists four sessions, one marked working in blue and one marked Needs you in amber, and the chat on the right shows a fixed login test with its tool groups and an amber request card to allow rm -rf build.
Unfolded. Sidebar and chat side by side; the sidebar gives way when a panel opens.
The Tide app folded, dark: the chat of a login-fix session with grey user bubble, tool lines, the reply and an amber request card with the chips Deletes files and Irreversible and the buttons Allow, This session, Edit and Deny.
Folded. The same chat on the cover screen.

∿How the terminal got here

  1. 14 Octv0.1.0

    First light

    A pixel wave with eyes in the banner, tool calls in plain boxes, the swell spinner, and a footer that counts tokens and cache.

    The first banner: a pixel-art blue wave with eyes, the name tide and version 0.1.0, above the editor and a footer with tokens and cache.
    Version 0.1.0 while working: tool calls in plain bordered boxes, a spinner and a footer packed with context, cost, tokens and cache.
  2. 15 Octv0.2.1

    Framed cards

    Each call gets a card right under its title, one blank row between calls, red when it failed. The wave's tip curls inward, as in the app icon.

    Version 0.2.1 while working: tool calls as blue-framed cards under their titles, a failed one framed in red, and the footer.
  3. 16 Octv0.3.1 · 0.3.0 brings the Android and Linux apps

    Many calls, one line

    Calls in a row fold into one line with a count and a time, and a failed group opens by itself. /usage arrives as a table. The cards were most of the screen; now they are none of it.

    Version 0.3.1 while working: the wave banner, then a group of two tools folded into one line with the failure shown under it, and a swell spinner of block characters.
  4. 17 Octredesign, first pass

    The drop

    The brand kit reaches the terminal: a water drop with the app's eyes replaces the wave, floats in the banner and listens while you hold Ctrl+G. Each answer starts with a two-cell face. I saw it on screen that evening and dropped the face.

    The redesign's first pass while working, under the new water-drop banner: a small face with eyes at the start of each answer and in the status line, tool groups, and the editor between rules.
  5. 17 to 18 Octv0.3.11 · now

    Calm

    No face, no bar: a ● in the state's colour opens each answer, ▸ opens yours. Approvals say what they do in a sentence. Only glyphs JetBrains Mono has, so no cell drifts out of line.

    A finished run today, under the water-drop banner: the answer, the next-prompt suggestion in dim text, the editor between grey rules and a status line reading done in 13s in green.

≋How the app got here

  1. 16 Octv0.3.1

    Stock Material

    The first Android app, in plain Material dark: the chat in a rounded grey box, dots in the sidebar, the recap as a card. The launcher icon is a ring half full of water.

    Version 0.3.1 of the app: a dark chat with a grey message, tool lines, the reply and a recap card with three bullets.
    Version 0.3.1 sidebar: four sessions marked with small coloured dots and no state words.
  2. 17 Octbrand kit and prototypes

    The tide pool

    Before any code, a kit: calm water, one signal colour, five state colours, system fonts. Then eighteen elements drawn in three or four versions each, and I picked one of each.

    The brand kit page: the Tide face, a blue ring with eyes over water, the title Tide, and a line calling it a tide pool where living agents work.
  3. 17 Octredesign, first pass

    Faces

    The Tide face, with the drop's eyes, shows up in the sidebar, the header and in front of every answer. The composer fills with water while it works, and an approval gets a summary and risk chips.

    The app after the first redesign pass: a face with eyes in the header and in front of the answer, tool lines, and a recap card.
    The sidebar with a small face on every session row.
  4. 18 Octcalm chat

    A card is a request

    Too many cards on the Fold, so a rule: only what holds the run until you answer gets a card; news is one line. Drawn first, the old chat beside the new, then built. The first commit made the limit one line.

    Two phone chats side by side. Today: wave reports, a recap and the limit as stacked cards. Calm: the same facts as three short lines. The sample conversation is in Portuguese.
    The prototype, before and after. The sample chat is in Portuguese because tide writes reports in the language of the session.
  5. 19 Octnow

    Quiet, dark, stateful

    Your messages in grey, the recap as plain prose with a Do it →, the suggestion as one calm line on the composer. The chat runs near-black to the bottom, and the sidebar spells each state in its colour: working, Needs you, done, Limited. Remote sessions group by machine and project, with Delete in the row menu.

    The sidebar today: four sessions with faces, the state words working in blue and Needs you in amber, a New project row, and Remote and Routines below.
    A session today: the reply, then a recap in plain prose with Done, Open and Next in bold and a Do it link, over a near-black chat that runs down to the composer.

The Linux app (GTK4, in the Omarchy theme's colours) came out with the Android one on 16 Oct and follows the same kit; it is not pictured here.

The tide app icon: a ring half full of water with two eyes.

More of what I make at pedrorobalo.com