itwillsync 1.7.1 → 1.8.1
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/README.md +184 -48
- package/dist/hub/daemon.js +2295 -23
- package/dist/hub/daemon.js.map +1 -1
- package/dist/hub/dashboard/assets/index-3t8d4xww.css +1 -0
- package/dist/hub/dashboard/assets/index-hmAVUiL5.js +2 -0
- package/dist/hub/dashboard/index.html +2 -2
- package/dist/index.js +2284 -23
- package/dist/index.js.map +1 -1
- package/dist/web-client/assets/index-7O6Lccue.css +1 -0
- package/dist/web-client/assets/index-C2_Zd4WS.js +120 -0
- package/dist/web-client/index.html +2 -2
- package/package.json +5 -3
- package/dist/hub/dashboard/assets/index-CUdWjWFv.css +0 -1
- package/dist/hub/dashboard/assets/index-hWUVy-IH.js +0 -2
- package/dist/web-client/assets/index-Bg1a3YQa.js +0 -80
- package/dist/web-client/assets/index-CmAz03xC.css +0 -1
package/README.md
CHANGED
|
@@ -1,79 +1,215 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
1
3
|
# itwillsync
|
|
2
4
|
|
|
3
|
-
**
|
|
5
|
+
**Sync any terminal-based AI coding agent to your phone over local network.**
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
[](https://www.npmjs.com/package/itwillsync)
|
|
8
|
+
[](https://opensource.org/licenses/MIT)
|
|
9
|
+
[](https://www.npmjs.com/package/itwillsync)
|
|
10
|
+
[](https://github.com/shrijayan/itwillsync/actions/workflows/ci.yml)
|
|
6
11
|
|
|
12
|
+
Sync any coding agent to your phone — one dashboard for all your sessions. Agent-agnostic, privacy-first, zero cloud.
|
|
13
|
+
|
|
14
|
+
[Website](https://shrijayan.github.io/itwillsync/) | [Docs](https://shrijayan.github.io/itwillsync/docs/) | [Demo Video](https://youtu.be/Zc0Tb98CXh0)
|
|
15
|
+
|
|
16
|
+
<!-- TODO: Replace with demo GIF once recorded -->
|
|
17
|
+
<!-- <img src="docs/assets/demo.gif" alt="itwillsync demo: scanning QR code to connect phone to Claude Code terminal session over local WiFi" width="700"> -->
|
|
18
|
+
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npx itwillsync claude # Claude Code
|
|
27
|
+
npx itwillsync aider # Aider
|
|
28
|
+
npx itwillsync bash # or any terminal command
|
|
7
29
|
```
|
|
8
|
-
npx itwillsync claude
|
|
9
|
-
npx itwillsync aider
|
|
10
|
-
npx itwillsync bash
|
|
11
|
-
```
|
|
12
30
|
|
|
13
|
-
|
|
31
|
+
No install needed. Node.js 20+ required.
|
|
32
|
+
|
|
33
|
+
## Why itwillsync
|
|
34
|
+
|
|
35
|
+
- **Control your agents from your phone**
|
|
36
|
+
- Scan a QR code and get full terminal access in your browser — no app install needed
|
|
37
|
+
- Type commands, approve prompts, and fix errors right from your phone
|
|
38
|
+
- Stay in the loop while you're away from your desk — kitchen, couch, coffee shop
|
|
39
|
+
|
|
40
|
+
- **One dashboard for all your sessions**
|
|
41
|
+
- See every running agent at a glance — status, working directory, uptime
|
|
42
|
+
- Tap any session to jump into the full terminal
|
|
43
|
+
- Get alerted when an agent needs your attention
|
|
44
|
+
|
|
45
|
+
- **Works with any agent**
|
|
46
|
+
- Claude Code, Aider, Codex, Goose, Cline — if it runs in a terminal, it works
|
|
47
|
+
- Switch between agents without changing your workflow
|
|
48
|
+
- Not locked to any single vendor or platform
|
|
49
|
+
|
|
50
|
+
- **Your data stays yours**
|
|
51
|
+
- Everything runs on your local network — nothing goes to the cloud
|
|
52
|
+
- No accounts, no signup, no telemetry
|
|
53
|
+
- End-to-end encrypted connections with per-session tokens
|
|
54
|
+
|
|
55
|
+
- **Zero friction to get started**
|
|
56
|
+
- One command: `npx itwillsync claude` — no install, no config
|
|
57
|
+
- Works on macOS, Windows, and Linux
|
|
58
|
+
|
|
59
|
+
## How It Works
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
┌─────────────────┐ ┌─────────────────┐
|
|
63
|
+
│ Your Laptop │ Local WiFi / Tailscale │ Your Phone │
|
|
64
|
+
│ │ │ │
|
|
65
|
+
│ Agent (Claude, │ WebSocket + Auth │ Browser-based │
|
|
66
|
+
│ Aider, etc.) │ ◄═════════════════════► │ Terminal │
|
|
67
|
+
│ ↕ │ Token in QR code │ (xterm.js) │
|
|
68
|
+
│ PTY (node-pty) │ │ Touch keyboard │
|
|
69
|
+
│ ↕ │ │ Extra keys bar │
|
|
70
|
+
│ HTTP + WS │ │ │
|
|
71
|
+
│ Server │ │ │
|
|
72
|
+
└─────────────────┘ └─────────────────┘
|
|
73
|
+
```
|
|
14
74
|
|
|
15
75
|
1. Run `itwillsync` with your agent command
|
|
16
76
|
2. A QR code appears in your terminal
|
|
17
|
-
3. Scan it on your phone —
|
|
18
|
-
4. Control your agent from your phone
|
|
77
|
+
3. Scan it on your phone — a terminal opens in your browser
|
|
78
|
+
4. Control your agent from your phone, laptop, or both simultaneously
|
|
19
79
|
|
|
20
|
-
##
|
|
80
|
+
## When To Use It
|
|
21
81
|
|
|
22
|
-
-
|
|
23
|
-
-
|
|
82
|
+
- **Walking to the kitchen** while Claude works on a long refactor — check progress from your phone
|
|
83
|
+
- **Monitoring multiple agents** from the couch via the multi-session dashboard
|
|
84
|
+
- **Getting a notification** when your agent needs attention (auto-detects BEL/OSC signals)
|
|
85
|
+
- **Working from a coffee shop** via Tailscale — no need to be on the same WiFi
|
|
86
|
+
- **Showing a colleague** what your AI agents are doing — just share the QR code
|
|
87
|
+
- **Quick approval** from your phone while you're in a meeting
|
|
24
88
|
|
|
25
|
-
##
|
|
89
|
+
## Multi-Session Dashboard
|
|
26
90
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
91
|
+
Running multiple agents? The hub daemon manages all your sessions from one place.
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
┌─────────────────────────────────────┐
|
|
95
|
+
│ itwillsync Dashboard │
|
|
96
|
+
│ │
|
|
97
|
+
│ ┌─────────────┐ ┌─────────────┐ │
|
|
98
|
+
│ │ Claude Code │ │ Aider │ │
|
|
99
|
+
│ │ ~/myproject │ │ ~/api │ │
|
|
100
|
+
│ │ ● Active │ │ ⚠ Attention │ │
|
|
101
|
+
│ │ 12m uptime │ │ 3m uptime │ │
|
|
102
|
+
│ └─────────────┘ └─────────────┘ │
|
|
103
|
+
│ │
|
|
104
|
+
│ ┌─────────────┐ │
|
|
105
|
+
│ │ Bash │ │
|
|
106
|
+
│ │ ~/scripts │ │
|
|
107
|
+
│ │ ○ Idle │ │
|
|
108
|
+
│ │ 45m uptime │ │
|
|
109
|
+
│ └─────────────┘ │
|
|
110
|
+
└─────────────────────────────────────┘
|
|
30
111
|
```
|
|
31
112
|
|
|
32
|
-
|
|
113
|
+
- Session cards show agent name, working directory, status, and uptime
|
|
114
|
+
- Real-time updates via WebSocket
|
|
115
|
+
- Tap a card to open the full terminal
|
|
116
|
+
- Attention detection alerts you when an agent needs input
|
|
117
|
+
- Sleep prevention keeps your machine awake during long tasks
|
|
33
118
|
|
|
34
|
-
##
|
|
119
|
+
## Works With
|
|
35
120
|
|
|
36
|
-
|
|
121
|
+
Claude Code, Aider, Goose, Codex, Cline, Copilot CLI — or any terminal-based tool.
|
|
37
122
|
|
|
38
123
|
```bash
|
|
39
|
-
|
|
40
|
-
itwillsync
|
|
124
|
+
npx itwillsync claude # Claude Code
|
|
125
|
+
npx itwillsync aider # Aider
|
|
126
|
+
npx itwillsync goose # Goose
|
|
127
|
+
npx itwillsync "codex --quiet" # Codex
|
|
128
|
+
npx itwillsync bash # Plain shell
|
|
129
|
+
```
|
|
41
130
|
|
|
42
|
-
|
|
43
|
-
itwillsync --tailscale claude
|
|
131
|
+
If it runs in a terminal, itwillsync can sync it.
|
|
44
132
|
|
|
45
|
-
|
|
46
|
-
itwillsync --local claude
|
|
133
|
+
## Connection Modes
|
|
47
134
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
135
|
+
| Mode | Command | When |
|
|
136
|
+
|------|---------|------|
|
|
137
|
+
| **Local WiFi** (default) | `npx itwillsync claude` | Phone on same network |
|
|
138
|
+
| **Tailscale** | `npx itwillsync --tailscale claude` | Any network, anywhere |
|
|
139
|
+
| **Cloudflare Tunnel** | `npx itwillsync --tunnel cloudflare claude` | Remote, no VPN needed |
|
|
140
|
+
| **Localhost** | `npx itwillsync --localhost claude` | Same machine only |
|
|
51
141
|
|
|
52
|
-
|
|
142
|
+
On first run, a setup wizard detects your network and saves your preference.
|
|
53
143
|
|
|
54
|
-
|
|
144
|
+
```bash
|
|
145
|
+
# First run — wizard auto-detects Tailscale
|
|
146
|
+
npx itwillsync claude
|
|
55
147
|
|
|
148
|
+
# Override for a single session
|
|
149
|
+
npx itwillsync --tailscale claude
|
|
150
|
+
npx itwillsync --local claude
|
|
151
|
+
|
|
152
|
+
# Re-run the setup wizard
|
|
153
|
+
npx itwillsync setup
|
|
56
154
|
```
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
155
|
+
|
|
156
|
+
## Commands
|
|
157
|
+
|
|
158
|
+
| Flag | Description |
|
|
159
|
+
|------|-------------|
|
|
160
|
+
| `--port <number>` | Port to listen on (default: 3456) |
|
|
161
|
+
| `--localhost` | Bind to 127.0.0.1 only |
|
|
162
|
+
| `--tailscale` | Use Tailscale for this session |
|
|
163
|
+
| `--local` | Use local WiFi for this session |
|
|
164
|
+
| `--tunnel <provider>` | Use a tunnel for remote access (cloudflare) |
|
|
165
|
+
| `--no-qr` | Don't display QR code |
|
|
166
|
+
| `setup` | Run the setup wizard |
|
|
167
|
+
| `-h, --help` | Show help |
|
|
168
|
+
| `-v, --version` | Show version |
|
|
69
169
|
|
|
70
170
|
## Security
|
|
71
171
|
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
172
|
+
- **E2E encrypted** — all WebSocket messages encrypted with NaCl secretbox (XSalsa20-Poly1305)
|
|
173
|
+
- **Random tokens** — each session generates a cryptographically random 64-character token
|
|
174
|
+
- **QR code auth** — token is embedded in the QR code URL, no manual entry needed
|
|
175
|
+
- **WebSocket auth** — all connections require the token (constant-time comparison)
|
|
176
|
+
- **Rate limiting** — 5 failed auth attempts locks out the IP for 60 seconds
|
|
177
|
+
- **Zero cloud** — no data leaves your local network (or Tailscale tailnet)
|
|
178
|
+
- **No accounts** — no signup, no telemetry, no tracking
|
|
179
|
+
|
|
180
|
+
## Mobile-Optimized
|
|
181
|
+
|
|
182
|
+
The phone terminal isn't just a mirror — it's built for mobile:
|
|
183
|
+
|
|
184
|
+
- **Touch-friendly extra keys bar** — Ctrl, Alt, Tab, Escape, arrows, and function keys
|
|
185
|
+
- **WebGL-accelerated rendering** on desktop, canvas fallback on mobile
|
|
186
|
+
- **Auto-reconnect** with scrollback buffer sync if connection drops
|
|
187
|
+
- **Audio notifications** when agents need attention
|
|
188
|
+
|
|
189
|
+
## Development
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
git clone https://github.com/shrijayan/itwillsync.git
|
|
193
|
+
cd itwillsync
|
|
194
|
+
nvm use # Node 22
|
|
195
|
+
pnpm install
|
|
196
|
+
pnpm build # Build all packages
|
|
197
|
+
pnpm test # Run tests
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Monorepo structure:
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
packages/
|
|
204
|
+
├── cli/ → Main npm package (itwillsync)
|
|
205
|
+
├── web-client/ → Browser terminal (xterm.js)
|
|
206
|
+
├── hub/ → Dashboard daemon
|
|
207
|
+
├── landing/ → Landing page
|
|
208
|
+
└── docs/ → VitePress documentation
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and PR guidelines.
|
|
76
212
|
|
|
77
|
-
##
|
|
213
|
+
## License
|
|
78
214
|
|
|
79
|
-
|
|
215
|
+
[MIT](LICENSE)
|