@agent-link/server 0.1.61 → 0.1.63

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-link/server",
3
- "version": "0.1.61",
3
+ "version": "0.1.63",
4
4
  "description": "AgentLink relay server",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/web/iPad.png CHANGED
Binary file
package/web/landing.html CHANGED
@@ -3,21 +3,21 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>AgentLink — Claude Code in Your Browser</title>
7
- <meta name="description" content="Run Claude Code on your local machine, access it from any browser. End-to-end encrypted, zero config, self-hostable. Install with npm and start coding in seconds.">
8
- <meta name="keywords" content="Claude Code, browser IDE, remote coding, AI coding assistant, AgentLink, end-to-end encrypted, self-hosted">
6
+ <title>AgentLink — Remote Control for Claude Code</title>
7
+ <meta name="description" content="Remote control for Claude Code. Start a task in your terminal, walk away, and continue from your phone or any browser. Auto-reconnects, end-to-end encrypted.">
8
+ <meta name="keywords" content="Claude Code, remote control, browser IDE, AI coding assistant, AgentLink, end-to-end encrypted, self-hosted, mobile coding">
9
9
  <link rel="canonical" href="https://msclaude.ai/">
10
10
  <!-- Open Graph -->
11
11
  <meta property="og:type" content="website">
12
- <meta property="og:title" content="AgentLink — Claude Code in Your Browser">
13
- <meta property="og:description" content="Run Claude Code on your local machine, access it from any browser. End-to-end encrypted, zero config, self-hostable.">
12
+ <meta property="og:title" content="AgentLink — Remote Control for Claude Code">
13
+ <meta property="og:description" content="Remote control for Claude Code. Start a task in your terminal, walk away, and continue from your phone or any browser. Auto-reconnects, end-to-end encrypted.">
14
14
  <meta property="og:url" content="https://msclaude.ai/">
15
15
  <meta property="og:image" content="https://msclaude.ai/iPad.png">
16
16
  <meta property="og:site_name" content="AgentLink">
17
17
  <!-- Twitter Card -->
18
18
  <meta name="twitter:card" content="summary_large_image">
19
- <meta name="twitter:title" content="AgentLink — Claude Code in Your Browser">
20
- <meta name="twitter:description" content="Run Claude Code on your local machine, access it from any browser. End-to-end encrypted, zero config.">
19
+ <meta name="twitter:title" content="AgentLink — Remote Control for Claude Code">
20
+ <meta name="twitter:description" content="Remote control for Claude Code. Start a task in your terminal, walk away, and continue from your phone or any browser. Auto-reconnects, end-to-end encrypted.">
21
21
  <meta name="twitter:image" content="https://msclaude.ai/iPad.png">
22
22
  <link rel="icon" type="image/svg+xml" href="/favicon.svg">
23
23
  <script type="application/ld+json">
@@ -25,7 +25,7 @@
25
25
  "@context": "https://schema.org",
26
26
  "@type": "SoftwareApplication",
27
27
  "name": "AgentLink",
28
- "description": "Run Claude Code on your local machine, access it from any browser. End-to-end encrypted, zero config, self-hostable.",
28
+ "description": "Remote control for Claude Code. Start a task in your terminal, walk away, and continue from your phone or any browser. Auto-reconnects, end-to-end encrypted.",
29
29
  "url": "https://msclaude.ai/",
30
30
  "applicationCategory": "DeveloperApplication",
31
31
  "operatingSystem": "Windows, macOS, Linux",
@@ -85,8 +85,8 @@
85
85
  /* ── Hero ── */
86
86
  .hero {
87
87
  text-align: center;
88
- padding: 3.5rem 2rem 3rem;
89
- max-width: 800px;
88
+ padding: 3.5rem 2rem 2rem;
89
+ max-width: 820px;
90
90
  margin: 0 auto;
91
91
  }
92
92
 
@@ -109,8 +109,13 @@
109
109
  .hero p {
110
110
  font-size: 1.15rem;
111
111
  color: var(--text-dim);
112
- max-width: 550px;
113
- margin: 0 auto 1.5rem;
112
+ max-width: 620px;
113
+ margin: 0 auto 0.75rem;
114
+ }
115
+
116
+ .hero p strong {
117
+ color: var(--text);
118
+ font-weight: 600;
114
119
  }
115
120
 
116
121
  /* ── Install box ── */
@@ -120,7 +125,7 @@
120
125
  border-radius: 12px;
