@agent-link/server 0.1.536 → 0.1.538
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 +1 -1
- package/web/dist/landing/icons/agent-claude.svg +1 -0
- package/web/dist/landing/icons/agent-codex.svg +1 -0
- package/web/dist/landing/icons/agent-copilot.svg +1 -0
- package/web/dist/landing/icons/agent-pi.svg +5 -0
- package/web/dist/landing/icons/msclaude-animated.svg +43 -0
- package/web/dist/landing/landing.css +1228 -0
- package/web/dist/landing/landing.js +71 -0
- package/web/dist/landing.html +212 -572
- package/web/dist/landing.zh.html +212 -567
- package/web/dist/robots.txt +4 -0
- package/web/dist/site.webmanifest +21 -0
- package/web/dist/sitemap.xml +16 -0
package/web/dist/landing.html
CHANGED
|
@@ -1,593 +1,233 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>msclaude —
|
|
7
|
-
<meta name="description" content="
|
|
8
|
-
<meta name="
|
|
9
|
-
<
|
|
10
|
-
<
|
|
11
|
-
<link rel="
|
|
12
|
-
<link rel="alternate" hreflang="
|
|
13
|
-
<
|
|
14
|
-
<
|
|
15
|
-
<meta property="og:
|
|
16
|
-
<meta property="og:
|
|
17
|
-
<meta property="og:
|
|
18
|
-
<meta property="og:
|
|
19
|
-
<meta
|
|
20
|
-
<meta
|
|
21
|
-
<meta
|
|
22
|
-
<meta
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
<
|
|
26
|
-
<
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
radial-gradient(circle at top left, rgba(1, 139, 141, 0.12), transparent 32rem),
|
|
68
|
-
linear-gradient(180deg, #ffffff 0%, var(--bg) 55%, #ffffff 100%);
|
|
69
|
-
color: var(--text);
|
|
70
|
-
font-family: 'Space Grotesk', system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
|
|
71
|
-
line-height: 1.6;
|
|
72
|
-
-webkit-font-smoothing: antialiased;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
a { color: inherit; text-decoration: none; }
|
|
76
|
-
|
|
77
|
-
nav, main, footer {
|
|
78
|
-
width: min(1120px, calc(100% - 32px));
|
|
79
|
-
margin: 0 auto;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
nav {
|
|
83
|
-
display: flex;
|
|
84
|
-
align-items: center;
|
|
85
|
-
justify-content: space-between;
|
|
86
|
-
padding: 24px 0;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
.logo {
|
|
90
|
-
display: inline-flex;
|
|
91
|
-
align-items: center;
|
|
92
|
-
gap: 10px;
|
|
93
|
-
font-weight: 700;
|
|
94
|
-
letter-spacing: -0.03em;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
.logo img { width: 28px; height: 28px; border-radius: 8px; }
|
|
98
|
-
|
|
99
|
-
.nav-actions {
|
|
100
|
-
align-items: center;
|
|
101
|
-
display: flex;
|
|
102
|
-
gap: 10px;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
.repo-link,
|
|
106
|
-
.nav-lang {
|
|
107
|
-
border: 1px solid var(--border);
|
|
108
|
-
border-radius: 999px;
|
|
109
|
-
color: var(--muted);
|
|
110
|
-
font-size: 0.86rem;
|
|
111
|
-
font-weight: 600;
|
|
112
|
-
padding: 8px 13px;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.repo-link:hover,
|
|
116
|
-
.nav-lang:hover { color: var(--text); background: #fff; }
|
|
117
|
-
|
|
118
|
-
.hero {
|
|
119
|
-
display: grid;
|
|
120
|
-
grid-template-columns: minmax(0, 1.1fr) minmax(320px, 0.9fr);
|
|
121
|
-
gap: 56px;
|
|
122
|
-
align-items: center;
|
|
123
|
-
padding: 70px 0 42px;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
.eyebrow {
|
|
127
|
-
display: inline-flex;
|
|
128
|
-
align-items: center;
|
|
129
|
-
gap: 8px;
|
|
130
|
-
background: var(--accent-soft);
|
|
131
|
-
border: 1px solid #c8eeee;
|
|
132
|
-
border-radius: 999px;
|
|
133
|
-
color: var(--accent);
|
|
134
|
-
font-size: 0.82rem;
|
|
135
|
-
font-weight: 700;
|
|
136
|
-
margin-bottom: 22px;
|
|
137
|
-
padding: 7px 13px;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
.eyebrow::before {
|
|
141
|
-
content: "";
|
|
142
|
-
width: 7px;
|
|
143
|
-
height: 7px;
|
|
144
|
-
background: var(--green);
|
|
145
|
-
border-radius: 999px;
|
|
146
|
-
box-shadow: 0 0 0 4px rgba(22, 163, 74, 0.12);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
h1 {
|
|
150
|
-
max-width: 720px;
|
|
151
|
-
font-size: clamp(2.75rem, 6vw, 5.6rem);
|
|
152
|
-
letter-spacing: -0.07em;
|
|
153
|
-
line-height: 0.96;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
h1 span { color: var(--accent); }
|
|
157
|
-
|
|
158
|
-
h1 .preposition {
|
|
159
|
-
color: var(--text);
|
|
160
|
-
font-size: 0.48em;
|
|
161
|
-
letter-spacing: -0.04em;
|
|
162
|
-
vertical-align: 0.18em;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
.lead {
|
|
166
|
-
max-width: 640px;
|
|
167
|
-
color: var(--muted);
|
|
168
|
-
font-size: clamp(1rem, 2vw, 1.2rem);
|
|
169
|
-
margin: 24px 0 30px;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
.agent-row {
|
|
173
|
-
display: flex;
|
|
174
|
-
flex-wrap: wrap;
|
|
175
|
-
gap: 10px;
|
|
176
|
-
margin-bottom: 32px;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
.agent-pill {
|
|
180
|
-
align-items: center;
|
|
181
|
-
background: rgba(255, 255, 255, 0.78);
|
|
182
|
-
border: 1px solid var(--border);
|
|
183
|
-
border-radius: 999px;
|
|
184
|
-
color: #334155;
|
|
185
|
-
display: inline-flex;
|
|
186
|
-
font-size: 0.92rem;
|
|
187
|
-
font-weight: 650;
|
|
188
|
-
gap: 8px;
|
|
189
|
-
padding: 9px 14px;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
.agent-pill::before {
|
|
193
|
-
content: "";
|
|
194
|
-
width: 8px;
|
|
195
|
-
height: 8px;
|
|
196
|
-
border-radius: 99px;
|
|
197
|
-
background: var(--accent);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
.cta-row {
|
|
201
|
-
display: flex;
|
|
202
|
-
align-items: flex-start;
|
|
203
|
-
flex-direction: column;
|
|
204
|
-
gap: 14px;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
.cta-primary {
|
|
208
|
-
align-items: center;
|
|
209
|
-
background: var(--text);
|
|
210
|
-
border: 0;
|
|
211
|
-
border-radius: 14px;
|
|
212
|
-
color: #fff;
|
|
213
|
-
cursor: pointer;
|
|
214
|
-
display: inline-flex;
|
|
215
|
-
font: inherit;
|
|
216
|
-
font-size: 0.95rem;
|
|
217
|
-
font-weight: 700;
|
|
218
|
-
gap: 8px;
|
|
219
|
-
padding: 13px 18px;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
.install-command {
|
|
223
|
-
background: #fff;
|
|
224
|
-
border: 1px solid var(--border);
|
|
225
|
-
border-radius: 14px;
|
|
226
|
-
color: #334155;
|
|
227
|
-
cursor: pointer;
|
|
228
|
-
font-family: Consolas, 'Courier New', monospace;
|
|
229
|
-
font-size: 0.9rem;
|
|
230
|
-
overflow-x: auto;
|
|
231
|
-
padding: 12px 14px;
|
|
232
|
-
width: min(100%, 560px);
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
.install-command span { display: block; white-space: nowrap; }
|
|
236
|
-
|
|
237
|
-
.panel {
|
|
238
|
-
background: rgba(255, 255, 255, 0.82);
|
|
239
|
-
border: 1px solid var(--border);
|
|
240
|
-
border-radius: 28px;
|
|
241
|
-
box-shadow: 0 24px 80px rgba(15, 23, 42, 0.10);
|
|
242
|
-
padding: 18px;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
.workspace {
|
|
246
|
-
background: #fff;
|
|
247
|
-
border: 1px solid var(--border);
|
|
248
|
-
border-radius: 22px;
|
|
249
|
-
overflow: hidden;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
.workspace-top {
|
|
253
|
-
align-items: center;
|
|
254
|
-
background: var(--surface);
|
|
255
|
-
border-bottom: 1px solid var(--border);
|
|
256
|
-
color: var(--muted);
|
|
257
|
-
display: flex;
|
|
258
|
-
font-size: 0.78rem;
|
|
259
|
-
font-weight: 700;
|
|
260
|
-
justify-content: space-between;
|
|
261
|
-
padding: 13px 16px;
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
.workspace-body {
|
|
265
|
-
display: grid;
|
|
266
|
-
grid-template-columns: 0.95fr 1.4fr;
|
|
267
|
-
min-height: 330px;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
.sidebar {
|
|
271
|
-
background: #f8fafc;
|
|
272
|
-
border-right: 1px solid var(--border);
|
|
273
|
-
padding: 16px;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
.session {
|
|
277
|
-
border: 1px solid transparent;
|
|
278
|
-
border-radius: 14px;
|
|
279
|
-
color: var(--muted);
|
|
280
|
-
font-size: 0.82rem;
|
|
281
|
-
margin-bottom: 10px;
|
|
282
|
-
padding: 10px;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
.session strong { color: var(--text); display: block; font-size: 0.9rem; }
|
|
286
|
-
.session.active { background: #fff; border-color: var(--border); box-shadow: 0 8px 24px rgba(15, 23, 42, 0.05); }
|
|
287
|
-
|
|
288
|
-
.content { display: flex; flex-direction: column; padding: 16px; gap: 12px; }
|
|
289
|
-
|
|
290
|
-
.chat-card, .file-card, .terminal {
|
|
291
|
-
border: 1px solid var(--border);
|
|
292
|
-
border-radius: 16px;
|
|
293
|
-
padding: 14px;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
.chat-card { background: linear-gradient(135deg, #eef4ff, #ffffff); }
|
|
297
|
-
.chat-card b, .file-card b { display: block; font-size: 0.86rem; margin-bottom: 4px; }
|
|
298
|
-
.chat-card p, .file-card p { color: var(--muted); font-size: 0.82rem; }
|
|
299
|
-
|
|
300
|
-
.terminal {
|
|
301
|
-
background: var(--code);
|
|
302
|
-
color: #dbeafe;
|
|
303
|
-
cursor: pointer;
|
|
304
|
-
font-family: Consolas, 'Courier New', monospace;
|
|
305
|
-
font-size: 0.78rem;
|
|
306
|
-
line-height: 1.8;
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
.terminal span { color: #86efac; }
|
|
310
|
-
|
|
311
|
-
.section-head {
|
|
312
|
-
margin: 72px auto 26px;
|
|
313
|
-
max-width: 680px;
|
|
314
|
-
text-align: center;
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
.section-head h2 {
|
|
318
|
-
font-size: clamp(1.8rem, 3.6vw, 3rem);
|
|
319
|
-
letter-spacing: -0.05em;
|
|
320
|
-
line-height: 1.05;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
.section-head p {
|
|
324
|
-
color: var(--muted);
|
|
325
|
-
margin-top: 12px;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
.features {
|
|
329
|
-
display: grid;
|
|
330
|
-
gap: 16px;
|
|
331
|
-
grid-template-columns: repeat(4, 1fr);
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
.feature-card {
|
|
335
|
-
background: var(--card);
|
|
336
|
-
border: 1px solid var(--border);
|
|
337
|
-
border-radius: 22px;
|
|
338
|
-
padding: 22px;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
.feature-card h3 {
|
|
342
|
-
font-size: 1rem;
|
|
343
|
-
letter-spacing: -0.02em;
|
|
344
|
-
margin: 14px 0 7px;
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
.feature-card p {
|
|
348
|
-
color: var(--muted);
|
|
349
|
-
font-size: 0.9rem;
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
.feature-icon {
|
|
353
|
-
align-items: center;
|
|
354
|
-
background: var(--accent-soft);
|
|
355
|
-
border-radius: 14px;
|
|
356
|
-
color: var(--accent);
|
|
357
|
-
display: flex;
|
|
358
|
-
height: 42px;
|
|
359
|
-
justify-content: center;
|
|
360
|
-
width: 42px;
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
.feature-icon svg {
|
|
364
|
-
fill: none;
|
|
365
|
-
height: 21px;
|
|
366
|
-
stroke: currentColor;
|
|
367
|
-
stroke-linecap: round;
|
|
368
|
-
stroke-linejoin: round;
|
|
369
|
-
stroke-width: 2;
|
|
370
|
-
width: 21px;
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
.security {
|
|
374
|
-
align-items: center;
|
|
375
|
-
background: #0f172a;
|
|
376
|
-
border-radius: 28px;
|
|
377
|
-
color: #fff;
|
|
378
|
-
display: grid;
|
|
379
|
-
gap: 28px;
|
|
380
|
-
grid-template-columns: 1.1fr 0.9fr;
|
|
381
|
-
margin-top: 18px;
|
|
382
|
-
padding: 30px;
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
.security h2 { font-size: clamp(1.6rem, 3vw, 2.5rem); letter-spacing: -0.05em; line-height: 1.05; }
|
|
386
|
-
.security p { color: #b6c3d7; margin-top: 12px; }
|
|
387
|
-
|
|
388
|
-
.encrypt-flow {
|
|
389
|
-
background: rgba(255, 255, 255, 0.06);
|
|
390
|
-
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
391
|
-
border-radius: 20px;
|
|
392
|
-
color: #cbd5e1;
|
|
393
|
-
display: grid;
|
|
394
|
-
font-family: Consolas, 'Courier New', monospace;
|
|
395
|
-
gap: 10px;
|
|
396
|
-
padding: 16px;
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
.encrypt-flow div {
|
|
400
|
-
align-items: center;
|
|
401
|
-
display: flex;
|
|
402
|
-
justify-content: space-between;
|
|
403
|
-
gap: 14px;
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
.encrypt-flow span:last-child { color: #86efac; }
|
|
407
|
-
|
|
408
|
-
footer {
|
|
409
|
-
border-top: 1px solid var(--border);
|
|
410
|
-
color: var(--muted);
|
|
411
|
-
display: flex;
|
|
412
|
-
font-size: 0.86rem;
|
|
413
|
-
justify-content: space-between;
|
|
414
|
-
margin-top: 76px;
|
|
415
|
-
padding: 28px 0;
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
.toast {
|
|
419
|
-
background: var(--text);
|
|
420
|
-
border-radius: 999px;
|
|
421
|
-
bottom: 24px;
|
|
422
|
-
color: #fff;
|
|
423
|
-
font-size: 0.84rem;
|
|
424
|
-
font-weight: 700;
|
|
425
|
-
left: 50%;
|
|
426
|
-
opacity: 0;
|
|
427
|
-
padding: 10px 18px;
|
|
428
|
-
pointer-events: none;
|
|
429
|
-
position: fixed;
|
|
430
|
-
transform: translate(-50%, 16px);
|
|
431
|
-
transition: opacity 0.22s, transform 0.22s;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
.toast.show { opacity: 1; transform: translate(-50%, 0); }
|
|
435
|
-
|
|
436
|
-
@media (max-width: 900px) {
|
|
437
|
-
.hero, .security { grid-template-columns: 1fr; }
|
|
438
|
-
.hero { padding-top: 44px; }
|
|
439
|
-
.features { grid-template-columns: repeat(2, 1fr); }
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
@media (max-width: 620px) {
|
|
443
|
-
nav, main, footer { width: min(100% - 24px, 1120px); }
|
|
444
|
-
h1 { font-size: clamp(2.35rem, 15vw, 4rem); }
|
|
445
|
-
.workspace-body { grid-template-columns: 1fr; }
|
|
446
|
-
.sidebar { border-right: 0; border-bottom: 1px solid var(--border); }
|
|
447
|
-
.features { grid-template-columns: 1fr; }
|
|
448
|
-
.security { padding: 22px; }
|
|
449
|
-
footer { flex-direction: column; gap: 8px; }
|
|
450
|
-
}
|
|
451
|
-
</style>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>msclaude — Remote Control for Local Coding Agents</title>
|
|
7
|
+
<meta name="description" content="Control Pi, GitHub Copilot, Claude Code, and OpenAI Codex on your development machine from a browser. Manage parallel sessions with end-to-end encryption.">
|
|
8
|
+
<meta name="robots" content="index, follow, max-image-preview:large">
|
|
9
|
+
<meta name="application-name" content="msclaude">
|
|
10
|
+
<meta name="theme-color" content="#f2efe8">
|
|
11
|
+
<link rel="canonical" href="https://msclaude.ai/">
|
|
12
|
+
<link rel="alternate" hreflang="en" href="https://msclaude.ai/">
|
|
13
|
+
<link rel="alternate" hreflang="zh-CN" href="https://msclaude.ai/zh">
|
|
14
|
+
<link rel="alternate" hreflang="x-default" href="https://msclaude.ai/">
|
|
15
|
+
<meta property="og:type" content="website">
|
|
16
|
+
<meta property="og:site_name" content="msclaude">
|
|
17
|
+
<meta property="og:locale" content="en_US">
|
|
18
|
+
<meta property="og:locale:alternate" content="zh_CN">
|
|
19
|
+
<meta property="og:title" content="msclaude — Remote Control for Local Coding Agents">
|
|
20
|
+
<meta property="og:description" content="Use multiple coding agents and working directories from one browser workspace. Code and execution stay on your development machine.">
|
|
21
|
+
<meta property="og:url" content="https://msclaude.ai/">
|
|
22
|
+
<meta property="og:image" content="https://msclaude.ai/iPad.png">
|
|
23
|
+
<meta property="og:image:alt" content="msclaude browser workspace showing parallel coding agent sessions">
|
|
24
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
25
|
+
<meta name="twitter:title" content="msclaude — Remote Control for Local Coding Agents">
|
|
26
|
+
<meta name="twitter:description" content="Manage Pi, Copilot, Claude Code, and Codex sessions on your development machine from a browser.">
|
|
27
|
+
<meta name="twitter:image" content="https://msclaude.ai/iPad.png">
|
|
28
|
+
<meta name="twitter:image:alt" content="msclaude browser workspace showing parallel coding agent sessions">
|
|
29
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
|
30
|
+
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
31
|
+
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
32
|
+
<link rel="manifest" href="/site.webmanifest">
|
|
33
|
+
<link rel="preload" href="/vendor/SpaceGrotesk-latin.woff2" as="font" type="font/woff2" crossorigin>
|
|
34
|
+
<link rel="stylesheet" href="/landing/landing.css">
|
|
35
|
+
<script src="/landing/landing.js" defer></script>
|
|
36
|
+
<script type="application/ld+json">
|
|
37
|
+
{
|
|
38
|
+
"@context": "https://schema.org",
|
|
39
|
+
"@type": "SoftwareApplication",
|
|
40
|
+
"name": "msclaude",
|
|
41
|
+
"url": "https://msclaude.ai/",
|
|
42
|
+
"description": "A browser workspace for remotely controlling coding agents running on your development machine.",
|
|
43
|
+
"applicationCategory": "DeveloperApplication",
|
|
44
|
+
"operatingSystem": "Windows, macOS, Linux",
|
|
45
|
+
"isAccessibleForFree": true,
|
|
46
|
+
"downloadUrl": "https://www.npmjs.com/package/@agent-link/agent",
|
|
47
|
+
"softwareRequirements": "Node.js 18 or later",
|
|
48
|
+
"featureList": [
|
|
49
|
+
"Parallel coding agent sessions",
|
|
50
|
+
"Multiple working directories",
|
|
51
|
+
"Pi, GitHub Copilot, Claude Code, and OpenAI Codex support",
|
|
52
|
+
"Files, Git, terminal, and local port access",
|
|
53
|
+
"End-to-end encrypted messages",
|
|
54
|
+
"Self-hosted relay server"
|
|
55
|
+
],
|
|
56
|
+
"offers": {
|
|
57
|
+
"@type": "Offer",
|
|
58
|
+
"price": "0",
|
|
59
|
+
"priceCurrency": "USD"
|
|
60
|
+
},
|
|
61
|
+
"sameAs": [
|
|
62
|
+
"https://github.com/kailunshi_microsoft/AgenticWorker",
|
|
63
|
+
"https://www.npmjs.com/package/@agent-link/agent"
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
</script>
|
|
452
67
|
</head>
|
|
453
|
-
<body
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
<a href="/
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
</
|
|
466
|
-
|
|
467
|
-
<
|
|
468
|
-
|
|
469
|
-
<div>
|
|
470
|
-
<div class="eyebrow">Remote workspace for coding agents</div>
|
|
471
|
-
<h1>Remote control <span class="preposition">for</span><br><span>coding agents.</span></h1>
|
|
472
|
-
<p class="lead">msclaude connects your local project to a private web workspace, so you can drive Copilot, Claude Code, Codex, and other agents from any device.</p>
|
|
473
|
-
<div class="agent-row" aria-label="Supported agents">
|
|
474
|
-
<span class="agent-pill">GitHub Copilot</span>
|
|
475
|
-
<span class="agent-pill">Claude Code</span>
|
|
476
|
-
<span class="agent-pill">OpenAI Codex</span>
|
|
477
|
-
<span class="agent-pill">More agent backends</span>
|
|
68
|
+
<body
|
|
69
|
+
data-install-command="npm install -g @agent-link/agent && agentlink-client start --daemon"
|
|
70
|
+
data-copy-success="Install command copied"
|
|
71
|
+
data-copy-failure="Copy failed — select the command manually"
|
|
72
|
+
>
|
|
73
|
+
<a class="skip-link" href="#main">Skip to content</a>
|
|
74
|
+
|
|
75
|
+
<header class="site-header">
|
|
76
|
+
<nav class="nav-shell" aria-label="Primary navigation">
|
|
77
|
+
<a class="brand" href="/" aria-label="msclaude home">
|
|
78
|
+
<img class="brand-mark" src="/landing/icons/msclaude-animated.svg" alt="">
|
|
79
|
+
<span>msclaude</span>
|
|
80
|
+
</a>
|
|
81
|
+
<div class="nav-actions">
|
|
82
|
+
<a class="text-link github-link" href="https://github.com/kailunshi_microsoft/AgenticWorker" target="_blank" rel="noopener">GitHub</a>
|
|
83
|
+
<a class="language-link" href="/zh" lang="zh-CN" hreflang="zh-CN">中文</a>
|
|
478
84
|
</div>
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
85
|
+
</nav>
|
|
86
|
+
</header>
|
|
87
|
+
|
|
88
|
+
<main id="main">
|
|
89
|
+
<section class="hero" aria-labelledby="hero-title">
|
|
90
|
+
<div class="hero-copy">
|
|
91
|
+
<p class="eyebrow"><span></span> Open Source Remote workspace for local agents</p>
|
|
92
|
+
<h1 id="hero-title">Control coding agents on your development machine <em>from a browser.</em></h1>
|
|
93
|
+
<p class="hero-lead">msclaude connects your browser to coding agents running locally. Continue development work remotely while your code, tools, and execution environment remain on your machine.</p>
|
|
94
|
+
|
|
95
|
+
<div class="agent-list" aria-label="Supported coding agents">
|
|
96
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-pi.svg" alt=""></i> Pi</span>
|
|
97
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-copilot.svg" alt=""></i> GitHub Copilot</span>
|
|
98
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-claude.svg" alt=""></i> Claude Code</span>
|
|
99
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-codex.svg" alt=""></i> OpenAI Codex</span>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
<div class="hero-actions">
|
|
103
|
+
<button class="install-command" type="button" data-copy-install>
|
|
104
|
+
<span class="install-prompt" aria-hidden="true">$</span>
|
|
105
|
+
<code><span>npm install -g @agent-link/agent</span><span>agentlink-client start --daemon</span></code>
|
|
106
|
+
<span class="copy-label">Copy</span>
|
|
107
|
+
</button>
|
|
108
|
+
</div>
|
|
109
|
+
<p class="compatibility">Windows · macOS · Linux · Node.js 18+</p>
|
|
488
110
|
</div>
|
|
489
|
-
</div>
|
|
490
111
|
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
<span>msclaude
|
|
495
|
-
<span
|
|
112
|
+
<div class="product-window" aria-label="Illustration of parallel coding agent sessions">
|
|
113
|
+
<div class="window-bar">
|
|
114
|
+
<span class="window-dots" aria-hidden="true"><i></i><i></i><i></i></span>
|
|
115
|
+
<span>msclaude · 4 sessions</span>
|
|
116
|
+
<span class="encrypted-label">● E2E encrypted</span>
|
|
496
117
|
</div>
|
|
497
|
-
<div class="
|
|
498
|
-
<
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
</div>
|
|
509
|
-
<div class="
|
|
510
|
-
|
|
511
|
-
|
|
118
|
+
<div class="provider-switcher" aria-label="Four supported agents">
|
|
119
|
+
<span class="provider-switcher-label">Agents on this page</span>
|
|
120
|
+
<span class="active"><i class="provider-icon"><img src="/landing/icons/agent-pi.svg" alt=""></i>Pi <b>1</b></span>
|
|
121
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-copilot.svg" alt=""></i>Copilot <b>1</b></span>
|
|
122
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-claude.svg" alt=""></i>Claude Code <b>1</b></span>
|
|
123
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-codex.svg" alt=""></i>Codex <b>1</b></span>
|
|
124
|
+
</div>
|
|
125
|
+
<div class="workspace-ui">
|
|
126
|
+
<aside class="session-sidebar">
|
|
127
|
+
<div class="sidebar-title"><strong>Sessions</strong><span>+</span></div>
|
|
128
|
+
<div class="directory-label">Q:\src\frontend</div>
|
|
129
|
+
<div class="session-row active"><i class="provider-icon"><img src="/landing/icons/agent-pi.svg" alt=""></i><span><strong>Landing page copy</strong><small>Pi · working</small></span><b></b></div>
|
|
130
|
+
<div class="session-row"><i class="provider-icon"><img src="/landing/icons/agent-copilot.svg" alt=""></i><span><strong>Fix auth callback</strong><small>Copilot · done</small></span></div>
|
|
131
|
+
<div class="directory-label">D:\work\api</div>
|
|
132
|
+
<div class="session-row"><i class="provider-icon"><img src="/landing/icons/agent-claude.svg" alt=""></i><span><strong>Review API changes</strong><small>Claude Code · working</small></span><b></b></div>
|
|
133
|
+
<div class="session-row"><i class="provider-icon"><img src="/landing/icons/agent-codex.svg" alt=""></i><span><strong>Update unit tests</strong><small>Codex · done</small></span></div>
|
|
134
|
+
</aside>
|
|
135
|
+
<div class="chat-ui">
|
|
136
|
+
<div class="chat-head">
|
|
137
|
+
<div><strong>Landing page copy</strong><small>Q:\src\frontend · Pi</small></div>
|
|
138
|
+
<div class="chat-actions"><span>Files</span><span>Git</span><span>Terminal</span></div>
|
|
512
139
|
</div>
|
|
513
|
-
<div class="
|
|
514
|
-
|
|
140
|
+
<div class="chat-body">
|
|
141
|
+
<div class="message user-message">Update the landing page copy and keep the layout compact.</div>
|
|
142
|
+
<div class="message agent-message">
|
|
143
|
+
<span class="message-author"><i class="provider-icon"><img src="/landing/icons/agent-pi.svg" alt=""></i> Pi</span>
|
|
144
|
+
<p>I’ll revise the product description, keep the supported agents visible, and fit the main content within two screens.</p>
|
|
145
|
+
<div class="tool-call"><span>✓</span><div><strong>apply_patch</strong><small>Updated landing.html and landing.css</small></div></div>
|
|
146
|
+
</div>
|
|
515
147
|
</div>
|
|
148
|
+
<div class="chat-input"><span>Ask Pi to continue...</span><button aria-label="Send message">↑</button></div>
|
|
516
149
|
</div>
|
|
517
150
|
</div>
|
|
518
151
|
</div>
|
|
519
|
-
</
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
152
|
+
</section>
|
|
153
|
+
|
|
154
|
+
<section class="capabilities" id="sessions" aria-labelledby="capabilities-title">
|
|
155
|
+
<div class="section-intro">
|
|
156
|
+
<p class="section-label">Workspace</p>
|
|
157
|
+
<div>
|
|
158
|
+
<h2 id="capabilities-title">Multiple agents and projects, on one page.</h2>
|
|
159
|
+
<p>Keep sessions from different agents and working directories open at the same time. Check progress and send follow-up instructions without switching terminals or browser tabs.</p>
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
527
162
|
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
163
|
+
<div class="capability-grid">
|
|
164
|
+
<article class="capability-card sessions-card">
|
|
165
|
+
<div class="card-icon">▦</div>
|
|
166
|
+
<div>
|
|
167
|
+
<h3>Parallel sessions</h3>
|
|
168
|
+
<p>Run several agent sessions, organize them by working directory, and search previous conversations.</p>
|
|
169
|
+
</div>
|
|
170
|
+
<div class="session-stack" aria-hidden="true">
|
|
171
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-pi.svg" alt=""></i><b>Pi</b><small>Q:\src\frontend</small><em>Working</em></span>
|
|
172
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-claude.svg" alt=""></i><b>Claude Code</b><small>D:\work\api</small><em>Working</em></span>
|
|
173
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-codex.svg" alt=""></i><b>Codex</b><small>C:\repo\mobile</small><em>Done</em></span>
|
|
174
|
+
</div>
|
|
175
|
+
</article>
|
|
176
|
+
|
|
177
|
+
<article class="capability-card tools-card" id="tools">
|
|
178
|
+
<div class="card-icon">>_</div>
|
|
179
|
+
<h3>Chat and developer tools</h3>
|
|
180
|
+
<p>Chat is the main workflow. Project tools stay available alongside the conversation when more context or control is needed.</p>
|
|
181
|
+
<ul class="tool-list">
|
|
182
|
+
<li>Files <small>Browse, preview, edit</small></li>
|
|
183
|
+
<li>Git <small>Status and diffs</small></li>
|
|
184
|
+
<li>Terminal <small>Run local commands</small></li>
|
|
185
|
+
<li>Port Proxy <small>Open local servers</small></li>
|
|
186
|
+
</ul>
|
|
187
|
+
</article>
|
|
188
|
+
|
|
189
|
+
<article class="capability-card steps-card">
|
|
190
|
+
<p class="section-label">How it works</p>
|
|
191
|
+
<ol>
|
|
192
|
+
<li><span>1</span><div><strong>Start locally</strong><small>Run msclaude in a working directory.</small></div></li>
|
|
193
|
+
<li><span>2</span><div><strong>Open the URL</strong><small>Use the generated session link on another device.</small></div></li>
|
|
194
|
+
<li><span>3</span><div><strong>Continue working</strong><small>Use chat, files, Git, and terminal remotely.</small></div></li>
|
|
195
|
+
</ol>
|
|
196
|
+
</article>
|
|
197
|
+
</div>
|
|
198
|
+
</section>
|
|
199
|
+
|
|
200
|
+
<section class="trust-section" aria-label="Security and self-hosting">
|
|
201
|
+
<article class="trust-card" id="security">
|
|
202
|
+
<div>
|
|
203
|
+
<p class="section-label">End-to-end encryption</p>
|
|
204
|
+
<h2>The relay cannot read your work.</h2>
|
|
205
|
+
<p>Messages are encrypted between the browser and local agent. The relay cannot read prompts, responses, tool output, or file contents. Code and execution remain on your development machine.</p>
|
|
206
|
+
</div>
|
|
538
207
|
</article>
|
|
539
|
-
<article class="
|
|
540
|
-
<div
|
|
541
|
-
|
|
542
|
-
|
|
208
|
+
<article class="trust-card">
|
|
209
|
+
<div>
|
|
210
|
+
<p class="section-label">Access from any device</p>
|
|
211
|
+
<h2>Continue agent sessions from your browser.</h2>
|
|
212
|
+
<p>Open the same session URL on a computer, tablet, or phone to check progress, send follow-up instructions, and use the related development tools.</p>
|
|
213
|
+
</div>
|
|
543
214
|
</article>
|
|
544
|
-
<article class="
|
|
545
|
-
<div
|
|
546
|
-
|
|
547
|
-
|
|
215
|
+
<article class="trust-card" id="self-hosting">
|
|
216
|
+
<div>
|
|
217
|
+
<p class="section-label">Self-hosting</p>
|
|
218
|
+
<h2>Run your own relay server.</h2>
|
|
219
|
+
<p>The hosted relay is the simplest setup, but it is not required. The lightweight msclaude relay can be deployed on your own infrastructure with the same browser experience and encryption model.</p>
|
|
220
|
+
</div>
|
|
548
221
|
</article>
|
|
549
|
-
</
|
|
550
|
-
</
|
|
551
|
-
|
|
552
|
-
<section class="security" aria-label="Security">
|
|
553
|
-
<div>
|
|
554
|
-
<h2>Private by design.</h2>
|
|
555
|
-
<p>Your code stays on your machine. msclaude creates a secure relay path to the browser, while the local agent keeps control of project files, commands, and credentials.</p>
|
|
556
|
-
</div>
|
|
557
|
-
<div class="encrypt-flow">
|
|
558
|
-
<div><span>browser</span><span>sealed message</span></div>
|
|
559
|
-
<div><span>relay</span><span>ciphertext only</span></div>
|
|
560
|
-
<div><span>local agent</span><span>decrypted locally</span></div>
|
|
561
|
-
</div>
|
|
562
|
-
</section>
|
|
563
|
-
</main>
|
|
564
|
-
|
|
565
|
-
<footer>
|
|
566
|
-
<span><strong>msclaude</strong></span>
|
|
567
|
-
<span>
|
|
568
|
-
<a href="https://github.com/kailunshi_microsoft/AgenticWorker" rel="noopener">GitHub</a>
|
|
569
|
-
·
|
|
570
|
-
<a href="https://www.linkedin.com/in/shikailun/" rel="noopener">LinkedIn</a>
|
|
571
|
-
</span>
|
|
572
|
-
</footer>
|
|
573
|
-
|
|
574
|
-
<div class="toast" id="copyToast">Copied to clipboard</div>
|
|
575
|
-
|
|
576
|
-
<script>
|
|
577
|
-
function copyCmd(text) {
|
|
578
|
-
navigator.clipboard.writeText(text);
|
|
579
|
-
showToast();
|
|
580
|
-
}
|
|
222
|
+
</section>
|
|
223
|
+
</main>
|
|
581
224
|
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
225
|
+
<footer class="site-footer">
|
|
226
|
+
<a class="brand footer-brand" href="/"><img class="brand-mark" src="/landing/icons/msclaude-animated.svg" alt=""><span>msclaude</span></a>
|
|
227
|
+
<p>Remote access for coding agents running on your development machine.</p>
|
|
228
|
+
<div><a href="https://github.com/kailunshi_microsoft/AgenticWorker" target="_blank" rel="noopener">GitHub</a><a href="/zh" lang="zh-CN" hreflang="zh-CN">中文</a></div>
|
|
229
|
+
</footer>
|
|
585
230
|
|
|
586
|
-
|
|
587
|
-
const toast = document.getElementById('copyToast');
|
|
588
|
-
toast.classList.add('show');
|
|
589
|
-
setTimeout(() => toast.classList.remove('show'), 1800);
|
|
590
|
-
}
|
|
591
|
-
</script>
|
|
231
|
+
<div class="toast" role="status" aria-live="polite">Install command copied</div>
|
|
592
232
|
</body>
|
|
593
233
|
</html>
|