@agent-link/server 0.1.61 → 0.1.62

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.62",
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="Start Claude Code on your machine, walk away, and control it from your phone or any browser. End-to-end encrypted, zero config. npm install and go.">
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="Start Claude Code on your machine, walk away, and control it from your phone or any browser. End-to-end encrypted, zero config.">
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="Start Claude Code on your machine, walk away, and control it from your phone or any browser. End-to-end encrypted, zero config.">
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": "Start Claude Code on your machine, walk away, and control it from your phone or any browser. End-to-end encrypted, zero config.",
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,20 @@
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;
119
+ }
120
+
121
+ .hero-sub {
122
+ font-size: 1rem !important;
123
+ color: var(--text-dim);
124
+ max-width: 580px;
125
+ margin: 0 auto;
114
126
  }
115
127
 
116
128
  /* ── Install box ── */
@@ -120,7 +132,7 @@
120
132
  border-radius: 12px;
121
133
  padding: 2rem 2.5rem;
122
134
  max-width: 600px;
123
- margin: 0 auto 4rem;
135
+ margin: 2.5rem auto 4rem;
124
136
  text-align: left;
125
137
  }
126
138
 
@@ -191,6 +203,123 @@
191
203
  text-align: center;
192
204
  }
193
205
 
206
+ /* ── Device Showcase ── */
207
+ .showcase {
208
+ max-width: 900px;
209
+ margin: 0 auto 4rem;
210
+ padding: 0 2rem;
211
+ position: relative;
212
+ display: flex;
213
+ justify-content: center;
214
+ align-items: flex-end;
215
+ }
216
+
217
+ .device {
218
+ position: relative;
219
+ border-radius: 18px;
220
+ overflow: hidden;
221
+ box-shadow:
222
+ 0 0 0 1px rgba(255,255,255,0.06),
223
+ 0 25px 80px rgba(0,0,0,0.55),
224
+ 0 8px 32px rgba(0,0,0,0.3);
225
+ }
226
+
227
+ .device img {
228
+ display: block;
229
+ width: 100%;
230
+ height: auto;
231
+ }
232
+
233
+ .device-ipad {
234
+ width: 72%;
235
+ border-radius: 18px;
236
+ z-index: 1;
237
+ }
238
+
239
+ .device-iphone {
240
+ width: 22%;
241
+ border-radius: 24px;
242
+ z-index: 2;
243
+ margin-left: -8%;
244
+ margin-bottom: -2%;
245
+ box-shadow:
246
+ 0 0 0 1px rgba(255,255,255,0.08),
247
+ 0 30px 90px rgba(0,0,0,0.6),
248
+ 0 10px 40px rgba(0,0,0,0.35);
249
+ }
250
+
251
+ .showcase::before {
252
+ content: '';
253
+ position: absolute;
254
+ top: 50%;
255
+ left: 50%;
256
+ transform: translate(-50%, -50%);
257
+ width: 80%;
258
+ height: 70%;
259
+ background: radial-gradient(ellipse, rgba(108,99,255,0.12) 0%, transparent 70%);
260
+ pointer-events: none;
261
+ z-index: 0;
262
+ }
263
+
264
+ /* ── Workflow ── */
265
+ .workflow {
266
+ max-width: 800px;
267
+ margin: 0 auto 5rem;
268
+ padding: 0 2rem;
269
+ }
270
+
271
+ .workflow h2 {
272
+ font-size: 1.8rem;
273
+ font-weight: 700;
274
+ text-align: center;
275
+ margin-bottom: 2.5rem;
276
+ }
277
+
278
+ .workflow-steps {
279
+ display: flex;
280
+ flex-direction: column;
281
+ gap: 1.25rem;
282
+ }
283
+
284
+ .workflow-step {
285
+ display: flex;
286
+ align-items: flex-start;
287
+ gap: 1.25rem;
288
+ background: var(--surface);
289
+ border: 1px solid var(--border);
290
+ border-radius: 12px;
291
+ padding: 1.25rem 1.5rem;
292
+ }
293
+
294
+ .workflow-step .step-icon {
295
+ font-size: 1.5rem;
296
+ flex-shrink: 0;
297
+ width: 2rem;
298
+ text-align: center;
299
+ padding-top: 0.1rem;
300
+ }
301
+
302
+ .workflow-step h3 {
303
+ font-size: 1rem;
304
+ font-weight: 600;
305
+ margin-bottom: 0.3rem;
306
+ }
307
+
308
+ .workflow-step p {
309
+ font-size: 0.9rem;
310
+ color: var(--text-dim);
311
+ line-height: 1.5;
312
+ }
313
+
314
+ .workflow-step code {
315
+ font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
316
+ font-size: 0.85rem;
317
+ color: var(--green);
318
+ background: #1a1a2e;
319
+ padding: 0.15rem 0.4rem;
320
+ border-radius: 4px;
321
+ }
322
+
194
323
  /* ── Features ── */
195
324
  .features {
196
325
  display: grid;
@@ -225,25 +354,6 @@
225
354
  line-height: 1.5;
226
355
  }