121
126
  padding: 2rem 2.5rem;
122
127
  max-width: 600px;
123
- margin: 0 auto 4rem;
128
+ margin: 2.5rem auto 4rem;
124
129
  text-align: left;
125
130
  }
126
131
 
@@ -191,6 +196,123 @@
191
196
  text-align: center;
192
197
  }
193
198
 
199
+ /* ── Device Showcase ── */
200
+ .showcase {
201
+ max-width: 900px;
202
+ margin: 0 auto 4rem;
203
+ padding: 0 2rem;
204
+ position: relative;
205
+ display: flex;
206
+ justify-content: center;
207
+ align-items: flex-end;
208
+ }
209
+
210
+ .device {
211
+ position: relative;
212
+ border-radius: 18px;
213
+ overflow: hidden;
214
+ box-shadow:
215
+ 0 0 0 1px rgba(255,255,255,0.06),
216
+ 0 25px 80px rgba(0,0,0,0.55),
217
+ 0 8px 32px rgba(0,0,0,0.3);
218
+ }
219
+
220
+ .device img {
221
+ display: block;
222
+ width: 100%;
223
+ height: auto;
224
+ }
225
+
226
+ .device-ipad {
227
+ width: 72%;
228
+ border-radius: 18px;
229
+ z-index: 1;
230
+ }
231
+
232
+ .device-iphone {
233
+ width: 22%;
234
+ border-radius: 24px;
235
+ z-index: 2;
236
+ margin-left: -8%;
237
+ margin-bottom: -2%;
238
+ box-shadow:
239
+ 0 0 0 1px rgba(255,255,255,0.08),
240
+ 0 30px 90px rgba(0,0,0,0.6),
241
+ 0 10px 40px rgba(0,0,0,0.35);
242
+ }
243
+
244
+ .showcase::before {
245
+ content: '';
246
+ position: absolute;
247
+ top: 50%;
248
+ left: 50%;
249
+ transform: translate(-50%, -50%);
250
+ width: 80%;
251
+ height: 70%;
252
+ background: radial-gradient(ellipse, rgba(108,99,255,0.12) 0%, transparent 70%);
253
+ pointer-events: none;
254
+ z-index: 0;
255
+ }
256
+
257
+ /* ── Workflow ── */
258
+ .workflow {
259
+ max-width: 800px;
260
+ margin: 0 auto 5rem;
261
+ padding: 0 2rem;
262
+ }
263
+
264
+ .workflow h2 {
265
+ font-size: 1.8rem;
266
+ font-weight: 700;
267
+ text-align: center;
268
+ margin-bottom: 2.5rem;
269
+ }
270
+
271
+ .workflow-steps {
272
+ display: flex;
273
+ flex-direction: column;
274
+ gap: 1.25rem;
275
+ }
276
+
277
+ .workflow-step {
278
+ display: flex;
279
+ align-items: flex-start;
280
+ gap: 1.25rem;
281
+ background: var(--surface);
282
+ border: 1px solid var(--border);
283
+ border-radius: 12px;
284
+ padding: 1.25rem 1.5rem;
285
+ }
286
+
287
+ .workflow-step .step-icon {
288
+ font-size: 1.5rem;
289
+ flex-shrink: 0;
290
+ width: 2rem;
291
+ text-align: center;
292
+ padding-top: 0.1rem;
293
+ }
294
+
295
+ .workflow-step h3 {
296
+ font-size: 1rem;
297
+ font-weight: 600;
298
+ margin-bottom: 0.3rem;
299
+ }
300
+
301
+ .workflow-step p {
302
+ font-size: 0.9rem;
303
+ color: var(--text-dim);
304
+ line-height: 1.5;
305
+ }
306
+
307
+ .workflow-step code {
308
+ font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
309
+ font-size: 0.85rem;
310
+ color: var(--green);
311
+ background: #1a1a2e;
312
+ padding: 0.15rem 0.4rem;
313
+ border-radius: 4px;
314
+ }
315
+
194
316
  /* ── Features ── */
195
317
  .features {
196
318
  display: grid;
@@ -225,25 +347,6 @@
225
347
  line-height: 1.5;
226
348
  }
227
349
 
