@crvouga/atlas 0.6.1 → 0.7.0
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/CHANGELOG.md +7 -1
- package/README.md +4 -0
- package/docs/deploying.md +36 -6
- package/docs/server.md +3 -1
- package/llms-full.txt +39 -7
- package/llms.txt +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
# Changelog: @crvouga/atlas
|
|
2
2
|
|
|
3
|
-
## 0.
|
|
3
|
+
## 0.7.0 (2026-10-15)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- publish the Atlas server image (#10) ([5cfb9b9](https://github.com/crvouga/atlas/commit/5cfb9b99a4a4f09180f371587704c447493b2f9f))
|
|
8
|
+
|
|
9
|
+
## 0.6.1 (2026-10-14)
|
|
4
10
|
|
|
5
11
|
### Fixes and improvements
|
|
6
12
|
|
package/README.md
CHANGED
|
@@ -187,6 +187,10 @@ unless you choose a bucket. `atlas dev` runs the same server with the client's d
|
|
|
187
187
|
development is one host too. See [the server](docs/server.md) and
|
|
188
188
|
[running Atlas for a project](docs/deploying.md).
|
|
189
189
|
|
|
190
|
+
On Railway, deploy the image `ghcr.io/crvouga/atlas:latest` directly, with no project checkout or
|
|
191
|
+
custom Dockerfile. Every green merge to `main` publishes it; enable Railway's image auto updates to follow it.
|
|
192
|
+
The [deployment guide](docs/deploying.md#run-it) covers the token, persistent volume and healthcheck.
|
|
193
|
+
|
|
190
194
|
```sh
|
|
191
195
|
atlas serve # the project's server, at :8080 (ATLAS_TOKEN says who may upload)
|
|
192
196
|
|
package/docs/deploying.md
CHANGED
|
@@ -213,21 +213,51 @@ use a named `--store project=s3://… --write project` to put uploads in a share
|
|
|
213
213
|
|
|
214
214
|
### Run it
|
|
215
215
|
|
|
216
|
-
**
|
|
217
|
-
|
|
218
|
-
|
|
216
|
+
**Railway (deploy an image, no repository or code changes).** Create a service from the Docker image
|
|
217
|
+
`ghcr.io/crvouga/atlas:latest`.
|
|
218
|
+
|
|
219
|
+
1. In Railway choose **New service → Docker image** and enter `ghcr.io/crvouga/atlas:latest`.
|
|
220
|
+
Leave the start command unset: the image includes the server and the prebuilt viewer.
|
|
221
|
+
2. Add `ATLAS_TOKEN` with a long random value (generate one with `openssl rand -hex 24`). It grants admin
|
|
222
|
+
access; optionally add separate `ATLAS_PUBLISH_TOKEN` and `ATLAS_READ_TOKEN` for publishers and readers.
|
|
223
|
+
3. Attach a volume at `/data` and set `RAILWAY_RUN_UID=0`: Railway mounts volumes as root, while the image
|
|
224
|
+
normally runs as `bun` ([Railway volume permissions](https://docs.railway.com/volumes#permissions)).
|
|
225
|
+
Keep one replica. The volume retains reports and server settings when the image is replaced.
|
|
226
|
+
4. Set the healthcheck path to `/readyz` and generate a public domain. The image listens on `0.0.0.0` and
|
|
227
|
+
honors Railway's `PORT`; leave `ATLAS_PORT` unset. Open the domain and sign in with your token as the
|
|
228
|
+
password (any username), or use the viewer's token sign-in.
|
|
229
|
+
5. Under **Settings → Source → Configure Auto Updates**, enable image updates and select **Anytime**.
|
|
230
|
+
Each successful `main` build publishes a new `latest`. Railway detects the changed digest and redeploys
|
|
231
|
+
within its update schedule; detection can be cached for a few hours, so publishing does not mean an
|
|
232
|
+
immediate deployment ([Railway image auto updates](https://docs.railway.com/deployments/image-auto-updates)).
|
|
233
|
+
|
|
234
|
+
Check the domain with `curl --fail https://YOUR-DOMAIN/readyz`: HTTP 200 means the server read its backend.
|
|
235
|
+
Projects publish to that domain with `ATLAS_STORE=https://YOUR-DOMAIN` and their `ATLAS_TOKEN`, as in
|
|
236
|
+
[sending results](#3-send-results-from-ci-and-from-laptops). Hosting Atlas needs no project checkout; publishing
|
|
237
|
+
your project's test results still needs the integration described there.
|
|
238
|
+
|
|
239
|
+
For bucket storage instead, set `ATLAS_STORE=project=s3://my-bucket/atlas/my-project`, `ATLAS_WRITE=project`,
|
|
240
|
+
and the bucket credentials. Keep the `/data` volume for server settings and local state.
|
|
241
|
+
|
|
242
|
+
**Docker.** The same published image works anywhere Docker runs. It already contains the client (the same
|
|
243
|
+
for every project: the server tells the page where its data is), and keeps results on the volume at `/data`:
|
|
219
244
|
|
|
220
245
|
```sh
|
|
221
|
-
docker
|
|
222
|
-
|
|
246
|
+
docker run --pull always -p 8080:8080 -v atlas-data:/data \
|
|
247
|
+
-e ATLAS_TOKEN=$(openssl rand -hex 24) ghcr.io/crvouga/atlas:latest
|
|
223
248
|
```
|
|
224
249
|
|
|
250
|
+
The image is built from each checked commit, independently of npm releases. To pin a deployment or roll
|
|
251
|
+
back, replace `latest` with the full commit SHA. To build from this repository, use `docker build -t atlas .`;
|
|
252
|
+
[`examples/deploy/Dockerfile`](https://github.com/crvouga/atlas/blob/main/examples/deploy/Dockerfile) is the
|
|
253
|
+
alternative for building from an npm version or a local package tarball.
|
|
254
|
+
|
|
225
255
|
For a bucket as the system of record add `-e ATLAS_STORE=project=s3://my-bucket/atlas/my-project -e ATLAS_WRITE=project -e AWS_REGION=us-east-1`.
|
|
226
256
|
On ECS, EKS or EC2, attach the combined **both** policy (including `server/live/*` for producer leases) to the task, service account or
|
|
227
257
|
instance and set no keys.
|
|
228
258
|
|
|
229
259
|
**Try it on one machine.** [`examples/deploy/compose.yaml`](https://github.com/crvouga/atlas/blob/main/examples/deploy/compose.yaml)
|
|
230
|
-
starts the
|
|
260
|
+
starts the published image on a volume; `compose.s3.yaml` starts it with an S3 server and a bucket as its storage.
|
|
231
261
|
Publish to `http://localhost:8080` from your project and open it.
|
|
232
262
|
|
|
233
263
|
**Kubernetes.** [`examples/deploy/kubernetes.yaml`](https://github.com/crvouga/atlas/blob/main/examples/deploy/kubernetes.yaml):
|
package/docs/server.md
CHANGED
|
@@ -53,7 +53,9 @@ bunx atlas dev --data .atlas-data # http://127.0.0.1:5180
|
|
|
53
53
|
ATLAS_STORE=http://127.0.0.1:5180 bunx atlas report publish --producer unit --junit out.xml
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
For
|
|
56
|
+
For Railway, deploy `ghcr.io/crvouga/atlas:latest` directly: the image contains the server and
|
|
57
|
+
viewer, and every green `main` push updates it. See [running Atlas for a project](deploying.md#run-it) for
|
|
58
|
+
Railway's volume, tokens, healthcheck and image auto updates, or for Docker, Kubernetes and CI.
|
|
57
59
|
|
|
58
60
|
## Configuration
|
|
59
61
|
|
package/llms-full.txt
CHANGED
|
@@ -1005,7 +1005,9 @@ bunx atlas dev --data .atlas-data # http://127.0.0.1:5180
|
|
|
1005
1005
|
ATLAS_STORE=http://127.0.0.1:5180 bunx atlas report publish --producer unit --junit out.xml
|
|
1006
1006
|
```
|
|
1007
1007
|
|
|
1008
|
-
For
|
|
1008
|
+
For Railway, deploy `ghcr.io/crvouga/atlas:latest` directly: the image contains the server and
|
|
1009
|
+
viewer, and every green `main` push updates it. See [running Atlas for a project](deploying.md#run-it) for
|
|
1010
|
+
Railway's volume, tokens, healthcheck and image auto updates, or for Docker, Kubernetes and CI.
|
|
1009
1011
|
|
|
1010
1012
|
## Configuration
|
|
1011
1013
|
|
|
@@ -1583,21 +1585,51 @@ use a named `--store project=s3://… --write project` to put uploads in a share
|
|
|
1583
1585
|
|
|
1584
1586
|
### Run it
|
|
1585
1587
|
|
|
1586
|
-
**
|
|
1587
|
-
|
|
1588
|
-
|
|
1588
|
+
**Railway (deploy an image, no repository or code changes).** Create a service from the Docker image
|
|
1589
|
+
`ghcr.io/crvouga/atlas:latest`.
|
|
1590
|
+
|
|
1591
|
+
1. In Railway choose **New service → Docker image** and enter `ghcr.io/crvouga/atlas:latest`.
|
|
1592
|
+
Leave the start command unset: the image includes the server and the prebuilt viewer.
|
|
1593
|
+
2. Add `ATLAS_TOKEN` with a long random value (generate one with `openssl rand -hex 24`). It grants admin
|
|
1594
|
+
access; optionally add separate `ATLAS_PUBLISH_TOKEN` and `ATLAS_READ_TOKEN` for publishers and readers.
|
|
1595
|
+
3. Attach a volume at `/data` and set `RAILWAY_RUN_UID=0`: Railway mounts volumes as root, while the image
|
|
1596
|
+
normally runs as `bun` ([Railway volume permissions](https://docs.railway.com/volumes#permissions)).
|
|
1597
|
+
Keep one replica. The volume retains reports and server settings when the image is replaced.
|
|
1598
|
+
4. Set the healthcheck path to `/readyz` and generate a public domain. The image listens on `0.0.0.0` and
|
|
1599
|
+
honors Railway's `PORT`; leave `ATLAS_PORT` unset. Open the domain and sign in with your token as the
|
|
1600
|
+
password (any username), or use the viewer's token sign-in.
|
|
1601
|
+
5. Under **Settings → Source → Configure Auto Updates**, enable image updates and select **Anytime**.
|
|
1602
|
+
Each successful `main` build publishes a new `latest`. Railway detects the changed digest and redeploys
|
|
1603
|
+
within its update schedule; detection can be cached for a few hours, so publishing does not mean an
|
|
1604
|
+
immediate deployment ([Railway image auto updates](https://docs.railway.com/deployments/image-auto-updates)).
|
|
1605
|
+
|
|
1606
|
+
Check the domain with `curl --fail https://YOUR-DOMAIN/readyz`: HTTP 200 means the server read its backend.
|
|
1607
|
+
Projects publish to that domain with `ATLAS_STORE=https://YOUR-DOMAIN` and their `ATLAS_TOKEN`, as in
|
|
1608
|
+
[sending results](#3-send-results-from-ci-and-from-laptops). Hosting Atlas needs no project checkout; publishing
|
|
1609
|
+
your project's test results still needs the integration described there.
|
|
1610
|
+
|
|
1611
|
+
For bucket storage instead, set `ATLAS_STORE=project=s3://my-bucket/atlas/my-project`, `ATLAS_WRITE=project`,
|
|
1612
|
+
and the bucket credentials. Keep the `/data` volume for server settings and local state.
|
|
1613
|
+
|
|
1614
|
+
**Docker.** The same published image works anywhere Docker runs. It already contains the client (the same
|
|
1615
|
+
for every project: the server tells the page where its data is), and keeps results on the volume at `/data`:
|
|
1589
1616
|
|
|
1590
1617
|
```sh
|
|
1591
|
-
docker
|
|
1592
|
-
|
|
1618
|
+
docker run --pull always -p 8080:8080 -v atlas-data:/data \
|
|
1619
|
+
-e ATLAS_TOKEN=$(openssl rand -hex 24) ghcr.io/crvouga/atlas:latest
|
|
1593
1620
|
```
|
|
1594
1621
|
|
|
1622
|
+
The image is built from each checked commit, independently of npm releases. To pin a deployment or roll
|
|
1623
|
+
back, replace `latest` with the full commit SHA. To build from this repository, use `docker build -t atlas .`;
|
|
1624
|
+
[`examples/deploy/Dockerfile`](https://github.com/crvouga/atlas/blob/main/examples/deploy/Dockerfile) is the
|
|
1625
|
+
alternative for building from an npm version or a local package tarball.
|
|
1626
|
+
|
|
1595
1627
|
For a bucket as the system of record add `-e ATLAS_STORE=project=s3://my-bucket/atlas/my-project -e ATLAS_WRITE=project -e AWS_REGION=us-east-1`.
|
|
1596
1628
|
On ECS, EKS or EC2, attach the combined **both** policy (including `server/live/*` for producer leases) to the task, service account or
|
|
1597
1629
|
instance and set no keys.
|
|
1598
1630
|
|
|
1599
1631
|
**Try it on one machine.** [`examples/deploy/compose.yaml`](https://github.com/crvouga/atlas/blob/main/examples/deploy/compose.yaml)
|
|
1600
|
-
starts the
|
|
1632
|
+
starts the published image on a volume; `compose.s3.yaml` starts it with an S3 server and a bucket as its storage.
|
|
1601
1633
|
Publish to `http://localhost:8080` from your project and open it.
|
|
1602
1634
|
|
|
1603
1635
|
**Kubernetes.** [`examples/deploy/kubernetes.yaml`](https://github.com/crvouga/atlas/blob/main/examples/deploy/kubernetes.yaml):
|
package/llms.txt
CHANGED
|
@@ -47,4 +47,4 @@ Given only the repository link, start at docs/agents.md: install `@crvouga/atlas
|
|
|
47
47
|
|
|
48
48
|
## Optional
|
|
49
49
|
|
|
50
|
-
- [Releasing](https://raw.githubusercontent.com/crvouga/atlas/main/docs/releasing.md): How
|
|
50
|
+
- [Releasing](https://raw.githubusercontent.com/crvouga/atlas/main/docs/releasing.md): How Atlas gets from main to npm and to its server container image.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crvouga/atlas",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Atlas: specs of any kind, reported as layered evidence. Publish checks from any runner (JUnit, CTRF, a script), combine them across nodes, branches, environments and backends, gate CI on the result, and run statecharts against the real app.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|