agent-lookout 0.2.6 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/PRIVACY.md +6 -6
- package/README.md +187 -160
- package/dist/assets/{HistoryPanel-Cwmn7YtJ.js → HistoryPanel-oSXRXEdv.js} +1 -1
- package/dist/assets/{SessionPanel-BJ5t_CPi.js → SessionPanel-DcJvw0F8.js} +1 -1
- package/dist/assets/index-DLPmOXDe.js +3 -0
- package/dist/cli/agent-lookout.js +1 -1
- package/dist/cli/{startCommand-PR5JPWCT.js → startCommand-3LYUYPG4.js} +91 -30
- package/dist/index.html +1 -1
- package/docs/API.md +3 -2
- package/docs/GUIDE.md +11 -58
- package/docs/INSTALL.md +175 -0
- package/package.json +2 -1
- package/dist/assets/index-QSfCI-L_.js +0 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
Changes that a user of Agent Lookout would notice, newest first.
|
|
4
4
|
|
|
5
|
+
## 0.2.7 - 2026-10-07
|
|
6
|
+
|
|
7
|
+
Remind again every few minutes while a session keeps waiting, and read a README rewritten for people and coding agents.
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Remind again while it waits, under Remind me of a long wait in Time rules. Turn it on, and a session that still waits is reminded of again each time the minutes you set pass, 30 unless you change them, from 5 to 1,440: with a reminder after 10 minutes and again every 30, at 10 minutes, 40 minutes, 1 hour 10 minutes and so on. Each goes by the same channels as the first, as a notification, an email and a webhook post, and says how long the session has waited by then, as in "checkout-flow has waited 40 minutes for permission". None comes once the wait is answered or the session ends. Quiet hours hold them like any notice: a wait still open when they end is told of once, and one answered in them is one item of the summary, however many came due. After the computer has slept, one comes, not one for each interval missed. It is off until you turn it on. [Time rules](docs/GUIDE.md#time-rules) has the details.
|
|
12
|
+
- A webhook post for a repeat has `repeat` beside `reminder: true`. It counts the intervals since the first reminder's time, so after a sleep it can skip numbers. `longWait` in `GET /api/settings`, in `POST /api/settings/time-rules` and in each snapshot's `timeRules` can have `repeat`, as `{ "on", "minutes" }`. A settings file without it reads as before, with no repeat.
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- The README is rewritten for people and for coding agents, with install three ways and a prompt to hand an agent, and a new install guide, [docs/INSTALL.md](docs/INSTALL.md), takes the details.
|
|
17
|
+
- About sources, in Sources, now names every way Agent Lookout can send something off this computer: email, the webhook, pull requests through your own `gh`, other machines through your own `ssh`, and the Mac app's daily check for a newer version.
|
|
18
|
+
- A long wait reminder that falls due in quiet hours, for a session told of before they began, now holds its wait as any notice is held: if the wait is answered before they end, it is an item of the summary. Before, it was left out.
|
|
19
|
+
|
|
5
20
|
## 0.2.6 - 2026-10-07
|
|
6
21
|
|
|
7
22
|
Set rules that answer Claude Code's permission prompts for you, run Agent Lookout on Windows, and see a prompt you answered leave Needs you at once.
|
package/PRIVACY.md
CHANGED
|
@@ -290,7 +290,7 @@ It holds none of Claude Code's own wording and no tag. As in the page's, what a
|
|
|
290
290
|
|
|
291
291
|
### Reminders and summaries
|
|
292
292
|
|
|
293
|
-
With the [time rules](docs/GUIDE.md#time-rules) on, the page and the server make two more kinds of notification, in the same two ways and by the same switches. A reminder of a long wait has the session's name as its title, with the machine's name for a session on another machine, and as its text how long it has waited and for what, with what it is asking after it, as in "Has waited 10 minutes for permission: Run: npm test". On the page it takes the place of the wait's own, with its tag. The summary made when quiet hours end has "While quiet" as its title, and as its text the names of the sessions that waited, finished, failed or ended while they held, each with the machine's name for a session on another machine, with how long each waited, as in "checkout-flow waited 25 minutes and billing-webhooks finished". It holds nothing a session was asking. The page's has the tag `agent-lookout:while-quiet`, and stays until you clear it. During quiet hours neither the page nor the server makes any notification.
|
|
293
|
+
With the [time rules](docs/GUIDE.md#time-rules) on, the page and the server make two more kinds of notification, in the same two ways and by the same switches. A reminder of a long wait has the session's name as its title, with the machine's name for a session on another machine, and as its text how long it has waited and for what, with what it is asking after it, as in "Has waited 10 minutes for permission: Run: npm test". On the page it takes the place of the wait's own, with its tag. With Remind again on, the same reminder is made again at each interval while the session still waits, with how long it has waited by then, on the page each taking the place of the last, and none once the wait is answered or the session ends. The summary made when quiet hours end has "While quiet" as its title, and as its text the names of the sessions that waited, finished, failed or ended while they held, each with the machine's name for a session on another machine, with how long each waited, as in "checkout-flow waited 25 minutes and billing-webhooks finished". It holds nothing a session was asking. The page's has the tag `agent-lookout:while-quiet`, and stays until you clear it. During quiet hours neither the page nor the server makes any notification.
|
|
294
294
|
|
|
295
295
|
The server shows them only while notifications are on, and only for the events switched on, and it learns both from the dashboard. Each request a dashboard page makes says, in the `X-Agent-Lookout-Notifications` header, which events are on when that page's choice is on and the browser allows notifications, and `off` otherwise. The server keeps the last thing a page said, in memory, for as long as it runs, and never writes it to disk. Before any page has said anything it is off, unless `AGENT_LOOKOUT_NOTIFICATIONS=on` was set when Agent Lookout started, which turns it on for a session starting to wait. A page that says `off` after that turns it off all the same. The header is listened to only on a request that passes the checks described under [Network](#network), so a page at another address cannot set it.
|
|
296
296
|
|
|
@@ -317,7 +317,7 @@ An email is plain text. Its subject is the session's name followed by the reason
|
|
|
317
317
|
- the agent, such as Claude Code or Codex, or the agent a status file names
|
|
318
318
|
- one line saying Agent Lookout sent it and how to stop these emails
|
|
319
319
|
|
|
320
|
-
With the [time rules](docs/GUIDE.md#time-rules) on, two more kinds of email can be sent. A reminder of a long wait is the email of a wait with a subject that says how long it has waited, such as "checkout-flow has waited 10 minutes for permission", and a line on how often reminders come. The summary sent when quiet hours end has the subject "While quiet:" followed by the first few sessions' names and what happened, and in its body, one line for each session that waited, finished, failed or ended while they held, with how long it waited and from when, or when it finished, failed or ended, at most 50, and a line on where quiet hours are set. A summary holds the sessions' names alone, nothing of what they were asking and no folder.
|
|
320
|
+
With the [time rules](docs/GUIDE.md#time-rules) on, two more kinds of email can be sent. A reminder of a long wait is the email of a wait with a subject that says how long it has waited, such as "checkout-flow has waited 10 minutes for permission", and a line on how often reminders come. With Remind again on, the same email goes again at each interval while the session still waits, saying how long by then, and holds nothing more than the first. The summary sent when quiet hours end has the subject "While quiet:" followed by the first few sessions' names and what happened, and in its body, one line for each session that waited, finished, failed or ended while they held, with how long it waited and from when, or when it finished, failed or ended, at most 50, and a line on where quiet hours are set. A summary holds the sessions' names alone, nothing of what they were asking and no folder.
|
|
321
321
|
|
|
322
322
|
It holds no folder path, no prompt, none of Claude Code's own wording for the wait, no link, no image, nothing that reports back when it is opened and, unless you set `AGENT_LOOKOUT_EMAIL_ASKING=on` (below), nothing of what a waiting session is asking. Its headers are the ones the mail library writes for every email: From, with the name Agent Lookout and the sender's address, To, Subject, Date, Message-ID, and three that say it is plain text in UTF-8. A session's name and its folder's name are cut to 80 characters, and anything in them that would end a line becomes a space, so nothing in a name can add a header or a recipient.
|
|
323
323
|
|
|
@@ -340,7 +340,7 @@ For each email Agent Lookout looks up the server's name, opens a connection to i
|
|
|
340
340
|
|
|
341
341
|
### When
|
|
342
342
|
|
|
343
|
-
`AGENT_LOOKOUT_EMAIL_EVENTS` names the events that are emailed, from `needs-you`, `finished`, `failed` and `ended`, and is `needs-you` alone unless you set it. An email is sent for a wait that begins after Agent Lookout started, once it has lasted the delay, which is one minute unless `AGENT_LOOKOUT_EMAIL_AFTER` says otherwise, if the session is still waiting then. A wait answered before then sends nothing, and so does a session that was already waiting when Agent Lookout started. Each wait sends one email at most, apart from reminders. With the long wait reminder on, a wait is also reminded of once it has waited the rule's minutes, unless its email went only after that. That includes a wait already open when Agent Lookout started, if it had not waited that long yet. Each change to the minutes while it waits can bring one more, once it has waited the new number. With the others set, an email is sent as soon as a session is seen to finish, fail or end, and none for a session that had already finished or failed when Agent Lookout started. An email that could not be sent is not tried again. At most 20 are sent in any hour, whatever they are for. Past that, none goes until the hour has passed. Claude Code sessions and sessions from a status file can be seen waiting; a Codex session never can, so it never sends one for a wait.
|
|
343
|
+
`AGENT_LOOKOUT_EMAIL_EVENTS` names the events that are emailed, from `needs-you`, `finished`, `failed` and `ended`, and is `needs-you` alone unless you set it. An email is sent for a wait that begins after Agent Lookout started, once it has lasted the delay, which is one minute unless `AGENT_LOOKOUT_EMAIL_AFTER` says otherwise, if the session is still waiting then. A wait answered before then sends nothing, and so does a session that was already waiting when Agent Lookout started. Each wait sends one email at most, apart from reminders. With the long wait reminder on, a wait is also reminded of once it has waited the rule's minutes, unless its email went only after that. That includes a wait already open when Agent Lookout started, if it had not waited that long yet. Each change to the minutes while it waits can bring one more, once it has waited the new number. With Remind again on, a wait still open is reminded of again each time the interval passes after that, and never once the wait is answered or the session ends. After the computer has slept, or when quiet hours end, one email goes, not one for each interval missed. A wait already past the minutes when Agent Lookout started is reminded of at the next interval. With the others set, an email is sent as soon as a session is seen to finish, fail or end, and none for a session that had already finished or failed when Agent Lookout started. An email that could not be sent is not tried again. At most 20 are sent in any hour, whatever they are for. Past that, none goes until the hour has passed. Claude Code sessions and sessions from a status file can be seen waiting; a Codex session never can, so it never sends one for a wait.
|
|
344
344
|
|
|
345
345
|
The button and the switches for notifications in Settings do not turn emails on or off, or choose what is emailed. To stop them, start Agent Lookout again without `AGENT_LOOKOUT_EMAIL_TO`.
|
|
346
346
|
|
|
@@ -385,7 +385,7 @@ It holds:
|
|
|
385
385
|
- `at`: when it happened, as a time in UTC: when the wait began, or when Agent Lookout saw the session finish, fail or end.
|
|
386
386
|
- `waitedSeconds`, for a wait only: how long it had waited when it was posted.
|
|
387
387
|
|
|
388
|
-
With the [time rules](docs/GUIDE.md#time-rules) on, two more kinds of post can be sent. A reminder of a long wait is the post of a wait, with the line saying how long it has waited, such as "checkout-flow has waited 10 minutes for permission", and one more field, `"reminder": true`. The summary sent when quiet hours end looks like this:
|
|
388
|
+
With the [time rules](docs/GUIDE.md#time-rules) on, two more kinds of post can be sent. A reminder of a long wait is the post of a wait, with the line saying how long it has waited, such as "checkout-flow has waited 10 minutes for permission", and one more field, `"reminder": true`. With Remind again on, the same post goes again at each interval while the session still waits, saying how long by then, with one field more, `"repeat"`, a count of the intervals since the first reminder's time, which can skip numbers after a sleep. The summary sent when quiet hours end looks like this:
|
|
389
389
|
|
|
390
390
|
```json
|
|
391
391
|
{
|
|
@@ -443,7 +443,7 @@ Each post goes to the one address in `AGENT_LOOKOUT_WEBHOOK_URL`, and to no othe
|
|
|
443
443
|
|
|
444
444
|
### When
|
|
445
445
|
|
|
446
|
-
`AGENT_LOOKOUT_WEBHOOK_EVENTS` names the events that are posted, from `needs-you`, `finished`, `failed` and `ended`, and is `needs-you` alone unless you set it. A post goes for a wait that begins after Agent Lookout started, once it has lasted the delay, which is one minute unless `AGENT_LOOKOUT_WEBHOOK_AFTER` says otherwise, if the session is still waiting then. A wait answered before then sends nothing, and so does a session that was already waiting when Agent Lookout started. Each wait sends one post at most, apart from reminders. With the long wait reminder on, a wait is also reminded of once it has waited the rule's minutes, unless its post went only after that. That includes a wait already open when Agent Lookout started, if it had not waited that long yet. Each change to the minutes while it waits can bring one more, once it has waited the new number. With the others set, a post goes as soon as a session is seen to finish, fail or end, and none for a session that had already finished or failed when Agent Lookout started. A post that could not be sent is not tried again. At most 20 posts are tried in any hour, whatever they are for, counted apart from emails. Past that, none goes until the hour has passed. These are the rules emails follow, and the two share one copy of them.
|
|
446
|
+
`AGENT_LOOKOUT_WEBHOOK_EVENTS` names the events that are posted, from `needs-you`, `finished`, `failed` and `ended`, and is `needs-you` alone unless you set it. A post goes for a wait that begins after Agent Lookout started, once it has lasted the delay, which is one minute unless `AGENT_LOOKOUT_WEBHOOK_AFTER` says otherwise, if the session is still waiting then. A wait answered before then sends nothing, and so does a session that was already waiting when Agent Lookout started. Each wait sends one post at most, apart from reminders. With the long wait reminder on, a wait is also reminded of once it has waited the rule's minutes, unless its post went only after that. That includes a wait already open when Agent Lookout started, if it had not waited that long yet. Each change to the minutes while it waits can bring one more, once it has waited the new number. With Remind again on, a wait still open is reminded of again each time the interval passes after that, and never once the wait is answered or the session ends. After the computer has slept, or when quiet hours end, one post goes, not one for each interval missed. A wait already past the minutes when Agent Lookout started is reminded of at the next interval. With the others set, a post goes as soon as a session is seen to finish, fail or end, and none for a session that had already finished or failed when Agent Lookout started. A post that could not be sent is not tried again. At most 20 posts are tried in any hour, whatever they are for, counted apart from emails. Past that, none goes until the hour has passed. These are the rules emails follow, and the two share one copy of them.
|
|
447
447
|
|
|
448
448
|
The button and the switches for notifications in Settings do not turn posts on or off, or choose what is posted. To stop them, start Agent Lookout again without `AGENT_LOOKOUT_WEBHOOK_URL`.
|
|
449
449
|
|
|
@@ -539,7 +539,7 @@ To keep nothing on disk, start Agent Lookout with `AGENT_LOOKOUT_HISTORY=off`. I
|
|
|
539
539
|
|
|
540
540
|
### The settings file
|
|
541
541
|
|
|
542
|
-
Agent Lookout keeps the [time rules](docs/GUIDE.md#time-rules) and the [permission rules](docs/GUIDE.md#permission-rules) you set in Settings in `~/.agent-lookout/settings.json`, beside the history, or in the file `AGENT_LOOKOUT_SETTINGS_FILE` names, so they hold with no dashboard open and after a restart. It holds those rules and nothing else of Agent Lookout's: whether each time rule is on, the minutes before a reminder, the hours before a session is stale, and the times and days of quiet hours with the switch for the summary, and each permission rule in its order, with an ID Agent Lookout gave it, its decision, its tool and, for Bash, the command you wrote. It holds nothing about a session. A command you write in a rule is in the file as you wrote it, so leave out of a rule anything you would not keep in a file.
|
|
542
|
+
Agent Lookout keeps the [time rules](docs/GUIDE.md#time-rules) and the [permission rules](docs/GUIDE.md#permission-rules) you set in Settings in `~/.agent-lookout/settings.json`, beside the history, or in the file `AGENT_LOOKOUT_SETTINGS_FILE` names, so they hold with no dashboard open and after a restart. It holds those rules and nothing else of Agent Lookout's: whether each time rule is on, the minutes before a reminder and, once you set it, whether it goes again and the minutes between, the hours before a session is stale, and the times and days of quiet hours with the switch for the summary, and each permission rule in its order, with an ID Agent Lookout gave it, its decision, its tool and, for Bash, the command you wrote. It holds nothing about a session. A command you write in a rule is in the file as you wrote it, so leave out of a rule anything you would not keep in a file.
|
|
543
543
|
|
|
544
544
|
Agent Lookout reads it as it starts and again just before each change, and at each poll, every 2 seconds, it looks at the file's size and times to read it again when another copy of Agent Lookout, such as the Mac app beside `npx agent-lookout`, has written it. It writes it only when you change a rule in Settings, through `POST /api/settings/time-rules` or `POST /api/settings/permission-rules`, which the dashboard's page sends, and which another program on this computer can send too, as [Network](#network) says. It writes the file whole: to a new file of mode 600, so only your user can read or change it, in the same folder, which then takes the old one's place, and makes the folder with mode 700 when it is not there. It neither reads nor writes through a link, at the file's name or the folder's, and reads no file larger than 64 KB. Anything else the file holds, such as a later version's settings, is written back as it was. A file it finds but cannot read, such as one larger than 64 KB or one it may not read, it never writes over: a change is not saved until the file is mended or removed. Permission rules it cannot read whole, such as a later version's, are no rule at all: none of them answers anything, Settings says so, and they stay in the file as they were until you change a permission rule, which writes the list again with the rules Settings shows. Until you change a rule, nothing is written and no folder is made. To go back to every time rule off and no permission rule, delete the file while Agent Lookout is stopped.
|
|
545
545
|
|
package/README.md
CHANGED
|
@@ -1,133 +1,67 @@
|
|
|
1
1
|
# Agent Lookout
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Shows the AI agent sessions on your computer in one browser page, and which need you.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
[](https://www.npmjs.com/package/agent-lookout) [](https://github.com/Olanetsoft/agent-lookout/actions/workflows/ci.yml) [](LICENSE) 
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
It finds Claude Code and Codex sessions with no setup, and any agent that writes a status file. It never starts a session, stops one only when you press Stop and confirm, and answers a permission prompt only on Allow, Deny or a rule you added.
|
|
8
|
+
|
|
9
|
+
By default Agent Lookout sends nothing anywhere. The one exception: the Mac app's daily check on GitHub for a newer version, which Settings turns off. Email, a webhook, pull requests through your `gh` and other machines over your `ssh` stay off until you set them up. [Privacy](#privacy)
|
|
10
|
+
|
|
11
|
+
[Install](#install) · [Download for Mac](https://github.com/Olanetsoft/agent-lookout/releases/latest) · [Guide](docs/GUIDE.md) · [Privacy](#privacy) · [Changelog](CHANGELOG.md) · [For agents](#for-coding-agents) · [Roadmap](https://github.com/Olanetsoft/agent-lookout/milestones) · [Website](https://agent-lookout.vercel.app)
|
|
8
12
|
|
|
9
13
|
<picture>
|
|
10
14
|
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/Olanetsoft/agent-lookout/main/docs/images/dashboard-day.png">
|
|
11
|
-
<img alt="The Overview.
|
|
15
|
+
<img alt="The Overview. In the Needs you panel, checkout-flow has waited over 4 minutes for permission, with a Jump button, above bars of how long sessions waited and counts of working, idle and stale sessions. The Last hour chart is beside it. Below are the Sessions list, the Events log and the Timeline." src="https://raw.githubusercontent.com/Olanetsoft/agent-lookout/main/docs/images/dashboard-night.png">
|
|
12
16
|
</picture>
|
|
13
17
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
| Part | Description |
|
|
17
|
-
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
18
|
-
| [Needs you](docs/GUIDE.md#needs-you) | Lists the sessions waiting for permission or for an answer, longest wait first, each with a timer. For Claude Code it also says what the session is asking, such as `Run: npm test`. |
|
|
19
|
-
| [Sessions](docs/GUIDE.md#sessions) | Lists the other sessions by status, by repository or on a board, each with its folder and git branch. Click one to see its details. |
|
|
20
|
-
| [Jump](docs/GUIDE.md#jump) | Takes you to a Claude Code session. It opens it in VS Code, selects its tmux pane, or on a Mac brings its Terminal or iTerm2 tab to the front. |
|
|
21
|
-
| [Stop](docs/GUIDE.md#stop-a-session) | Ends a Claude Code session's process when you press Stop in its details and confirm. The conversation is kept. Sessions left running, idle for a day or more, can be ended together after a confirmation. |
|
|
22
|
-
| [Resume](docs/GUIDE.md#resume-a-session) | Copies the command that continues a Claude Code session that has ended, `cd` to its folder and `claude --resume` with its ID, for you to run in a terminal. It runs nothing itself. |
|
|
23
|
-
| [Allow and Deny](docs/GUIDE.md#answer-a-permission-prompt) | Answers a Claude Code permission prompt from the dashboard, with the Agent Lookout plugin installed in Claude Code. It shows the whole command first, and the prompt in the session still works. |
|
|
24
|
-
| [Permission rules](docs/GUIDE.md#permission-rules) | Decide once how a Claude Code permission prompt is answered: always allow, always ask or always deny, by tool and, for Bash, by command, such as `npm test:*`. An allow rule answers only one plain command you could allow by hand, and never one that begins with `sudo`, `env`, `sh`, `bash` or another program on [the list](docs/GUIDE.md#permission-rules) that runs a command. A rule for a package manager names its subcommand, such as `npm test:*`, and a prefix trusts every word after it. The Events log records each answer. None until you add one. |
|
|
25
|
-
| [Notifications](docs/GUIDE.md#notifications) | Tell you when a session starts waiting and, if you choose, when one finishes, fails or ends. Off until you turn them on. On a Mac they keep coming after you close the tab, once a page with them on has been open. |
|
|
26
|
-
| [Time rules](docs/GUIDE.md#time-rules) | Remind you of a long wait, set how long a session is idle before it is stale, and hold everything back during quiet hours, with one summary when they end. Off until you turn them on. |
|
|
27
|
-
| [Pull requests](docs/GUIDE.md#pull-requests) | Shows a session's pull request on github.com and its checks, through your own `gh`, and marks a branch whose checks are failing. Off until you turn it on. |
|
|
28
|
-
| [Email](docs/GUIDE.md#email) and [webhook](docs/GUIDE.md#webhook) | Send the same events to one email address, or to one webhook such as a Slack channel's, for when you are away. Off until you set them up. |
|
|
29
|
-
| [`agent-lookout status`](docs/GUIDE.md#in-the-terminal) | Prints which sessions need you, for a terminal, a tmux status line or a script. |
|
|
30
|
-
| [`agent-lookout mcp`](docs/GUIDE.md#for-your-agents) | Lets an AI agent ask which sessions need you. Its tools only read. |
|
|
31
|
-
| [Status files](docs/GUIDE.md#your-own-agents) | Show any other agent, including one you wrote, when it writes one small JSON file for each session. |
|
|
32
|
-
|
|
33
|
-
The Overview also has a chart of the last hour, a log of events, a timeline, and how long sessions waited on you today and over the last 7 days, day by day, with the sessions that waited longest. What they show is kept on this computer for 8 days, so a restart does not empty them. Press `/` to search every session. Sources says what Agent Lookout reads for each agent. [The screen](docs/GUIDE.md#the-screen) covers each part.
|
|
34
|
-
|
|
35
|
-
## Supported agents and systems
|
|
36
|
-
|
|
37
|
-
| Agent | Setup | How it finds sessions | Shows when it needs you | Jump |
|
|
38
|
-
| --------------- | -------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ------------------------------------------------------------ |
|
|
39
|
-
| Claude Code | None | Reads `~/.claude/sessions` every 2 seconds, runs `claude agents` every 30 seconds, and reads the end of a waiting session's transcript | Yes | In VS Code, in tmux, or in a Terminal or iTerm2 tab on a Mac |
|
|
40
|
-
| Codex | None | Reads `sessions`, `thread-writer-locks` and `session_index.jsonl` in `~/.codex` every 2 seconds, and runs nothing | No | No |
|
|
41
|
-
| Any other agent | It writes a [status file](docs/GUIDE.md#your-own-agents) | Reads `~/.agent-lookout/sessions` every 2 seconds | When its file says `waiting` | No |
|
|
42
|
-
|
|
43
|
-
Claude Code sessions are found whether they run in a terminal, in VS Code or in the desktop app.
|
|
44
|
-
|
|
45
|
-
A Codex session never shows as needing you. Codex's files do not record when it is waiting for your approval, so one that is waiting for you shows as working. Once it has written nothing for 5 minutes, its row says how long it has been quiet, which is the sign to look. Codex support has been checked with the Codex desktop app, and not yet with the Codex CLI or its IDE extension. [What each agent can report](docs/GUIDE.md#what-each-agent-can-report) has the full table.
|
|
46
|
-
|
|
47
|
-
Agent Lookout is developed and tested on macOS. On Linux, CI runs every test and starts the app there. On Windows, it runs the tests, less those of what Windows does not have, such as POSIX signals and Unix sockets, and starts the app there. No one has used it on a Linux or Windows desktop yet. Two things are macOS only: notifications with no dashboard tab open, and Jump to a Terminal or iTerm2 tab. On Windows, Stop, Allow and Deny, the permission rules, Resume and Jump to a tmux pane are not there either. [On Linux](docs/GUIDE.md#on-linux) and [On Windows](docs/GUIDE.md#on-windows) have the rest.
|
|
18
|
+
_One session has waited over 4 minutes for permission. Jump takes you to it in VS Code._
|
|
48
19
|
|
|
49
20
|
## Install
|
|
50
21
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
Download the disk image for your Mac from the [latest release](https://github.com/Olanetsoft/agent-lookout/releases/latest): the one that ends in `mac-arm64.dmg` for Apple silicon, or `mac-x64.dmg` for Intel. Open it and drag Agent Lookout to Applications. The app needs no Node.js.
|
|
54
|
-
|
|
55
|
-
It is not signed with an Apple Developer ID yet, so the first time you open it, macOS says “Agent Lookout” Not Opened. Press Done, then open System Settings › Privacy & Security and press Open Anyway. [Desktop app](docs/GUIDE.md#desktop-app) has the steps.
|
|
56
|
-
|
|
57
|
-
Its icon in the menu bar shows how many sessions need you, with the window open or closed, and a click lists them: choose one to open it.
|
|
58
|
-
|
|
59
|
-
Kept in Applications, it updates itself: about once a day it asks GitHub whether a newer version is out, and installs it when you press Install and Restart. Settings turns the daily check off. The app opens no port, so `agent-lookout status` and `agent-lookout mcp` cannot reach it. For those, start it with npx as well, and turn notifications on in only one of the two, or you get each one twice.
|
|
22
|
+
Start it with npx or the Mac app. Add the Claude Code plugin to either one to answer permission prompts from the page.
|
|
60
23
|
|
|
61
24
|
### With npx
|
|
62
25
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
```sh
|
|
66
|
-
node --version
|
|
67
|
-
claude --version
|
|
68
|
-
claude agents --help
|
|
69
|
-
codex --version
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
`node --version` prints `v22.12.0` or later. `claude --version` prints a version number followed by `(Claude Code)`, and `claude agents --help` prints a line that starts with `Usage: claude agents`. `codex --version` prints `codex-cli` followed by a version number.
|
|
73
|
-
|
|
74
|
-
You need Node.js, and Claude Code, Codex or both. A command for a program you do not use prints `command not found`: carry on. Agent Lookout never runs `codex`, so the Codex desktop app needs no CLI. Without `claude agents` the rest works, but Claude Code's finished and failed background jobs are not listed.
|
|
75
|
-
|
|
76
|
-
2. Start it. It keeps running until you press Ctrl+C, so leave this terminal open.
|
|
77
|
-
|
|
78
|
-
```sh
|
|
79
|
-
npx agent-lookout
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
The first time, npm names the package and asks `Ok to proceed? (y)`. Press Enter. npm downloads under 2 MB and keeps it in its cache. Then Agent Lookout prints:
|
|
26
|
+
You need Node.js 22.12 or newer, and Claude Code, Codex or both.
|
|
83
27
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
To run it in the background instead, run `nohup npx --yes agent-lookout > agent-lookout.log 2>&1 &`. What it prints then goes to `agent-lookout.log`.
|
|
90
|
-
|
|
91
|
-
If it prints `Port 4777 is already in use`, another program has that port. Run `npx agent-lookout --port 4778` instead, and use 4778 in the next two steps. `agent-lookout status` and `agent-lookout mcp` then need `--url http://127.0.0.1:4778`, as [In the terminal](#in-the-terminal) says.
|
|
92
|
-
|
|
93
|
-
3. Check that it answers. If `npx agent-lookout` holds your terminal, use a second one.
|
|
28
|
+
```sh
|
|
29
|
+
npx agent-lookout
|
|
30
|
+
```
|
|
94
31
|
|
|
95
|
-
|
|
96
|
-
curl -s http://127.0.0.1:4777/api/health
|
|
97
|
-
```
|
|
32
|
+
The first time, npm asks `Ok to proceed?`. Then it prints:
|
|
98
33
|
|
|
99
|
-
|
|
34
|
+
```text
|
|
35
|
+
Agent Lookout is running at http://127.0.0.1:4777
|
|
36
|
+
It listens on this machine only. Press Ctrl+C to stop.
|
|
37
|
+
```
|
|
100
38
|
|
|
101
|
-
|
|
39
|
+
Open http://127.0.0.1:4777. Your sessions appear within a few seconds. To check it from another terminal:
|
|
102
40
|
|
|
103
|
-
|
|
41
|
+
```sh
|
|
42
|
+
curl -s http://127.0.0.1:4777/api/health
|
|
43
|
+
```
|
|
104
44
|
|
|
105
|
-
|
|
45
|
+
It prints `{"ok":true,"version":"…"}`. If the port is in use, add `--port 4778`. If nothing appears, see [No sessions appear](docs/GUIDE.md#no-sessions-appear). [With npx](docs/INSTALL.md#with-npx) covers running it in the background, stopping it, updating it and a global install.
|
|
106
46
|
|
|
107
|
-
|
|
47
|
+
### Mac app
|
|
108
48
|
|
|
109
|
-
|
|
49
|
+
Download `Agent-Lookout-<version>-mac-arm64.dmg` for Apple silicon, or `Agent-Lookout-<version>-mac-x64.dmg` for Intel, from the [latest release](https://github.com/Olanetsoft/agent-lookout/releases/latest), open it and drag Agent Lookout to Applications. It needs no Node.js. It is not signed with an Apple Developer ID yet, so the first time you open it, go to System Settings › Privacy & Security and press Open Anyway.
|
|
110
50
|
|
|
111
|
-
|
|
112
|
-
npm install -g agent-lookout
|
|
113
|
-
agent-lookout
|
|
114
|
-
```
|
|
51
|
+
Its icon in the menu bar shows how many sessions need you. It checks for a newer version about once a day and installs it when you press Install and Restart. [Mac app](docs/INSTALL.md#mac-app) has the steps.
|
|
115
52
|
|
|
116
|
-
###
|
|
53
|
+
### Claude Code plugin
|
|
117
54
|
|
|
118
|
-
|
|
55
|
+
With Agent Lookout running, the plugin lets you press Allow or Deny on a Claude Code permission prompt from the page. In Claude Code, run:
|
|
119
56
|
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
npm install
|
|
124
|
-
npm run build
|
|
125
|
-
npm start
|
|
57
|
+
```text
|
|
58
|
+
/plugin marketplace add Olanetsoft/agent-lookout
|
|
59
|
+
/plugin install agent-lookout@agent-lookout
|
|
126
60
|
```
|
|
127
61
|
|
|
128
|
-
|
|
62
|
+
The prompt in the session still works, and whichever is answered first wins. Without Agent Lookout running, Claude Code asks as usual. Not on Windows. [plugins/agent-lookout/README.md](plugins/agent-lookout/README.md) says what the hook does, and [PRIVACY.md](PRIVACY.md#the-claude-code-plugin-and-permission-prompts) what it sends.
|
|
129
63
|
|
|
130
|
-
|
|
64
|
+
### Install with your agent
|
|
131
65
|
|
|
132
66
|
A coding agent such as Claude Code or Codex can start it for you. Give it this prompt:
|
|
133
67
|
|
|
@@ -139,110 +73,203 @@ It should print "Agent Lookout is running at http://127.0.0.1:4777".
|
|
|
139
73
|
If it prints anything else, or says the port is in use, stop and tell
|
|
140
74
|
me what it printed.
|
|
141
75
|
|
|
142
|
-
Do not use sudo, and do not set up email
|
|
143
|
-
|
|
76
|
+
Do not use sudo, and do not set up email, a webhook, pull requests
|
|
77
|
+
or other machines. You are done when
|
|
78
|
+
curl -s http://127.0.0.1:4777/api/health prints {"ok":true and a
|
|
144
79
|
version number. Tell me what it printed.
|
|
145
80
|
```
|
|
146
81
|
|
|
147
82
|
An agent's background command can end when its session does. If the page then says Agent Lookout has stopped updating, run `npx agent-lookout` yourself.
|
|
148
83
|
|
|
149
|
-
|
|
84
|
+
To run it from a clone, see [From the repository](docs/INSTALL.md#from-the-repository).
|
|
85
|
+
|
|
86
|
+
## What it does
|
|
150
87
|
|
|
151
|
-
|
|
88
|
+
| Part | What it does |
|
|
89
|
+
| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
90
|
+
| [Needs you](docs/GUIDE.md#needs-you) | Lists the sessions waiting for permission or an answer, longest first, with what a Claude Code session asks. |
|
|
91
|
+
| [Sessions](docs/GUIDE.md#sessions) | Lists the rest by status, by repository or on a board, with folder and branch. `/` searches every session. |
|
|
92
|
+
| [Jump](docs/GUIDE.md#jump) | Takes you to a Claude Code session in VS Code, its tmux pane, or its Terminal or iTerm2 tab. |
|
|
93
|
+
| [Stop and Resume](docs/GUIDE.md#stop-a-session) | Stop ends a Claude Code session, or those left running, after you confirm. Resume copies the command that reopens it. |
|
|
94
|
+
| [Allow and Deny](docs/GUIDE.md#answer-a-permission-prompt) | Answers a Claude Code permission prompt from the page, with the plugin. [Rules](docs/GUIDE.md#permission-rules) you add can answer some for you. |
|
|
95
|
+
| [Notifications](docs/GUIDE.md#notifications) and [time rules](docs/GUIDE.md#time-rules) | Tell you when a session waits, remind you of long waits and keep quiet hours. Off until turned on. |
|
|
96
|
+
| [Pull requests](docs/GUIDE.md#pull-requests), [email](docs/GUIDE.md#email), [webhook](docs/GUIDE.md#webhook) | Show a session's pull request on github.com and its checks, through your `gh`, and email or post events to one address. Off until set up. |
|
|
97
|
+
| [Another machine](docs/GUIDE.md#another-machine-over-ssh) | Shows the sessions of another machine running Agent Lookout, through your `ssh`. Off until you name one. |
|
|
98
|
+
| [Your own agents](docs/GUIDE.md#your-own-agents) | Shows any other agent that writes one small JSON file per session. |
|
|
99
|
+
|
|
100
|
+
The Overview also charts the last hour and how long sessions waited on you, from history kept on this computer. [The screen](docs/GUIDE.md#the-screen) covers each part.
|
|
101
|
+
|
|
102
|
+
## Supported agents and systems
|
|
103
|
+
|
|
104
|
+
Claude Code and Codex need no setup. Any other agent writes one small JSON file per session to `~/.agent-lookout/sessions`. [Your own agents](docs/GUIDE.md#your-own-agents).
|
|
105
|
+
|
|
106
|
+
<!-- Checked against the adapters by tests/integration/collector/adapters/adapter.test.ts -->
|
|
107
|
+
|
|
108
|
+
| Agent | Needs you | Jump | Quiet for | Stop | Answer |
|
|
109
|
+
| ------------ | --------- | ------ | --------- | ------ | ------ |
|
|
110
|
+
| Claude Code | Yes | Partly | No | Partly | Partly |
|
|
111
|
+
| Codex | No | No | Yes | No | No |
|
|
112
|
+
| Status files | Partly | No | Partly | No | No |
|
|
113
|
+
|
|
114
|
+
A Codex session waiting for approval shows as working. After 5 minutes its row says how long it has been quiet. [What each agent can report](docs/GUIDE.md#what-each-agent-can-report) gives the reason for every Partly and No.
|
|
115
|
+
|
|
116
|
+
| | macOS | Linux | Windows |
|
|
117
|
+
| ------------------------------------------ | ----- | ----- | ------- |
|
|
118
|
+
| Dashboard, `status`, `mcp`, email, webhook | Yes | Yes | Yes |
|
|
119
|
+
| Jump to VS Code | Yes | Yes | Yes |
|
|
120
|
+
| Jump to a tmux pane | Yes | Yes | No |
|
|
121
|
+
| Jump to Terminal or iTerm2 | Yes | No | No |
|
|
122
|
+
| Stop, and ending sessions left running | Yes | Yes | No |
|
|
123
|
+
| Allow and Deny, permission rules | Yes | Yes | No |
|
|
124
|
+
| Resume | Yes | Yes | No |
|
|
125
|
+
| Notifications with no tab open | Yes | No | No |
|
|
126
|
+
| Mac app and menu bar | Yes | No | No |
|
|
127
|
+
|
|
128
|
+
Developed and used on macOS. On Linux and Windows, CI runs the tests and starts the app, and no one has used it on those desktops yet. [On Linux](docs/GUIDE.md#on-linux) · [On Windows](docs/GUIDE.md#on-windows)
|
|
129
|
+
|
|
130
|
+
## In the terminal
|
|
152
131
|
|
|
153
132
|
```sh
|
|
154
133
|
npx agent-lookout status
|
|
155
134
|
```
|
|
156
135
|
|
|
157
|
-
It prints, for example:
|
|
158
|
-
|
|
159
136
|
```text
|
|
160
137
|
2 need you · 3 working · 2 idle
|
|
161
138
|
checkout-flow Waiting for permission 4m 12s
|
|
162
139
|
search-indexing Asked you a question 31s
|
|
163
140
|
```
|
|
164
141
|
|
|
165
|
-
It exits with 0 when nothing needs you,
|
|
166
|
-
|
|
167
|
-
It asks `http://127.0.0.1:4777`, then `http://localhost:5173`. If Agent Lookout runs on another port, give its address with `--url`, as in `npx agent-lookout status --url http://127.0.0.1:4778`, or set `AGENT_LOOKOUT_URL`. [In the terminal](docs/GUIDE.md#in-the-terminal) shows it in a tmux status line and a shell prompt.
|
|
168
|
-
|
|
169
|
-
## For your agents
|
|
142
|
+
It exits with 0 when nothing needs you, 1 when a session does, and 2 when Agent Lookout is not running or not ready. `--count` prints the number alone, `--json` prints JSON, and `--url` asks another port. [In the terminal](docs/GUIDE.md#in-the-terminal) shows it in a tmux status line and a shell prompt.
|
|
170
143
|
|
|
171
|
-
|
|
144
|
+
## MCP server
|
|
172
145
|
|
|
173
|
-
To add it to Claude Code for
|
|
146
|
+
`agent-lookout mcp` lets an AI agent ask which sessions need you. Its three tools, `list_sessions`, `sessions_needing_you` and `sources`, only read, and the agent's app usually hands their answers to its model. To add it to Claude Code for every folder:
|
|
174
147
|
|
|
175
148
|
```sh
|
|
176
149
|
claude mcp add --scope user agent-lookout -- npx -y agent-lookout mcp
|
|
177
150
|
```
|
|
178
151
|
|
|
179
|
-
|
|
152
|
+
<details>
|
|
153
|
+
<summary>Other apps that take MCP servers</summary>
|
|
180
154
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
155
|
+
```json
|
|
156
|
+
{
|
|
157
|
+
"mcpServers": {
|
|
158
|
+
"agent-lookout": { "command": "npx", "args": ["-y", "agent-lookout", "mcp"] }
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
```
|
|
184
162
|
|
|
185
|
-
|
|
163
|
+
</details>
|
|
186
164
|
|
|
187
|
-
|
|
188
|
-
AGENT_LOOKOUT_CLAUDE_FEED=off npx agent-lookout
|
|
189
|
-
```
|
|
165
|
+
[For your agents](docs/GUIDE.md#for-your-agents) covers a global install, Node installed with nvm, and another port.
|
|
190
166
|
|
|
191
|
-
|
|
192
|
-
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
193
|
-
| `AGENT_LOOKOUT_PORT` | The port `npx agent-lookout`, `agent-lookout` and `npm start` listen on, 4777 unless set. `agent-lookout --port` does the same. It does not change where `status` and `mcp` look. |
|
|
194
|
-
| `AGENT_LOOKOUT_URL` | The address `agent-lookout status` and `agent-lookout mcp` ask, such as `http://127.0.0.1:4778`. Set it where those commands run, not where Agent Lookout starts. |
|
|
195
|
-
| `AGENT_LOOKOUT_NOTIFICATIONS=on` | On a Mac, shows notifications of waits from the moment it starts, with no dashboard tab open. |
|
|
196
|
-
| `AGENT_LOOKOUT_CLAUDE_FEED=off` | Never runs the `claude` command. Sessions come from Claude Code's session files alone. |
|
|
197
|
-
| `AGENT_LOOKOUT_WAITING_TEXT=off` | Never opens a Claude Code transcript. A waiting session shows its reason alone, here and on another machine read over SSH. |
|
|
198
|
-
| `AGENT_LOOKOUT_HISTORY=off` | Keeps the Events log and the charts in memory only, so they start empty each time. Nothing is written to `~/.agent-lookout/history`. |
|
|
199
|
-
| `AGENT_LOOKOUT_STOP=off` | Takes away Stop and the ending of sessions left running. No session is ever stopped from Agent Lookout. |
|
|
200
|
-
| `AGENT_LOOKOUT_ANSWER=off` | Takes away Allow and Deny and the permission rules. No socket is opened for the plugin, and no permission prompt is answered from Agent Lookout. |
|
|
167
|
+
## Settings
|
|
201
168
|
|
|
202
|
-
|
|
169
|
+
Settings are environment variables, put before the command, as in `AGENT_LOOKOUT_PORT=4778 npx agent-lookout`. Each of `AGENT_LOOKOUT_STOP=off`, `AGENT_LOOKOUT_ANSWER=off`, `AGENT_LOOKOUT_CLAUDE_FEED=off` and `AGENT_LOOKOUT_HISTORY=off` turns one thing off: Stop, Allow and Deny with the rules, running `claude agents`, and history on disk. The theme, notifications and rules are in the page's Settings view. [Settings you can change](docs/GUIDE.md#settings-you-can-change) lists every setting.
|
|
203
170
|
|
|
204
171
|
## Privacy
|
|
205
172
|
|
|
206
|
-
By default Agent Lookout
|
|
173
|
+
By default Agent Lookout sends nothing anywhere: no telemetry, analytics, crash reports or account. The one exception is the Mac app, which asks GitHub about once a day whether a newer version is out, sends nothing about your sessions, and stops when you turn it off in Settings. `npx agent-lookout`, `npm start` and `npm run dev` make no such check.
|
|
174
|
+
|
|
175
|
+
Each of these is off until you set it up:
|
|
207
176
|
|
|
208
|
-
-
|
|
209
|
-
-
|
|
210
|
-
-
|
|
211
|
-
-
|
|
212
|
-
-
|
|
213
|
-
- Codex's session files hold your conversations. Agent Lookout reads them for when each turn started and ended, and for a few details such as the session's folder. It keeps none of your prompts, Codex's replies or the commands Codex ran.
|
|
214
|
-
- With the [Agent Lookout plugin](docs/GUIDE.md#answer-a-permission-prompt) installed in Claude Code, each permission request, the tool and its input, which for a new file is the whole file, goes from Claude Code to Agent Lookout over a socket in `~/.agent-lookout` that only you can open. Agent Lookout keeps what it shows of it in memory until the prompt is answered, and never writes it down or sends it on. The [permission rules](docs/GUIDE.md#permission-rules) you add are kept in `~/.agent-lookout/settings.json`, and the Events log keeps, for each request a rule answered, the tool and the rule, never the command.
|
|
215
|
-
- `agent-lookout mcp` does nothing until you add it to an agent's app. That app usually hands its answers, with your session names, folders and branches, to its model, which for most agents runs on the vendor's servers. [The MCP server](PRIVACY.md#the-mcp-server) says what an answer holds.
|
|
216
|
-
- Other machines are read only once you name them in `AGENT_LOOKOUT_REMOTES`. Then it runs your own `ssh` to each, which signs in with your config and agent, and asks the Agent Lookout running there for its sessions, sending nothing of this computer's. While it is connected, other programs and user accounts on this computer can reach Agent Lookout there through its tunnel, as they can reach it here. [Another machine over SSH](PRIVACY.md#another-machine-over-ssh) says what is read.
|
|
217
|
-
- Jump to a Terminal or iTerm2 tab needs macOS to let the program you start Agent Lookout from control that app. macOS asks once, and what you allow covers anything else you run from that program. Choose Don't Allow and only that Jump stops working. `AGENT_LOOKOUT_TERMINAL_JUMP=off` turns it off.
|
|
177
|
+
- Email and the webhook, each to the one address you name.
|
|
178
|
+
- Pull requests, through your own `gh`, with `AGENT_LOOKOUT_PULL_REQUESTS=on`.
|
|
179
|
+
- Other machines, through your own `ssh`, named in `AGENT_LOOKOUT_REMOTES`.
|
|
180
|
+
- The MCP server, whose answers the agent's app hands to its model.
|
|
181
|
+
- The Claude Code plugin, which reaches Agent Lookout over a socket in `~/.agent-lookout`.
|
|
218
182
|
|
|
219
|
-
|
|
183
|
+
Other programs make their own traffic. `npx` asks npm's registry for the package. `claude agents`, which Agent Lookout runs, may contact Anthropic as Claude Code does, and `AGENT_LOOKOUT_CLAUDE_FEED=off` stops Agent Lookout running it.
|
|
184
|
+
|
|
185
|
+
It listens on a loopback address only, 127.0.0.1 unless you set another, turns away requests from websites open in your browser, and has no password, so other programs and user accounts on this computer can use it as you can. The Mac app opens no port. [PRIVACY.md](PRIVACY.md) lists every file it reads and every command it runs, and [SECURITY.md](SECURITY.md) what it guards against.
|
|
220
186
|
|
|
221
187
|
## What it does not do yet
|
|
222
188
|
|
|
223
|
-
- It
|
|
224
|
-
-
|
|
225
|
-
- Claude Code's
|
|
226
|
-
- The Mac app is not signed with an Apple Developer ID yet,
|
|
189
|
+
- It cannot send a session a message, and Resume only copies the command.
|
|
190
|
+
- Cloud sessions, Codex cloud tasks and browser chats do not appear.
|
|
191
|
+
- Claude Code's and Codex's files are undocumented, so an update can hide sessions. [What breaks when Codex changes](docs/adapters/codex.md#what-breaks-when-codex-changes)
|
|
192
|
+
- The Mac app is not signed with an Apple Developer ID yet, and there is no Linux or Windows app.
|
|
193
|
+
|
|
194
|
+
[What it does not do yet](docs/GUIDE.md#what-it-does-not-do-yet) has the details, and the [milestones](https://github.com/Olanetsoft/agent-lookout/milestones) what is planned.
|
|
227
195
|
|
|
228
|
-
|
|
196
|
+
## Questions
|
|
197
|
+
|
|
198
|
+
<details>
|
|
199
|
+
<summary>Can it act on a session without me?</summary>
|
|
200
|
+
|
|
201
|
+
No. Stop needs a press and a confirm, and Allow and Deny need a press or a rule you added. `AGENT_LOOKOUT_STOP=off` and `AGENT_LOOKOUT_ANSWER=off` take them away.
|
|
202
|
+
|
|
203
|
+
</details>
|
|
204
|
+
|
|
205
|
+
<details>
|
|
206
|
+
<summary>Why does a Codex session never show as needing me?</summary>
|
|
207
|
+
|
|
208
|
+
Codex's files do not record when it waits for your approval, so watch its Quiet for line instead.
|
|
209
|
+
|
|
210
|
+
</details>
|
|
211
|
+
|
|
212
|
+
<details>
|
|
213
|
+
<summary>Can I run the Mac app and npx together?</summary>
|
|
214
|
+
|
|
215
|
+
Yes. The app opens no port, so `status` and `mcp` need the npx copy. Turn notifications on in only one of them, as [Mac app and npx together](docs/INSTALL.md#mac-app-and-npx-together) says.
|
|
216
|
+
|
|
217
|
+
</details>
|
|
229
218
|
|
|
230
219
|
## Documentation
|
|
231
220
|
|
|
232
|
-
|
|
|
233
|
-
|
|
|
234
|
-
|
|
|
235
|
-
|
|
|
236
|
-
|
|
|
237
|
-
|
|
|
238
|
-
|
|
|
239
|
-
|
|
|
240
|
-
|
|
|
241
|
-
|
|
|
221
|
+
| I want to | Read |
|
|
222
|
+
| ---------------------------------------------- | -------------------------------------------------------------------- |
|
|
223
|
+
| Install every way, update or stop it | [docs/INSTALL.md](docs/INSTALL.md) |
|
|
224
|
+
| Learn each part of the screen | [The screen](docs/GUIDE.md#the-screen) |
|
|
225
|
+
| Change a setting | [Settings you can change](docs/GUIDE.md#settings-you-can-change) |
|
|
226
|
+
| Fix a problem | [When something goes wrong](docs/GUIDE.md#when-something-goes-wrong) |
|
|
227
|
+
| Show my own agent | [Your own agents](docs/GUIDE.md#your-own-agents) |
|
|
228
|
+
| See every file it reads and all it can send | [PRIVACY.md](PRIVACY.md) |
|
|
229
|
+
| Know what it guards, or report a vulnerability | [SECURITY.md](SECURITY.md) |
|
|
230
|
+
| Call its local HTTP API | [docs/API.md](docs/API.md) |
|
|
231
|
+
| See how the parts fit together | [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) |
|
|
232
|
+
| Write tests | [tests/README.md](tests/README.md) |
|
|
233
|
+
| Install or remove the Claude Code plugin | [plugins/agent-lookout/README.md](plugins/agent-lookout/README.md) |
|
|
234
|
+
| See what changed | [CHANGELOG.md](CHANGELOG.md) |
|
|
235
|
+
| See what is planned | [Milestones](https://github.com/Olanetsoft/agent-lookout/milestones) |
|
|
236
|
+
|
|
237
|
+
## For coding agents
|
|
238
|
+
|
|
239
|
+
To set Agent Lookout up for someone:
|
|
240
|
+
|
|
241
|
+
- Run `npx --yes agent-lookout` in the background. It is ready when `curl -s http://127.0.0.1:4777/api/health` prints `{"ok":true`.
|
|
242
|
+
- `npx agent-lookout status --json` prints the counts and the sessions that need you, and exits with 0, 1 or 2 as above.
|
|
243
|
+
- `GET /api/sessions` lists every session. All routes answer on loopback only, and [docs/API.md](docs/API.md) lists them.
|
|
244
|
+
- Do not use `sudo`, and do not set up email, a webhook, pull requests or other machines unless asked.
|
|
245
|
+
|
|
246
|
+
To change its code, read [AGENTS.md](AGENTS.md) first. It has the commands, the rules a change must keep and where tests go. Run `npm run check` before you finish. Codex, and Claude Code from version 2.1.277, read AGENTS.md on their own. If you keep a CLAUDE.md or CLAUDE.local.md of your own in the clone, which git ignores here, Claude Code reads that instead, so put the line `@AGENTS.md` in it.
|
|
242
247
|
|
|
243
248
|
## Contributing
|
|
244
249
|
|
|
245
|
-
Bug reports, fixes and support for other agents are welcome.
|
|
250
|
+
Bug reports, fixes and support for other agents are welcome. Open an issue first for anything larger than a fix.
|
|
251
|
+
|
|
252
|
+
```sh
|
|
253
|
+
git clone https://github.com/Olanetsoft/agent-lookout.git
|
|
254
|
+
cd agent-lookout
|
|
255
|
+
npm install
|
|
256
|
+
npx playwright install chromium
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
`npm run dev` then serves the page at http://localhost:5173, with the collector inside, until you press Ctrl+C. `npm run check` runs every check, and is the one to run before you finish.
|
|
260
|
+
|
|
261
|
+
```text
|
|
262
|
+
src/collector/ Node: finds sessions and serves them on 127.0.0.1
|
|
263
|
+
src/dashboard/ The React page
|
|
264
|
+
src/core/ Shared logic, with no DOM and no Node APIs
|
|
265
|
+
src/cli/ The agent-lookout command: start, status and mcp
|
|
266
|
+
src/desktop/ The Mac app's main process
|
|
267
|
+
plugins/agent-lookout/ The Claude Code plugin's hook
|
|
268
|
+
tests/ Every test, in unit/, integration/ and component/
|
|
269
|
+
site/ The website
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
Start at `src/core/sessions/session.ts`. The full map is in [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md). [CONTRIBUTING.md](CONTRIBUTING.md) covers setup, checks and [adding an agent](CONTRIBUTING.md#adding-an-adapter), and [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) how to work together. Ask questions in [issues](https://github.com/Olanetsoft/agent-lookout/issues). Report a security problem privately, as [SECURITY.md](SECURITY.md) describes.
|
|
246
273
|
|
|
247
274
|
## License
|
|
248
275
|
|