227
356
 
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
357
  /* ── Footer ── */
248
358
  footer {
249
359
  text-align: center;
@@ -268,71 +378,14 @@
268
378
  border: 0;
269
379
  }
270
380
 
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
381
  @media (max-width: 640px) {
331
- .hero { padding: 2rem 1.5rem 2rem; }
332
- .install { padding: 1.5rem; margin: 0 1rem 3rem; }
382
+ .hero { padding: 2rem 1.5rem 1.5rem; }
383
+ .install { padding: 1.5rem; margin: 2rem 1rem 3rem; }
333
384
  .showcase { margin-bottom: 3rem; }
334
385
  .device-ipad { width: 78%; }
335
386
  .device-iphone { width: 26%; margin-left: -10%; border-radius: 16px; }
387
+ .workflow-step { flex-direction: column; gap: 0.75rem; }
388
+ .workflow-step .step-icon { width: auto; }
336
389
  }
337
390
  </style>
338
391
  </head>
@@ -349,8 +402,9 @@
349
402
 
350
403
  <main>
351
404
  <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>
405
+ <h1>Start a task. Walk away.<br><em>Control it from your phone.</em></h1>
406
+ <p>Run Claude Code on your machine, then <strong>pick up where you left off from any browser</strong> &mdash; your phone, your tablet, another laptop. No VPN, no SSH, no port forwarding.</p>
407
+ <p class="hero-sub">One command. One URL. End-to-end encrypted.</p>
354
408
  </section>
355
409
 
356
410
  <section class="showcase">
@@ -363,7 +417,7 @@
363
417
  </section>
364
418
 
365
419
  <section class="install">
366
- <div class="install-label">Get started</div>
420
+ <div class="install-label">Get started in 30 seconds</div>
367
421
  <div class="install-step">
368
422
  <div class="step-num">1</div>
369
423
  <div class="install-cmd" onclick="copyCmd(this)">
@@ -381,32 +435,66 @@
381
435
  <div class="install-note">Open the URL it prints. That's it.</div>
382
436
  </section>
383
437
 
438
+ <section class="workflow">
439
+ <h2>How it works</h2>
440
+ <div class="workflow-steps">
441
+ <div class="workflow-step">
442
+ <div class="step-icon">&#128187;</div>
443
+ <div>
444
+ <h3>Start the agent on your dev machine</h3>
445
+ <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>
446
+ </div>
447
+ </div>
448
+ <div class="workflow-step">
449
+ <div class="step-icon">&#128274;</div>
450
+ <div>
451
+ <h3>The relay encrypts everything</h3>
452
+ <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>
453
+ </div>
454
+ </div>
455
+ <div class="workflow-step">
456
+ <div class="step-icon">&#128241;</div>
457
+ <div>
458
+ <h3>Open the URL on any device</h3>
459
+ <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>
460
+ </div>
461
+ </div>
462
+ <div class="workflow-step">
463
+ <div class="step-icon">&#128260;</div>
464
+ <div>
465
+ <h3>Pick up where you left off</h3>
466
+ <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>
467
+ </div>
468
+ </div>
469
+ </div>
470
+ </section>
471
+
384
472
  <section class="features">
385
473
  <h2 class="sr-only">Features</h2>
386
474
  <div class="feature">
387
475
  <div class="feature-icon">&#9889;</div>
388
476
  <h3>Zero config</h3>
389
- <p>Install, start, open the URL. No accounts, no setup, no configuration files needed.</p>
477
+ <p>Install, start, open the URL. No accounts, no registration, no configuration files.</p>
390
478
  </div>
391
479
  <div class="feature">
392
480
  <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>
481
+ <h3>Optional password protection</h3>
482
+ <p>Add <code style="color:var(--green)">--password</code> to lock your session. Brute-force protection built in.</p>
400
483
  </div>
401
484
  <div class="feature">
402
485
  <div class="feature-icon">&#128196;</div>
403
486
  <h3>Full Claude Code</h3>
404
- <p>File editing, bash commands, search, multi-turn conversations, session history — everything Claude Code can do.</p>
487
+ <p>File editing, bash commands, search, multi-turn conversations &mdash; everything Claude Code can do, in your browser.</p>
405
488
  </div>
406
489
  <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>
490
+ <div class="feature-icon">&#127760;</div>
491
+ <h3>Works on any device</h3>
492
+ <p>Responsive UI for phones, tablets, and desktops. Use Claude Code from anywhere with a browser.</p>
493
+ </div>
494
+ <div class="feature">
495
+ <div class="feature-icon">&#128640;</div>
496
+ <h3>Auto-updates</h3>
497
+ <p>The agent checks for updates and self-upgrades in daemon mode. Always on the latest version.</p>
410
498
  </div>
411
499
  <div class="feature">
412
500
  <div class="feature-icon">&#128679;</div>
@@ -414,11 +502,6 @@
414
502
  <p>Run your own relay server with <code style="color:var(--green)">@agent-link/server</code>. Full control over your infrastructure.</p>
415
503
  </div>
416
504
  </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
505
  </main>
423
506
 
424
507
  <footer>