228
- /* ── How it works ── */
229
- .how {
230
- text-align: center;
231
- max-width: 800px;
232
- margin: 0 auto 5rem;
233
- padding: 0 2rem;
234
- }
235
-
236
- .how h2 {
237
- font-size: 1.8rem;
238
- font-weight: 700;
239
- margin-bottom: 2rem;
240
- }
241
-
242
- .how p {
243
- color: var(--text-dim);
244
- font-size: 0.95rem;
245
- }
246
-
247
350
  /* ── Footer ── */
248
351
  footer {
249
352
  text-align: center;
@@ -268,71 +371,14 @@
268
371
  border: 0;
269
372
  }
270
373
 
271
- /* ── Device Showcase ── */
272
- .showcase {
273
- max-width: 900px;
274
- margin: 0 auto 3.5rem;
275
- padding: 0 2rem;
276
- position: relative;
277
- display: flex;
278
- justify-content: center;
279
- align-items: flex-end;
280
- }
281
-
282
- .device {
283
- position: relative;
284
- border-radius: 18px;
285
- overflow: hidden;
286
- box-shadow:
287
- 0 0 0 1px rgba(255,255,255,0.06),
288
- 0 25px 80px rgba(0,0,0,0.55),
289
- 0 8px 32px rgba(0,0,0,0.3);
290
- }
291
-
292
- .device img {
293
- display: block;
294
- width: 100%;
295
- height: auto;
296
- }
297
-
298
- .device-ipad {
299
- width: 72%;
300
- border-radius: 18px;
301
- z-index: 1;
302
- }
303
-
304
- .device-iphone {
305
- width: 22%;
306
- border-radius: 24px;
307
- z-index: 2;
308
- margin-left: -8%;
309
- margin-bottom: -2%;
310
- box-shadow:
311
- 0 0 0 1px rgba(255,255,255,0.08),
312
- 0 30px 90px rgba(0,0,0,0.6),
313
- 0 10px 40px rgba(0,0,0,0.35);
314
- }
315
-
316
- /* Subtle glow behind devices */
317
- .showcase::before {
318
- content: '';
319
- position: absolute;
320
- top: 50%;
321
- left: 50%;
322
- transform: translate(-50%, -50%);
323
- width: 80%;
324
- height: 70%;
325
- background: radial-gradient(ellipse, rgba(108,99,255,0.12) 0%, transparent 70%);
326
- pointer-events: none;
327
- z-index: 0;
328
- }
329
-
330
374
  @media (max-width: 640px) {
331
- .hero { padding: 2rem 1.5rem 2rem; }
332
- .install { padding: 1.5rem; margin: 0 1rem 3rem; }
375
+ .hero { padding: 2rem 1.5rem 1.5rem; }
376
+ .install { padding: 1.5rem; margin: 2rem 1rem 3rem; }
333
377
  .showcase { margin-bottom: 3rem; }
334
378
  .device-ipad { width: 78%; }
335
379
  .device-iphone { width: 26%; margin-left: -10%; border-radius: 16px; }
380
+ .workflow-step { flex-direction: column; gap: 0.75rem; }
381
+ .workflow-step .step-icon { width: auto; }
336
382
  }
337
383
  </style>
338
384
  </head>
@@ -349,8 +395,8 @@
349
395
 
350
396
  <main>
351
397
  <section class="hero">
352
- <h1>Claude Code,<br><em>in your browser</em></h1>
353
- <p>Run Claude Code on your machine, use it from any browser.</p>
398
+ <h1>Remote Control for<br><em>Claude Code</em></h1>
399
+ <p>Start a task in your terminal, close the laptop and go for a walk &mdash; then <strong>pick it up from your phone, a tablet, or any browser</strong>. The session stays alive on your machine. Sleep, disconnect, switch networks &mdash; it auto-reconnects and keeps going.</p>
354
400
  </section>
355
401
 
356
402
  <section class="showcase">
@@ -363,7 +409,7 @@
363
409
  </section>
364
410
 
365
411
  <section class="install">
366
- <div class="install-label">Get started</div>
412
+ <div class="install-label">Get started in 30 seconds</div>
367
413
  <div class="install-step">
368
414
  <div class="step-num">1</div>
369
415
  <div class="install-cmd" onclick="copyCmd(this)">
@@ -381,32 +427,66 @@
381
427
  <div class="install-note">Open the URL it prints. That's it.</div>
382
428
  </section>
383
429
 
