@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 +131 -0
- package/NOTICE +2 -0
- package/README.md +200 -0
- package/THIRD_PARTY_NOTICES.md +25 -0
- package/caddy/Caddyfile.preview.example +12 -0
- package/dist/antigravity-mcp-launcher.js +5759 -0
- package/dist/cas-preview.js +761 -0
- package/dist/cas.js +48859 -0
- package/dist/mcp-stdio-server.js +5554 -0
- package/dist/templates/antigravity-md-titles-section.md +53 -0
- package/dist/templates/codex-md-titles-section.md +53 -0
- package/dist/templates/grok-md-titles-section.md +125 -0
- package/dist/templates/kimi-md-titles-section.md +89 -0
- package/dist/templates/opencode-md-titles-section.md +53 -0
- package/package.json +62 -0
- package/scripts/cas-cli-smoke.sh +30 -0
- package/systemd/cas-cli-update.service.example +13 -0
- package/systemd/cas-cli-update.timer.example +12 -0
- package/systemd/cas-cli.service.example +22 -0
- package/systemd/cas-preview.service.example +17 -0
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
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
|
+
}
|