pelican-cc 0.2.2 → 0.3.0

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 CHANGED
@@ -1,5 +1,162 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.0
4
+
5
+ Every Claude Code session on your computer, on your phone. This release follows a ten-angle audit
6
+ (first run, phone, computer and accessibility, the conversation, Claude Code parity, the server,
7
+ security, the launch, competitors, code quality) and an adversarial review of the result.
8
+
9
+ ### Highlights
10
+
11
+ - **Phone in one step.** `pelican phone` prints a QR code that opens Pelican on your phone, signed
12
+ in, once, for two minutes. It finds the address from `tailscale serve`, PELICAN_PUBLIC_URL or your
13
+ network; with Tailscale it is two commands. The start banner shows the code when it knows the
14
+ address.
15
+ - **Keeps running.** `pelican service install` (also `status`, `restart`, `uninstall`) starts
16
+ Pelican at login with launchd or a systemd user service. While Claude works, the computer does not
17
+ idle to sleep (PELICAN_KEEP_AWAKE=0 turns this off).
18
+ - **Sessions waiting in other apps.** A session waiting for an answer in the terminal, Claude
19
+ Desktop or VS Code shows "Needs you in the terminal", and your phone gets one notification if the
20
+ wait lasts about 20 seconds. You answer it in that app.
21
+ - **Approvals as in Claude Code.** "Always allow" says what it saves and where ("Always allow
22
+ `npm test *` in this project", "Allow all edits this session"), and is not offered when Claude
23
+ Code says it would allow more than asked. Deny works like Claude Code's No. Cards use Claude
24
+ Code's wording, name the subagent or MCP server asking, and show hidden characters in commands.
25
+ - **Folders you trust.** The first time Claude Code would start in a folder nobody trusted, and
26
+ the folder brings programs of its own (hooks, MCP servers, helpers, git filters), Pelican lists
27
+ them and asks: Trust and start, or Use my settings only.
28
+ - **Much lighter on a phone.** Replies stream as appends (a long answer costs a few percent of
29
+ the data it did), everything is sent compressed, the conversation loads only when you open one,
30
+ pictures load when shown, and the session list stays fast with thousands of sessions.
31
+
32
+ ### Changes in behavior
33
+
34
+ - New sessions start in Auto, unless you pick a mode in Settings (New sessions start with > Mode)
35
+ or Claude Code's `permissions.defaultMode` sets one; a model without Auto starts in Manual. Bypass
36
+ is never a default: a branch, an edited earlier prompt or `/clear` from a Bypass session starts in
37
+ that default mode. A mode picked in a session stays with it.
38
+ - Permission modes carry Claude Code's names: Manual, Accept edits, Plan, Auto, Bypass
39
+ permissions. A session in Claude Code's Don't ask mode keeps it.
40
+ - Deny with no note stops the turn and waits for you; with a note, Claude carries on with it.
41
+ - Queued messages wait in a strip above the message box, where you can edit or remove them, and go
42
+ to Claude when the turn ends, each as its own message, so a queued `/compact` or `/model` runs as
43
+ a command.
44
+ - Stop ends the turn but leaves background agents and commands running, as Esc does in the
45
+ terminal; each has its own Stop.
46
+ - `/clear`, `/reset` and `/new` open a new session in the same folder.
47
+ - Pages and visuals Claude makes show as still pictures until you tap Run, and only for tool calls
48
+ that ran.
49
+ - A browser in use stays signed in; 30 days without use sign it out. `pelican token --reset` and
50
+ `pelican password` apply at once.
51
+ - The Agent SDK, and the Claude Code it brings, is pinned, and the package ships
52
+ npm-shrinkwrap.json: installs get the tree that was tested. Updating Pelican updates its Claude
53
+ Code. A second command name, `pelican-cc`, is there for machines where `pelican` is taken.
54
+ - Uploaded attachments are deleted after Claude Code's `cleanupPeriodDays` (30 unless set).
55
+
56
+ ### Sessions and the list
57
+
58
+ - Sessions with the same folder and title (a scheduled task's runs, a named session's branches)
59
+ fold into one row, with the earlier ones a tap away.
60
+ - A session whose background commands, subagents or scheduled checks keep running after its turn
61
+ stays under Active, with "2 tasks" and a steady dot.
62
+ - A turn that ended on a Claude Code error shows "Stopped: not signed in" (or the error's kind)
63
+ instead of the error as Claude's reply.
64
+ - Titles taken from a prompt fit on about one line; renamed sessions and Claude Code's own titles
65
+ keep theirs.
66
+ - Archive from the list: swipe a row left on a phone, or use the button on hover, with Undo.
67
+ - Rows are links (Cmd/Ctrl-click opens a new tab), the open session is marked, and long lists load
68
+ 150 rows at a time while search still covers every session.
69
+ - + opens a new chat in your latest project, ready to type; tap the folder to start elsewhere, or
70
+ make a new folder there (New folder in the folder browser).
71
+
72
+ ### The conversation
73
+
74
+ - Opening a session lands on its newest message, also with pictures, a chart or an approval
75
+ waiting. While Claude works the view follows the newest output; a stray tap no longer stops that.
76
+ - Diffs wrap long lines. Code blocks have a bar with the language and Copy. Tool output shows
77
+ without color codes or error tags. Long prompts fold, and files you sent show as chips.
78
+ - What you decided stays visible: your answers to Claude's questions, plans approved or sent back,
79
+ steps you denied with your note.
80
+ - The task list shows in full when it changes; in between, progress is one line.
81
+ - Half-written messages are kept per session, with their files, across leaving and reloading.
82
+ - Several approvals come one at a time ("1 of 3") and never push the message box off screen.
83
+ - Drop files anywhere on the conversation to attach them.
84
+ - A session another app has looks the same everywhere: the header says "Working in the terminal"
85
+ or "Needs you in Claude Desktop", each case is explained once, and the message box warns that
86
+ sending starts a second Claude.
87
+ - API failures show once, in plain words (overloaded, too long: send /compact, not signed in,
88
+ usage limit and when it resets).
89
+ - Hook feedback, warnings and local command output appear as notes, and stay after the turn and a
90
+ reload; terminal-only commands are left out of the / list.
91
+ - MCP servers that ask for input get a card to answer instead of being declined.
92
+ - Plans can be approved into Auto, Accept edits or Manual, or sent back with Keep planning.
93
+ - Check-ins Claude schedules (/loop, reminders, session crons) are listed, and Claude keeps running
94
+ for them and for background work.
95
+ - The cost shown is that turn's own, not the running total, and none on a subscription.
96
+ - Notifications say what Claude wants (the command, the file, the question) or the reply's first
97
+ line.
98
+ - On screens 1440px and wider, Changes and files sits beside the conversation (Cmd/Ctrl+Shift+D,
99
+ as in Claude Desktop). Comment on diff lines and add the comments to your message.
100
+
101
+ ### Keyboard and accessibility
102
+
103
+ - Enter that confirms a Chinese, Japanese or Korean candidate never sends, Safari included.
104
+ Cmd/Ctrl+Enter always sends. Esc stops Claude. Cmd/Ctrl+K searches sessions. Cmd/Ctrl+/ lists
105
+ the keys.
106
+ - Sheets are real dialogs: focus moves in and back, one Esc closes one, and on a phone you drag a
107
+ sheet down to close it.
108
+ - Screen readers hear approvals, questions, plans, replies, failures and the connection state;
109
+ turns have headings and pictures have names.
110
+ - Grey text and status words pass WCAG AA contrast in both themes; Reduce motion stops the pulsing.
111
+ - On iPhone the message box stays above the keyboard and fields no longer make Safari zoom.
112
+
113
+ ### Reliability
114
+
115
+ - Nothing a request or an unreadable transcript does crashes the server any more.
116
+ - A chat no longer stays on "Working" after Claude finished while the phone slept or Pelican
117
+ restarted. Dead connections are noticed and replaced; coming back to the page catches up at once.
118
+ - When the computer cannot be reached, one quiet line says so, with Retry.
119
+ - A `!` command that leaves something running in the background returns at once.
120
+ - A named pipe or device file in a project can no longer freeze Pelican.
121
+ - On Linux with Node 24, a Claude Code that Node runs (Node names its main thread MainThread) is
122
+ recognized again as working in another app.
123
+ - A signed-out or missing Claude Code is detected and said in Pelican's words; the banner and
124
+ Settings > About say which Claude Code runs, and when your own `claude` is newer.
125
+
126
+ ### Security
127
+
128
+ - Folder trust, above. Typing `/` or `@` in an untrusted folder runs nothing of the repository's.
129
+ - The app's own page has a script and connect policy; previews run their scripts only after Run.
130
+ - Notifications stop on every device after a token or password change, and on sign-out.
131
+ - `pelican service` never copies secrets such as API keys into the service.
132
+
133
+ ### Site, docs and project
134
+
135
+ - The README and website were redesigned around the one line, the live demo, how it works, a
136
+ dated comparison with Remote Control, Happy and HAPI, Yep Anywhere, CloudCLI and SSH with tmux,
137
+ and answers to the questions launch threads ask (plan terms, Remote Control, tmux, sleep, cost
138
+ and telemetry, size).
139
+ - The docs cover everything above and add a Claude Code coverage table, Keep it running, Update
140
+ and remove, and Folders you trust.
141
+ - The live demo plays out the waiting approval and answers messages calmly.
142
+ - CI runs the app and the site in a real browser on every change, on Node 22.12, 24 and 26 and on
143
+ macOS; the site publishes only after CI passes. Release candidates publish as `next`.
144
+ - Each new Agent SDK arrives as its own pull request with a report of what changed upstream, and a
145
+ weekly issue lists Claude Code updates to consider.
146
+
147
+ ## 0.2.3
148
+
149
+ - A session keeps its own model, effort, speed, Ultracode and permission mode, Bypass included:
150
+ leaving and coming back, or Pelican restarting, no longer turns Opus 5.5 into Default or
151
+ Bypass into Ask. What new sessions start with is set in Settings alone; a choice in one
152
+ session stays in that session. A branch still starts by asking first.
153
+ - The view (Summary, Normal, Verbose) can differ per session, from the session menu; Settings
154
+ holds the one the others open in.
155
+ - The session list's options moved next to the search and are no longer repeated in Settings.
156
+ Settings, the session menu and the model sheet say less.
157
+ - Dictation explains why it stopped: a blocked microphone, a page that does not let Pelican use
158
+ it, or a browser without a speech service.
159
+
3
160
  ## 0.2.2
4
161
 
5
162
  - That a session is also open, idle, in another app is explained once, the first time it
package/README.md CHANGED
@@ -5,12 +5,12 @@
5
5
  <h1 align="center">Pelican</h1>
6
6
 
7
7
  <p align="center">
8
- <b>Claude Code, in your pocket.</b><br>
9
- A phone-first web app for the Claude Code on your computer. Follow every session live, answer Claude, approve its edits.
8
+ <b>Every Claude Code session on your computer, on your phone.</b><br>
9
+ No wrapper, no relay, no account.
10
10
  </p>
11
11
 
12
12
  <p align="center">
13
- <a href="https://ki-seki.github.io/pelican/demo/"><b>Live demo</b></a> ·
13
+ <a href="https://ki-seki.github.io/pelican/demo/"><b>Try the live demo</b></a> ·
14
14
  <a href="https://ki-seki.github.io/pelican/">Website</a> ·
15
15
  <a href="https://ki-seki.github.io/pelican/docs.html">Docs</a>
16
16
  </p>
@@ -24,57 +24,140 @@
24
24
  <a href="https://ki-seki.github.io/pelican/demo/">
25
25
  <picture>
26
26
  <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/Ki-Seki/pelican/main/docs/shots/phone-dark.png">
27
- <img alt="Pelican on a phone: the session list, a session waiting for approval of an edit, and a chart Claude drew" src="https://raw.githubusercontent.com/Ki-Seki/pelican/main/docs/shots/phone-light.png">
27
+ <img alt="Pelican on a phone: the session list, an edit waiting for approval with its diff, and a chart Claude drew" src="https://raw.githubusercontent.com/Ki-Seki/pelican/main/docs/shots/phone-light.png">
28
28
  </picture>
29
29
  </a>
30
30
 
31
- ## Why Pelican
32
-
33
- - **Every session, wherever you started it.** The terminal, Claude Desktop, your editor: Pelican
34
- reads Claude Code's own transcripts, so every session is there, live while it runs, with its
35
- whole history back past each compaction. No wrapper command, no flag to remember.
36
- - **Nothing in between.** One small process on your computer: no account, no relay server, no copy
37
- of your sessions. Reach it over Tailscale, an SSH tunnel or your own proxy.
38
- - **All of Claude Code.** Approvals with the diff, steer or queue while Claude works, `!` commands,
39
- changes and files, rewind code, branches, subagents, MCP servers, usage limits, every model and
40
- mode, `/` commands and `@` files. Charts Claude draws and pages it writes render right in the
41
- conversation. It runs on the official Agent SDK, so your login, settings, `CLAUDE.md`, skills and
42
- MCP servers apply.
43
- - **Made for a phone.** Calm and quick with one hand. A notification when Claude needs you,
44
- dictation, and a Home Screen icon that opens it like an app.
31
+ <p align="center"><sub>The live demo is the real app with made-up sessions, in your browser. Nothing to install.</sub></p>
32
+
33
+ Pelican is one small server next to Claude Code. It reads Claude Code's own transcripts, so the
34
+ sessions you started in the terminal, Claude Desktop or your editor are all there, live, with their
35
+ whole history. It continues them through the official Agent SDK, so your login, settings,
36
+ `CLAUDE.md`, skills and MCP servers apply. Your phone reaches it over Tailscale or an SSH tunnel:
37
+ nothing sits in between.
38
+
39
+ ## Install
40
+
41
+ ```sh
42
+ npm install -g pelican-cc
43
+ pelican
44
+ ```
45
+
46
+ On the computer where you use Claude Code, with Node 22.12 or newer and Claude Code signed in, on
47
+ macOS or Linux. `pelican` prints the link that signs this browser in. The install is about 150 MB,
48
+ most of it the copy of Claude Code that the Agent SDK brings. The command is also called
49
+ `pelican-cc`, for computers where Python's Pelican has `pelican`.
50
+
51
+ ## On your phone
52
+
53
+ ```sh
54
+ tailscale serve --bg 7860
55
+ pelican phone
56
+ ```
57
+
58
+ With [Tailscale](https://tailscale.com) on the computer and the phone, `tailscale serve` gives
59
+ Pelican a private HTTPS address, and `pelican phone` shows a QR code for it. Scan it with the
60
+ phone's camera: Pelican opens there, signed in. `pelican service install` keeps Pelican running.
61
+ The docs cover [an SSH tunnel or your own proxy](https://ki-seki.github.io/pelican/docs.html#phone).
62
+
63
+ ## What it does
64
+
65
+ - **Every session, wherever you started it.** Live while it runs, with its whole history back past
66
+ every compaction. When another app is working on one, or waits for you there, Pelican says which
67
+ app; once it is idle, continue it here.
68
+ - **All of Claude Code.** Approvals with the diff, plans and questions, steer or queue while Claude
69
+ works, `!` commands, `/` commands and skills, `@` files, every model and permission mode, rewind
70
+ and branch, subagents and background tasks, MCP servers and usage limits.
71
+ - **What Claude makes, in place.** Charts and diagrams Claude draws and pages it writes show in the
72
+ conversation, as still pictures until you tap Run.
73
+ - **The changes beside the chat.** Every changed file with its diff. Tap a line to comment, and
74
+ your comments go into the next message.
75
+ - **Made for a phone, good on a computer.** One hand, dictation, a notification when Claude needs
76
+ you or finishes, and a Home Screen icon. On a wide screen, the list, the conversation and the
77
+ changes sit side by side.
45
78
 
46
79
  <p align="center">
47
80
  <img src="https://raw.githubusercontent.com/Ki-Seki/pelican/main/docs/shots/tour.gif" width="320" alt="A tour of Pelican on a phone: a chart and a page Claude made, rendered in place; an edit waiting for approval with its diff; a session another app is running">
48
81
  </p>
49
82
 
50
- ## Quick start
83
+ ## Compared with
51
84
 
52
- ```bash
53
- npx pelican-cc --demo # made-up sessions; nothing of yours involved
54
- npm install -g pelican-cc # Node 22.12+, with Claude Code signed in
55
- pelican # prints the link that signs you in: http://localhost:7860/?token=…
56
- ```
85
+ As each project documents it, checked on 5 November 2026:
86
+
87
+ | | Your sessions | Between phone and computer | Agents | License |
88
+ | --- | --- | --- | --- | --- |
89
+ | **Pelican** | All of them, from any app, with their whole history | Nothing: Tailscale, an SSH tunnel or your proxy | Claude Code | MIT |
90
+ | [Remote Control](https://code.claude.com/docs/en/remote-control) | Those with Remote Control turned on; Claude plans only | Anthropic's servers, which keep the transcript while connected | Claude Code | Part of Claude Code |
91
+ | [Yep Anywhere](https://github.com/kzahel/yepanywhere) | Resumes those from the CLI, VS Code and desktop apps | Nothing, or its end-to-end encrypted relay | Claude Code, Codex | MIT |
92
+ | [Happy](https://github.com/slopus/happy), [HAPI](https://github.com/tiann/hapi) | Those started in Happy or HAPI | An end-to-end encrypted relay, or with HAPI your own tunnel | Claude Code, Codex and more | MIT, AGPL-3.0 |
93
+ | [CloudCLI](https://github.com/siteboon/claudecodeui) | Every session in `~/.claude` | Nothing on your network, or CloudCLI Cloud | Claude Code, Cursor CLI, Codex | AGPL-3.0 |
94
+ | SSH and tmux | The ones running in tmux | Nothing | Any | |
95
+
96
+ Remote Control can answer a prompt waiting in your terminal; Pelican cannot. More in
97
+ [the docs](https://ki-seki.github.io/pelican/docs.html#compare).
98
+
99
+ ## Claude Code coverage
100
+
101
+ Pelican runs Claude Code itself, so your settings, `CLAUDE.md`, hooks, skills, subagents and MCP
102
+ servers work as they do in the terminal, and so does any login: a Claude plan, an API key, Bedrock,
103
+ Google Cloud or Microsoft Foundry. What Pelican does not do: Remote Control, cloud sessions, a
104
+ worktree for each new session, side questions (`/btw`), a terminal of its own, or editing files by
105
+ hand. [The full table](https://ki-seki.github.io/pelican/docs.html#coverage) goes through Claude
106
+ Code's features one by one.
107
+
108
+ ## Security
109
+
110
+ Whoever can use Pelican can run commands as you, so:
111
+
112
+ - It listens on `127.0.0.1`, and every browser signs in, also on this computer: with the link it
113
+ prints, a QR code that works once, or a password.
114
+ - Requests must come from Pelican's own page, under a host name it knows: no cross-site requests,
115
+ no DNS rebinding, no framing by other sites.
116
+ - What Claude writes renders in a sandboxed frame that cannot reach Pelican, as a still picture
117
+ until you tap Run.
118
+ - A folder runs nothing of its own, such as hooks or MCP servers, until you trust it.
119
+
120
+ The whole model is in [SECURITY.md](SECURITY.md).
121
+
122
+ ## Questions
123
+
124
+ **Does it work with my Claude plan?** Pelican runs Anthropic's own Claude Code, unmodified, on your
125
+ computer, signed in the way you signed in to `claude`; it never sees, stores or forwards your
126
+ credentials, and it is for your own use. Signed in with a plan, what you send from Pelican is Agent
127
+ SDK usage and draws from your plan's limits, as
128
+ [Anthropic's help center](https://support.claude.com/en/articles/15036540) says (checked on
129
+ 5 November 2026); the rules are under
130
+ [authentication and credential use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use).
131
+
132
+ **Why not Remote Control?** Use it if you are on a Claude plan and want to answer, from your phone,
133
+ the prompt waiting in your terminal: Pelican cannot. Pelican shows every session without turning
134
+ anything on, keeps nothing on anyone's servers, and works with any login, API keys and cloud
135
+ providers included.
136
+
137
+ **Why not SSH and tmux?** That works. Pelican is for what a terminal on a phone does badly: long
138
+ transcripts, diffs, approvals in one tap, notifications, charts and pages, and history across
139
+ compactions.
57
140
 
58
- Then [use it from your phone](https://ki-seki.github.io/pelican/docs.html#phone); with Tailscale it
59
- takes two commands.
141
+ **What if my computer sleeps?** A computer that is asleep runs nothing. While Claude works, Pelican
142
+ keeps it from going to sleep on its own; to reach Pelican at any time, keep the computer awake, as
143
+ [the docs](https://ki-seki.github.io/pelican/docs.html#running) show.
60
144
 
61
- ## Docs
145
+ **Does it cost anything, or phone home?** No. Pelican is free and MIT licensed, with no account and
146
+ no telemetry. It talks to your browser and, for notifications, to the browser's push service, with
147
+ the content encrypted.
62
148
 
63
- [Using Pelican](https://ki-seki.github.io/pelican/docs.html#using) ·
64
- [configuration](https://ki-seki.github.io/pelican/docs.html#config) ·
65
- [security](https://ki-seki.github.io/pelican/docs.html#security) ·
66
- [how it works](https://ki-seki.github.io/pelican/docs.html#how) ·
67
- [compared with Remote Control, Happy and CloudCLI](https://ki-seki.github.io/pelican/docs.html#compare)
149
+ [More questions](https://ki-seki.github.io/pelican/docs.html#faq)
68
150
 
69
151
  ## Contributing
70
152
 
71
- ```bash
72
- npm ci && npm run dev # the server and the web app, both reloading on change
73
- npm test && npm run typecheck
153
+ ```sh
154
+ npm ci
155
+ npm run dev
74
156
  ```
75
157
 
76
- See [CONTRIBUTING.md](CONTRIBUTING.md). Security reports go through
77
- [SECURITY.md](SECURITY.md).
158
+ `npm run dev` runs the server and the web app, both reloading on change; `npm test` and
159
+ `npm run typecheck` check a change. See [CONTRIBUTING.md](CONTRIBUTING.md). Security reports go
160
+ through [SECURITY.md](SECURITY.md).
78
161
 
79
162
  ## License
80
163