Skip to content

Releases: nimrod-teich/lookout

Release list

Lookout 0.1.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 20:53
87f02c9

First release.

  • Board. A view in the activity bar. At the top, the harbour: a night scene with the lighthouse, its sweeping beam, and the sessions as boats on the water, placed by state and by time in that state; the beam lights the boats it passes and swings to a boat before a jump, and the tide rises with the 5-hour usage. Below, one card per session, grouped into Needs you, Finished, Working and Idle, showing its tool calls per minute over the last 15 minutes (fewer while it is younger than that, so the bars grow from the left), how full its context window is, the tokens it has used with their price at API list rates, its project and git branch (in a worktree, that worktree's), where it runs, and its model with the reasoning effort of its last reply (Opus 5.5 · high). Click a boat or a card to jump; rename a session from its card through the agent's own rename; hide a state group with a click on the legend. A tab or terminal with nothing sent is left off the board while it is idle; once it works it is listed as "Empty tab" (or "Empty session" in a terminal) until the agent titles it. A session in its first minute counts as idle.
  • Why a session needs you. A waiting session says what kind of wait it is and quotes the ask: a permission with the tool and its command or file (Bash: npm test), a question with its answers, a plan to approve, or another dialog with the agent's own word for it. The cards, the jump list and the notification all show it. A session of this window whose last reply asks you something is counted as needing you too, after the prompts, on a dashed card marked "asked you a question", until it works again or you dismiss it with the card's ✓ (lookout.state.typedQuestions, on by default); it is announced once, like a prompt, when you were not looking.
  • Where a state comes from. A card's hover says whether its state comes from the session file, the transcript or the process, and how old that is. A session file that records no state, or cannot be read, leaves the session "State unknown". A working session whose transcript has been silent for more than 10 minutes reads "Working, quiet 12m": its card stops moving.
  • Background jobs. A Claude Code session whose turn is over while shell commands it started in the background still run stays under Working, saying "1 background job · 2h" and how long they were busy ("busy 45m"); after 15 minutes with no CPU and no output it says "idle 20m: may be stuck", and "orphaned" when Claude Code no longer follows a job. When the last one ends the session is Finished. Linux and WSL.
  • Context pressure. A card's context ring turns amber from 75% and red from 90%, and a pin on its pulse marks the minute the agent compacted the conversation.
  • Earlier sessions. Under the live sessions, a collapsed group holds the sessions that are not running and that the agent has not archived: those of this window's folders, or of every project on the machine, as a toggle on its heading says (kept per workspace); the newest 500 are listed, 20 to a page with Newer and Older under them, with a note when there are more. A click on a session of this window's folders resumes it in the agent's panel; a session of another project opens its conversation rather than an empty tab, since the agent resumes it only in a window open on its folder.
  • Archive. An archive button on each earlier card moves the session to an Archived group under Earlier, paged like it and kept for every window; the button there brings it back, and a session that runs again leaves the archive. Lookout keeps the archive itself and writes nothing to the agents.
  • Search. A search box above the cards looks through every conversation, live and earlier, in the Earlier group's scope: what you wrote and what the agent replied. Every word must appear in one message. Operators narrow it: since: and before: (today, yesterday, 12h, 3d, 2w, 2026-10-01), project:, branch:, and file: for the paths the agent's tool calls worked on; operators alone list the sessions they keep. Sessions with matches stay on the board, each with its newest three matches under the card and the words marked; the rest hide until the box is cleared.
  • A search page. Every conversation's matches in an editor tab, with the room to read them: Lookout: Search All Sessions, the search icon on the board's title bar, or a click on the board's match count. Sessions with matches are listed newest match first, each headed by its title, whether it is running or earlier and its match count, then its project, branch and the days it spans with how long ago it last moved (Oct 16 → Oct 18 · active 3h ago), and up to 20 matches each; the page takes the board's operators.
  • The conversation tab. A click on a match, or on "+N more", opens the session's whole conversation in a tab, scrolled to the match, under its title, project, branch, message count and the same span; the tab wears the harbour's night colours and renders the messages' Markdown; it has its own search with next and previous, dims what does not match, follows the conversation as it grows, and has a button to bring the session's own tab or terminal forward.
  • Favourites. A small star on every card stars the session; starred sessions are gathered at the top of the board, running or not and whatever project they belong to, and a click jumps to them, resumes them, or opens their conversation. Stars are kept for the machine, so every window shows them.
  • Tabs restored after a reload. The agent restores its tabs after a window reload but starts a session only once its tab is opened; until then the board keeps the session, idle, on a card that says "Tab open · not started", and a click opens the tab.
  • Status bar. The usage and nothing else: the 5-hour window as a ten-cell bar coloured by consumption, green, amber from half, red from 80%, with the time to its reset, 32% · 1h12m (lookout.statusBar.usageReset, on by default), and a red background when a limit is nearly used up. The hover lists every agent's limits with a bar in its colour; a click opens the board.
  • Jump. Lookout: Jump to Session (Ctrl+Alt+J) lists the sessions, the ones that need attention first, with how long each has been in its state, and brings the chosen one's tab or terminal to the front; a panel session's tab comes forward at its newest message, with the cursor in its prompt box, or at the prompt it waits on, through Claude Code's own "Focus last message" and "Focus input". Lookout: Jump to Next Session That Needs You (Ctrl+Alt+Shift+J) goes straight to the one that has waited longest and cycles through the rest on repeated presses. A session hosted by another VS Code window on the same machine jumps through that window: it brings the session's tab or terminal forward and comes to the front; when the desktop does not let it, Lookout says which window to switch to. Sessions in other windows' terminals are named after their window.
  • Finished turns. A session that finishes a turn while you are not looking at it is marked finished until you open its tab or terminal; the marks survive a window reload. For a terminal session, looking means you were last in its terminal: you brought it forward or sent its session a prompt, and went to no tab, editor or panel session since, since VS Code keeps a terminal its active one while you work elsewhere. Lookout: Mark All Sessions as Seen clears them.
  • Notifications. A notification with a Jump button when a session starts to wait for you (lookout.notifications.waiting, on by default) or finishes a turn (lookout.notifications.done, off by default). While VS Code is not the window in front, the same shows on the desktop: notify-send on Linux, Notification Center on macOS, a Windows toast on Windows and from WSL (lookout.notifications.os, on by default), with a short sound if you want one (lookout.notifications.sound). It cannot jump, so it names the key that does. At most one per session and event every 30 seconds (lookout.notifications.cooldownSeconds); while three or more sessions need you, one sums them up. SSH and container remotes have no desktop to reach and skip it.
  • Usage. The board and the status bar's hover list every limit as Claude Code's own panel names it, Session (5hr), Weekly (7 day) and the per-model weekly ones such as Weekly Fable, each with its share used and "Resets in 3h". Lookout says once per window when the 5-hour window reaches 70% and 90% and the week 90% (lookout.usage.alerts, on by default). Numbers more than 30 minutes old, or from before a reset, turn grey. Claude Code fetches the numbers again when they are older than 10 minutes (lookout.usage.refresh: auto, manual or off), with its own credentials and the config directory Lookout reads, at most once every 3 minutes on the machine and less often after fetches that bring nothing new; not while CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC is set for Claude Code. Lookout: Refresh Usage fetches at once. Numbers cached for another account, or a cache that does not parse, show "No usage reported".
  • Agents. Claude Code in its VS Code panel and in terminals; Codex in its extension's panel, VS Code's Chat and terminals; Copilot in VS Code's Chat and in terminals (each has its own entry below). Each agent has a switch of its own in the Agents section of Lookout's settings (lookout.agents.claude, lookout.agents.codex, lookout.agents.copilot), which takes effect at once; with every agent off, the board says so and links to them. Lookout reads what each agent already writes on disk: it installs no hooks, writes no agent's configuration, reads no credentials and calls no service. Sessions in another VS Code window are listed with that window's name. A session Lookout cannot bring forward, outside VS Code or in an agent's panel in a window where Lookout does not run, says so, a...
Read more