430
+ <section class="workflow">
431
+ <h2>How it works</h2>
432
+ <div class="workflow-steps">
433
+ <div class="workflow-step">
434
+ <div class="step-icon">&#128187;</div>
435
+ <div>
436
+ <h3>Start the agent on your dev machine</h3>
437
+ <p>Run <code>agentlink-client start -D</code> in your project directory. It prints a URL like <code>https://msclaude.ai/s/abc123</code>.</p>
438
+ </div>
439
+ </div>
440
+ <div class="workflow-step">
441
+ <div class="step-icon">&#128274;</div>
442
+ <div>
443
+ <h3>The relay encrypts everything</h3>
444
+ <p>Your messages and code travel through the relay server, but it can't read any of it. All traffic is end-to-end encrypted with XSalsa20-Poly1305. The server is a stateless, blind forwarder.</p>
445
+ </div>
446
+ </div>
447
+ <div class="workflow-step">
448
+ <div class="step-icon">&#128241;</div>
449
+ <div>
450
+ <h3>Open the URL on any device</h3>
451
+ <p>Your phone, a tablet, a colleague's laptop &mdash; any browser works. Kick off a refactoring task from your desk, then monitor progress from the couch.</p>
452
+ </div>
453
+ </div>
454
+ <div class="workflow-step">
455
+ <div class="step-icon">&#128260;</div>
456
+ <div>
457
+ <h3>Pick up where you left off</h3>
458
+ <p>Full session history from Claude Code's own logs. Resume any past conversation, switch projects, change working directories &mdash; all from the browser.</p>
459
+ </div>
460
+ </div>
461
+ </div>
462
+ </section>
463
+
384
464
  <section class="features">
385
465
  <h2 class="sr-only">Features</h2>
386
466
  <div class="feature">
387
467
  <div class="feature-icon">&#9889;</div>
388
468
  <h3>Zero config</h3>
389
- <p>Install, start, open the URL. No accounts, no setup, no configuration files needed.</p>
469
+ <p>Install, start, open the URL. No accounts, no registration, no configuration files.</p>
390
470
  </div>
391
471
  <div class="feature">
392
472
  <div class="feature-icon">&#128274;</div>
393
- <h3>Privacy first</h3>
394
- <p>All messages are end-to-end encrypted. The relay server cannot read, store, or log any of your conversations or code. It's a blind forwarder.</p>
395
- </div>
396
- <div class="feature">
397
- <div class="feature-icon">&#127760;</div>
398
- <h3>Access anywhere</h3>
399
- <p>Use Claude Code from your phone, tablet, or any device with a browser. Share the URL with teammates.</p>
473
+ <h3>Optional password protection</h3>
474
+ <p>Add <code style="color:var(--green)">--password</code> to lock your session. Brute-force protection built in.</p>
400
475
  </div>
401
476
  <div class="feature">
402
477
  <div class="feature-icon">&#128196;</div>
403
478
  <h3>Full Claude Code</h3>
404
- <p>File editing, bash commands, search, multi-turn conversations, session history — everything Claude Code can do.</p>
479
+ <p>File editing, bash commands, search, multi-turn conversations &mdash; everything Claude Code can do, in your browser.</p>
405
480
  </div>
406
481
  <div class="feature">
407
- <div class="feature-icon">&#128260;</div>
408
- <h3>Session history</h3>
409
- <p>Browse and resume any past conversation from any working directory. Switch projects without losing context.</p>
482
+ <div class="feature-icon">&#127760;</div>
483
+ <h3>Works on any device</h3>
484
+ <p>Responsive UI for phones, tablets, and desktops. Use Claude Code from anywhere with a browser.</p>
485
+ </div>
486
+ <div class="feature">
487
+ <div class="feature-icon">&#128640;</div>
488
+ <h3>Auto-updates</h3>
489
+ <p>The agent checks for updates and self-upgrades in daemon mode. Always on the latest version.</p>
410
490
  </div>
411
491
  <div class="feature">
412
492
  <div class="feature-icon">&#128679;</div>
@@ -414,11 +494,6 @@
414
494
  <p>Run your own relay server with <code style="color:var(--green)">@agent-link/server</code>. Full control over your infrastructure.</p>
415
495
  </div>
416
496
  </section>
417
-
418
- <section class="how">
419
- <h2>How it works</h2>
420
- <p>The agent on your machine spawns Claude Code, streams output through the relay server to your browser, and sends your messages back. All tool execution happens locally. <strong>All traffic is end-to-end encrypted — the server is a stateless relay that never decrypts, stores, or logs your data.</strong></p>
421
- </section>
422
497
  </main>
423
498
 
424
499
  <footer>