@codeagentswarm/cas-cloud 0.0.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/LICENSE ADDED
@@ -0,0 +1,131 @@
1
+ # PolyForm Noncommercial License 1.0.0
2
+
3
+ <https://polyformproject.org/licenses/noncommercial/1.0.0>
4
+
5
+ ## Acceptance
6
+
7
+ In order to get any license under these terms, you must agree
8
+ to them as both strict obligations and conditions to all
9
+ your licenses.
10
+
11
+ ## Copyright License
12
+
13
+ The licensor grants you a copyright license for the
14
+ software to do everything you might do with the software
15
+ that would otherwise infringe the licensor's copyright
16
+ in it for any permitted purpose. However, you may
17
+ only distribute the software according to [Distribution
18
+ License](#distribution-license) and make changes or new works
19
+ based on the software according to [Changes and New Works
20
+ License](#changes-and-new-works-license).
21
+
22
+ ## Distribution License
23
+
24
+ The licensor grants you an additional copyright license
25
+ to distribute copies of the software. Your license
26
+ to distribute covers distributing the software with
27
+ changes and new works permitted by [Changes and New Works
28
+ License](#changes-and-new-works-license).
29
+
30
+ ## Notices
31
+
32
+ You must ensure that anyone who gets a copy of any part of
33
+ the software from you also gets a copy of these terms or the
34
+ URL for them above, as well as copies of any plain-text lines
35
+ beginning with `Required Notice:` that the licensor provided
36
+ with the software. For example:
37
+
38
+ > Required Notice: Copyright Yoyodyne, Inc. (http://example.com)
39
+
40
+ ## Changes and New Works License
41
+
42
+ The licensor grants you an additional copyright license to
43
+ make changes and new works based on the software for any
44
+ permitted purpose.
45
+
46
+ ## Patent License
47
+
48
+ The licensor grants you a patent license for the software that
49
+ covers patent claims the licensor can license, or becomes able
50
+ to license, that you would infringe by using the software.
51
+
52
+ ## Noncommercial Purposes
53
+
54
+ Any noncommercial purpose is a permitted purpose.
55
+
56
+ ## Personal Uses
57
+
58
+ Personal use for research, experiment, and testing for
59
+ the benefit of public knowledge, personal study, private
60
+ entertainment, hobby projects, amateur pursuits, or religious
61
+ observance, without any anticipated commercial application,
62
+ is use for a permitted purpose.
63
+
64
+ ## Noncommercial Organizations
65
+
66
+ Use by any charitable organization, educational institution,
67
+ public research organization, public safety or health
68
+ organization, environmental protection organization,
69
+ or government institution is use for a permitted purpose
70
+ regardless of the source of funding or obligations resulting
71
+ from the funding.
72
+
73
+ ## Fair Use
74
+
75
+ You may have "fair use" rights for the software under the
76
+ law. These terms do not limit them.
77
+
78
+ ## No Other Rights
79
+
80
+ These terms do not allow you to sublicense or transfer any of
81
+ your licenses to anyone else, or prevent the licensor from
82
+ granting licenses to anyone else. These terms do not imply
83
+ any other licenses.
84
+
85
+ ## Patent Defense
86
+
87
+ If you make any written claim that the software infringes or
88
+ contributes to infringement of any patent, your patent license
89
+ for the software granted under these terms ends immediately. If
90
+ your company makes such a claim, your patent license ends
91
+ immediately for work on behalf of your company.
92
+
93
+ ## Violations
94
+
95
+ The first time you are notified in writing that you have
96
+ violated any of these terms, or done anything with the software
97
+ not covered by your licenses, your licenses can nonetheless
98
+ continue if you come into full compliance with these terms,
99
+ and take practical steps to correct past violations, within
100
+ 32 days of receiving notice. Otherwise, all your licenses
101
+ end immediately.
102
+
103
+ ## No Liability
104
+
105
+ ***As far as the law allows, the software comes as is, without
106
+ any warranty or condition, and the licensor will not be liable
107
+ to you for any damages arising out of these terms or the use
108
+ or nature of the software, under any kind of legal claim.***
109
+
110
+ ## Definitions
111
+
112
+ The **licensor** is the individual or entity offering these
113
+ terms, and the **software** is the software the licensor makes
114
+ available under these terms.
115
+
116
+ **You** refers to the individual or entity agreeing to these
117
+ terms.
118
+
119
+ **Your company** is any legal entity, sole proprietorship,
120
+ or other kind of organization that you work for, plus all
121
+ organizations that have control over, are under the control of,
122
+ or are under common control with that organization. **Control**
123
+ means ownership of substantially all the assets of an entity,
124
+ or the power to direct its management and policies by vote,
125
+ contract, or otherwise. Control can be direct or indirect.
126
+
127
+ **Your licenses** are all the licenses granted to you for the
128
+ software under these terms.
129
+
130
+ **Use** means anything you do with the software requiring one
131
+ of your licenses.
package/NOTICE ADDED
@@ -0,0 +1,2 @@
1
+ Required Notice: Copyright 2026 Arturo Garcia. Commercial licensing: hello@codeagentswarm.com.
2
+ Required Notice: No trademark license is granted for the CAS Cloud or CodeAgentSwarm names or logos. Truthful references to the original project are not prohibited.
package/README.md ADDED
@@ -0,0 +1,200 @@
1
+ # CAS Cloud CLI
2
+
3
+ Run CAS Cloud on a macOS or Ubuntu host and connect through the encrypted CodeAgentSwarm relay. The host opens no inbound port and exposes only the projects passed to `serve`.
4
+
5
+ ## Install
6
+
7
+ Node.js 20 or newer is required.
8
+
9
+ ```sh
10
+ npm install --global @codeagentswarm/cas-cloud
11
+ cas-cli --version
12
+ cas-cli doctor
13
+ cas-cli serve \
14
+ --project /absolute/path/to/project-a \
15
+ --project /absolute/path/to/project-b \
16
+ --projects-root /absolute/path/to/clones
17
+ ```
18
+
19
+ `npx @codeagentswarm/cas-cloud serve ...` works without a global install. Before opening
20
+ the relay, `serve` checks and installs the seven supported agent CLIs and the
21
+ bundled CodeAgentSwarm MCP. It also installs the guarded global instructions
22
+ that publish each session's title, activity and work-phase status. Run
23
+ `cas-cli setup` to perform that same setup explicitly.
24
+
25
+ To let a Cloud session read or start work on your Mac, enable **Session
26
+ communication** on the Mac, create a Mobile Connect pairing code, and keep the
27
+ Cloud service running while you link it:
28
+
29
+ ```sh
30
+ cas-cli link 7K9D-M2QF
31
+ cas-cli remote-status
32
+ cas-cli unlink
33
+ ```
34
+
35
+ The Mac must approve the matching six-digit verification code. The link is
36
+ revocable and end-to-end encrypted through the existing relay. Cloud agents can
37
+ list eligible Mac sessions, read a bounded user/assistant transcript, or list an
38
+ opaque project and start one new Mac session with a prompt when you explicitly
39
+ ask. Only assistant prose returns; paths, reasoning and tool output do not.
40
+
41
+ Desktop's ordinary CAS Cloud pairing provides the reverse direction. With both
42
+ links approved, a Mac session can perform the same explicit read or remote start
43
+ on CAS Cloud. Direct message injection into an existing cross-host session stays
44
+ disabled.
45
+
46
+ Except for components identified in `THIRD_PARTY_NOTICES.md`, this is
47
+ source-available software under the PolyForm Noncommercial License 1.0.0, not
48
+ OSI-approved open source. Commercial use of Arturo Garcia's CAS Cloud code
49
+ requires a separate written license from Arturo Garcia. Contact
50
+ `hello@codeagentswarm.com` for commercial licensing.
51
+
52
+ CAS Cloud is not a separate rewrite of CodeAgentSwarm. This repository is a
53
+ generated, independently buildable release mirror of the shared headless runtime.
54
+ The canonical private source exports only that tested runtime boundary; Desktop,
55
+ Mobile, the control plane and deployment secrets are not included.
56
+
57
+ `cas-cli` is the collision-safe executable name. The `cas-cloud` alias lets npm
58
+ infer the executable for `npx @codeagentswarm/cas-cloud`; the shorter `cas` alias
59
+ is also installed.
60
+
61
+ ## Ephemeral development previews
62
+
63
+ `cas-preview` is an optional, separate service for temporary browser previews. It
64
+ starts and owns each development command, exposes it through an unguessable path,
65
+ and terminates the whole process group after a hard two-hour TTL. It listens on
66
+ loopback plus a mode-`0600` Unix control socket by default; the main CAS Cloud
67
+ runtime still opens no inbound listener.
68
+
69
+ Install `systemd/cas-preview.service.example` as a system service, adjust
70
+ its project root and public origin, and put the matching
71
+ `caddy/Caddyfile.preview.example` site behind a domain you control. Then start a
72
+ temporary app with:
73
+
74
+ ```sh
75
+ cas-preview start --cwd /srv/cas-projects/my-app --port 4173 -- \
76
+ npm run dev -- --host 127.0.0.1 --port 4173
77
+ cas-preview list
78
+ cas-preview stop LEASE_ID
79
+ ```
80
+
81
+ The service refuses to adopt a port that was already listening, so it never kills
82
+ an unrelated process. The generated URL is a bearer capability rather than login
83
+ authentication; do not use it for sensitive or production data.
84
+
85
+ The executable has no vendor-specific domain or filesystem root. `serve` accepts
86
+ `--public-origin`, `--root`, `--socket`, `--ttl-seconds`, `--listen`, and `--port`;
87
+ `CAS_PREVIEW_PUBLIC_ORIGIN`, `CAS_PREVIEW_ROOT`, and `CAS_PREVIEW_SOCKET` provide
88
+ deployment-level defaults. Without deployment configuration it stays local, uses
89
+ the current directory as its root, places the control socket in `XDG_RUNTIME_DIR`
90
+ or the OS temporary directory, and prints a loopback URL.
91
+
92
+ Mobile and Desktop show all seven provider CLIs. On CAS Cloud, Mobile exposes
93
+ provider status and one **Sign in** button; the host launches the provider's
94
+ official login and keeps its credentials locally. Codex uses device
95
+ authentication so no callback port is required on the VPS. Provider accounts
96
+ are separate from the CAS account. On Linux, set `CAS_ACCESS_TOKEN`; optionally set
97
+ `CAS_REFRESH_TOKEN` so an expired access token can be renewed. `CAS_CLI_CONFIG`
98
+ overrides the identity file. Otherwise Linux stores it under
99
+ `$XDG_CONFIG_HOME/codeagentswarm` when `XDG_CONFIG_HOME` is absolute, or
100
+ `~/.config/codeagentswarm`.
101
+
102
+ CAS Cloud supports Claude, Codex, Antigravity, OpenCode, Kimi, Grok, and Cursor through the shared CodeAgentSwarm driver layer.
103
+ It publishes the same account-usage quotas as Desktop, and Mobile Settings can add,
104
+ edit or remove the project shortcuts stored by this CAS Cloud runtime.
105
+
106
+ ## Linux user service with automatic updates
107
+
108
+ The service uses a stable `current` symlink so an update can be installed beside
109
+ the running version, health-checked, and rolled back without overwriting it.
110
+ Bootstrap that managed installation once:
111
+
112
+ ```sh
113
+ mkdir -p "$HOME/.local/share/codeagentswarm-cloud/releases/initial"
114
+ npm install --prefix "$HOME/.local/share/codeagentswarm-cloud/releases/initial" --omit=dev --no-audit --no-fund @codeagentswarm/cas-cloud@latest
115
+ ln -sfn "$HOME/.local/share/codeagentswarm-cloud/releases/initial" "$HOME/.local/share/codeagentswarm-cloud/current"
116
+ ```
117
+
118
+ Copy the three templates to `~/.config/systemd/user`, remove the `.example`
119
+ suffixes, and replace the project paths in `cas-cli.service`. Keep credentials in
120
+ `~/.config/codeagentswarm/cas-cli.env` with mode `0600`; use
121
+ `CAS_ACCESS_TOKEN` and, when available, `CAS_REFRESH_TOKEN` there. Do not put
122
+ tokens in `ExecStart` or shell history. If Node came from nvm, edit the `PATH=`
123
+ line in both services to include that Node version's `bin` directory.
124
+
125
+ ```sh
126
+ mkdir -p ~/.config/systemd/user ~/.config/codeagentswarm
127
+ cp "$HOME/.local/share/codeagentswarm-cloud/current/node_modules/@codeagentswarm/cas-cloud/systemd/cas-cli.service.example" ~/.config/systemd/user/cas-cli.service
128
+ cp "$HOME/.local/share/codeagentswarm-cloud/current/node_modules/@codeagentswarm/cas-cloud/systemd/cas-cli-update.service.example" ~/.config/systemd/user/cas-cli-update.service
129
+ cp "$HOME/.local/share/codeagentswarm-cloud/current/node_modules/@codeagentswarm/cas-cloud/systemd/cas-cli-update.timer.example" ~/.config/systemd/user/cas-cli-update.timer
130
+ touch ~/.config/codeagentswarm/cas-cli.env
131
+ touch ~/.config/codeagentswarm/cas-cli-update.env
132
+ chmod 600 ~/.config/codeagentswarm/cas-cli.env ~/.config/codeagentswarm/cas-cli-update.env
133
+ systemctl --user daemon-reload
134
+ systemctl --user enable --now cas-cli cas-cli-update.timer
135
+ systemctl --user status cas-cli
136
+ systemctl --user list-timers cas-cli-update.timer
137
+ systemctl --user kill --kill-whom=main --signal=SIGUSR1 cas-cli
138
+ systemctl --user disable --now cas-cli-update.timer cas-cli
139
+ rm ~/.config/systemd/user/cas-cli.service ~/.config/systemd/user/cas-cli-update.service ~/.config/systemd/user/cas-cli-update.timer
140
+ systemctl --user daemon-reload
141
+ ```
142
+
143
+ The timer checks hourly. It defers while any agent is producing a response. Once
144
+ idle, it installs `@codeagentswarm/cas-cloud@latest` in a new release directory, switches
145
+ the symlink, restarts CAS Cloud, and waits up to twenty-five minutes for the new runtime
146
+ to report healthy. If that check fails, it restores the previous symlink and
147
+ restarts the old version. Set `CAS_CLI_UPDATE_SPEC` in
148
+ `~/.config/codeagentswarm/cas-cli-update.env` to use another npm tag, version,
149
+ or package tarball. The updater service does not load the runtime credential file,
150
+ and it strips secret-like variables before invoking npm. If the runtime sets
151
+ `XDG_CONFIG_HOME` or `CAS_CLI_STATE`, copy that same non-secret path setting into
152
+ `cas-cli-update.env` so both services read the same state file. Package staging
153
+ times out after ten minutes by default; systemd leaves the bounded health check
154
+ and rollback in control instead of killing the updater mid-switch.
155
+
156
+ ### One-time migration from `codeagentswarm`
157
+
158
+ The updater bundled with legacy `codeagentswarm@2.4.0` cannot recognize a scoped
159
+ package. Leave the managed service and `current` symlink in place, then launch the
160
+ new updater once through `npx` from the same environment as the updater service:
161
+
162
+ ```sh
163
+ CAS_CLI_INSTALL_ROOT="$HOME/.local/share/codeagentswarm-cloud" \
164
+ CAS_CLI_UPDATE_SPEC="@codeagentswarm/cas-cloud@0.0.1" \
165
+ npx --yes "@codeagentswarm/cas-cloud@0.0.1" update
166
+ ```
167
+
168
+ Carry over any non-secret `CAS_CLI_STATE`, `CAS_CLI_SYSTEMD_SCOPE` and
169
+ `CAS_CLI_SERVICE` settings from `cas-cli-update.env`. This runs the new updater
170
+ against the legacy layout, so it still defers active sessions, health-checks the
171
+ scoped release and rolls back on failure. Do not switch the symlink by hand.
172
+
173
+ CAS Cloud writes only resumable, active session metadata to a mode-`0600` local
174
+ state file. A restart reopens those provider conversations and restores their
175
+ title, project, status, and minimized state with at most six provider handshakes
176
+ at once. No interrupted prompt is resent.
177
+ Providers without native resume support stay available in History instead.
178
+ The updater briefly rejects new prompts only after staging and before restart;
179
+ the client marks them failed so they can be retried instead of losing them.
180
+
181
+ Use `loginctl enable-linger "$USER"` only when the runtime must remain online
182
+ after logout. The one-time QR or eight-character code authorizes its own pairing,
183
+ so a headless service accepts it without waiting for terminal input. The runtime
184
+ has no inbound listener. `SIGUSR1` prints a fresh five-minute code without
185
+ stopping active sessions. A service restart now reopens every resumable active
186
+ session automatically.
187
+
188
+ ## Smoke check
189
+
190
+ On Ubuntu or macOS, run the installed `cas-cli` binary's local checks without
191
+ starting a relay connection or writing CLI state:
192
+
193
+ ```sh
194
+ "$(npm root -g)/@codeagentswarm/cas-cloud/scripts/cas-cli-smoke.sh"
195
+ ```
196
+
197
+ Set `CAS_CLI_BIN` when the binary is not on `PATH`, or `CAS_CLI_PACKAGE_DIR`
198
+ for a non-global installation. The script checks Node 20+, `doctor`, and an
199
+ in-memory `better-sqlite3` database. It does not verify provider login or relay
200
+ credentials.
@@ -0,0 +1,25 @@
1
+ # Third-party notices
2
+
3
+ Portions of the provider runtime are adapted from T3 Code.
4
+
5
+ MIT License
6
+
7
+ Copyright (c) 2026 T3 Tools Inc.
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the Software is
14
+ furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in all
17
+ copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25
+ SOFTWARE.
@@ -0,0 +1,12 @@
1
+ preview.example.com {
2
+ header {
3
+ Cache-Control "no-store"
4
+ X-Robots-Tag "noindex, nofollow, noarchive"
5
+ X-Content-Type-Options "nosniff"
6
+ }
7
+ reverse_proxy 127.0.0.1:41820 {
8
+ header_down -Cache-Control
9
+ header_down -X-Robots-Tag
10
+ header_down -X-Content-Type-Options
11
+ }
12
+ }