Rollouts agent

rollouts1.d.jpfennell.com

github.com/jamespfennell/rollouts

Projects

Hoard (hoard4.subwaydata.nyc)

github.com/jamespfennell/hoard

Last deployed 8 weeks ago.

No pending deployment.

Most recent deployments
Add some task metrics

Build #82. Deployed 8 weeks ago.

Deployment logs
Pull
$ docker compose pull
 Image jamespfennell/hoard:latest Pulling 
 Image jamespfennell/hoard:latest Pulled 

Success
              
Redeploy
$ docker compose up -d hoard
 Container hoard-bc-hoard-1 Running 

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping hoard2.subwaydata.nyc
$ curl --fail-with-body -v https://hoard4.subwaydata.nyc --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Host hoard4.subwaydata.nyc:443 was resolved.
* IPv6: (none)
* IPv4: 178.156.244.46
*   Trying 178.156.244.46:443...
* ALPN: curl offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [1576 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [1210 bytes data]
* TLSv1.3 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [19 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2056 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256 / X25519MLKEM768 / id-ecPublicKey
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=hoard4.subwaydata.nyc
*  start date: Feb  8 23:23:40 2026 GMT
*  expire date: May  9 23:23:39 2026 GMT
*  subjectAltName: host "hoard4.subwaydata.nyc" matched cert's "hoard4.subwaydata.nyc"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
*   Certificate level 0: Public key type EC/prime256v1 (256/128 Bits/secBits), signed using ecdsa-with-SHA384
*   Certificate level 1: Public key type EC/secp384r1 (384/192 Bits/secBits), signed using sha256WithRSAEncryption
*   Certificate level 2: Public key type RSA (4096/152 Bits/secBits), signed using sha256WithRSAEncryption
* Connected to hoard4.subwaydata.nyc (178.156.244.46) port 443
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://hoard4.subwaydata.nyc/
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: hoard4.subwaydata.nyc]
* [HTTP/2] [1] [:path: /]
* [HTTP/2] [1] [user-agent: curl/8.14.1]
* [HTTP/2] [1] [accept: */*]
} [5 bytes data]
> GET / HTTP/2
> Host: hoard4.subwaydata.nyc
> User-Agent: curl/8.14.1
> Accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
* Request completely sent off
{ [5 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=utf-8
< date: Mon, 09 Feb 2026 04:47:09 GMT
< via: 1.1 Caddy
< 
{ [5 bytes data]

100  8175    0  8175    0     0  79586      0 --:--:-- --:--:-- --:--:-- 80147
* Connection #0 to host hoard4.subwaydata.nyc left intact

Success
              
Project configuration
{
  "auth_token": "",
  "branch": "master",
  "name": "Hoard (hoard4.subwaydata.nyc)",
  "paused": false,
  "repo": "github.com/jamespfennell/hoard",
  "retention": 10,
  "steps": [
    {
      "name": "Pull",
      "run": "docker compose pull"
    },
    {
      "name": "Redeploy",
      "run": "docker compose up -d hoard"
    },
    {
      "name": "Wait for 5 seconds",
      "run": "sleep 5"
    },
    {
      "name": "Ping hoard2.subwaydata.nyc",
      "run": "curl --fail-with-body -v https://hoard4.subwaydata.nyc --output /dev/null"
    }
  ],
  "wait_minutes": 120,
  "working_directory": "/home/james/hoard-bc"
}

rollouts2.d.jpfennell.com

github.com/jamespfennell/rollouts

Last deployed 8 weeks ago.

No pending deployment.

Most recent deployments
Fix GitHub rate limit bug

Build #34. Deployed 8 weeks ago.

Deployment logs
Pull
$ docker compose pull
 Image jamespfennell/rollouts:latest Pulling 
 Image jamespfennell/rollouts:latest Pulled 

Success
              
Redeploy
$ docker compose up -d rollouts2
 Container rollouts-d-rollouts2-1 Recreate 
 Container rollouts-d-rollouts2-1 Recreated 
 Container rollouts-d-rollouts2-1 Starting 
 Container rollouts-d-rollouts2-1 Started 

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping rollouts2.d.jpfennell.com
$ curl --fail-with-body -v https://rollouts2.d.jpfennell.com --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Host rollouts2.d.jpfennell.com:443 was resolved.
* IPv6: (none)
* IPv4: 178.156.244.46
*   Trying 178.156.244.46:443...
* ALPN: curl offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [1580 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [1210 bytes data]
* TLSv1.3 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [19 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2071 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256 / X25519MLKEM768 / id-ecPublicKey
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=rollouts2.d.jpfennell.com
*  start date: Feb  8 23:23:40 2026 GMT
*  expire date: May  9 23:23:39 2026 GMT
*  subjectAltName: host "rollouts2.d.jpfennell.com" matched cert's "rollouts2.d.jpfennell.com"
*  issuer: C=US; O=Let's Encrypt; CN=E8
*  SSL certificate verify ok.
*   Certificate level 0: Public key type EC/prime256v1 (256/128 Bits/secBits), signed using ecdsa-with-SHA384
*   Certificate level 1: Public key type EC/secp384r1 (384/192 Bits/secBits), signed using sha256WithRSAEncryption
*   Certificate level 2: Public key type RSA (4096/152 Bits/secBits), signed using sha256WithRSAEncryption
* Connected to rollouts2.d.jpfennell.com (178.156.244.46) port 443
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://rollouts2.d.jpfennell.com/
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: rollouts2.d.jpfennell.com]
* [HTTP/2] [1] [:path: /]
* [HTTP/2] [1] [user-agent: curl/8.14.1]
* [HTTP/2] [1] [accept: */*]
} [5 bytes data]
> GET / HTTP/2
> Host: rollouts2.d.jpfennell.com
> User-Agent: curl/8.14.1
> Accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
* Request completely sent off
{ [5 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=UTF-8
< date: Mon, 09 Feb 2026 03:54:10 GMT
< server: tiny-http (Rust)
< via: 1.1 Caddy
< content-length: 18778
< 
} [5 bytes data]

100 18778  100 18778    0     0   735k      0 --:--:-- --:--:-- --:--:--  764k
* Connection #0 to host rollouts2.d.jpfennell.com left intact

Success
              
Add GitHub etag debugging

Build #33. Deployed 8 weeks ago.

Deployment logs
Pull
$ docker compose pull
 Image jamespfennell/rollouts:latest Pulling 
 Image jamespfennell/rollouts:latest Pulled 

Success
              
Redeploy
$ docker compose up -d rollouts2
 Container rollouts-d-rollouts2-1 Recreate 
 Container rollouts-d-rollouts2-1 Recreated 
 Container rollouts-d-rollouts2-1 Starting 
 Container rollouts-d-rollouts2-1 Started 

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping rollouts2.d.jpfennell.com
$ curl --fail-with-body -v https://rollouts2.d.jpfennell.com --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Host rollouts2.d.jpfennell.com:443 was resolved.
* IPv6: (none)
* IPv4: 178.156.244.46
*   Trying 178.156.244.46:443...
* ALPN: curl offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [1580 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [1210 bytes data]
* TLSv1.3 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [19 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2071 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256 / X25519MLKEM768 / id-ecPublicKey
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=rollouts2.d.jpfennell.com
*  start date: Feb  8 23:23:40 2026 GMT
*  expire date: May  9 23:23:39 2026 GMT
*  subjectAltName: host "rollouts2.d.jpfennell.com" matched cert's "rollouts2.d.jpfennell.com"
*  issuer: C=US; O=Let's Encrypt; CN=E8
*  SSL certificate verify ok.
*   Certificate level 0: Public key type EC/prime256v1 (256/128 Bits/secBits), signed using ecdsa-with-SHA384
*   Certificate level 1: Public key type EC/secp384r1 (384/192 Bits/secBits), signed using sha256WithRSAEncryption
*   Certificate level 2: Public key type RSA (4096/152 Bits/secBits), signed using sha256WithRSAEncryption
* Connected to rollouts2.d.jpfennell.com (178.156.244.46) port 443
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://rollouts2.d.jpfennell.com/
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: rollouts2.d.jpfennell.com]
* [HTTP/2] [1] [:path: /]
* [HTTP/2] [1] [user-agent: curl/8.14.1]
* [HTTP/2] [1] [accept: */*]
} [5 bytes data]
> GET / HTTP/2
> Host: rollouts2.d.jpfennell.com
> User-Agent: curl/8.14.1
> Accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
* Request completely sent off
{ [5 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=UTF-8
< date: Mon, 09 Feb 2026 03:39:07 GMT
< server: tiny-http (Rust)
< via: 1.1 Caddy
< content-length: 13478
< 
{ [5 bytes data]

100 13478  100 13478    0     0   113k      0 --:--:-- --:--:-- --:--:--  113k
* Connection #0 to host rollouts2.d.jpfennell.com left intact

Success
              
Make email sending best effort

Build #32. Deployed 8 weeks ago.

Deployment logs
Pull
$ docker compose pull
 Image jamespfennell/rollouts:latest Pulling 
 Image jamespfennell/rollouts:latest Pulled 

Success
              
Redeploy
$ docker compose up -d rollouts2
 Container rollouts-d-rollouts2-1 Running 

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping rollouts2.d.jpfennell.com
$ curl --fail-with-body -v https://rollouts2.d.jpfennell.com --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Host rollouts2.d.jpfennell.com:443 was resolved.
* IPv6: (none)
* IPv4: 178.156.244.46
*   Trying 178.156.244.46:443...
* ALPN: curl offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [1580 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [1210 bytes data]
* TLSv1.3 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [19 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2071 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [80 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256 / X25519MLKEM768 / id-ecPublicKey
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=rollouts2.d.jpfennell.com
*  start date: Feb  8 23:23:40 2026 GMT
*  expire date: May  9 23:23:39 2026 GMT
*  subjectAltName: host "rollouts2.d.jpfennell.com" matched cert's "rollouts2.d.jpfennell.com"
*  issuer: C=US; O=Let's Encrypt; CN=E8
*  SSL certificate verify ok.
*   Certificate level 0: Public key type EC/prime256v1 (256/128 Bits/secBits), signed using ecdsa-with-SHA384
*   Certificate level 1: Public key type EC/secp384r1 (384/192 Bits/secBits), signed using sha256WithRSAEncryption
*   Certificate level 2: Public key type RSA (4096/152 Bits/secBits), signed using sha256WithRSAEncryption
* Connected to rollouts2.d.jpfennell.com (178.156.244.46) port 443
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://rollouts2.d.jpfennell.com/
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: rollouts2.d.jpfennell.com]
* [HTTP/2] [1] [:path: /]
* [HTTP/2] [1] [user-agent: curl/8.14.1]
* [HTTP/2] [1] [accept: */*]
} [5 bytes data]
> GET / HTTP/2
> Host: rollouts2.d.jpfennell.com
> User-Agent: curl/8.14.1
> Accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
* Request completely sent off
{ [5 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=UTF-8
< date: Mon, 09 Feb 2026 02:57:04 GMT
< server: tiny-http (Rust)
< via: 1.1 Caddy
< content-length: 8266
< 
{ [5 bytes data]

100  8266  100  8266    0     0  28350      0 --:--:-- --:--:-- --:--:-- 28405
* Connection #0 to host rollouts2.d.jpfennell.com left intact

Success
              
Project configuration
{
  "auth_token": "",
  "branch": "main",
  "name": "rollouts2.d.jpfennell.com",
  "paused": false,
  "repo": "github.com/jamespfennell/rollouts",
  "retention": 10,
  "steps": [
    {
      "name": "Pull",
      "run": "docker compose pull"
    },
    {
      "name": "Redeploy",
      "run": "docker compose up -d rollouts2"
    },
    {
      "name": "Wait for 5 seconds",
      "run": "sleep 5"
    },
    {
      "name": "Ping rollouts2.d.jpfennell.com",
      "run": "curl --fail-with-body -v https://rollouts2.d.jpfennell.com --output /dev/null"
    }
  ],
  "wait_minutes": 10,
  "working_directory": "/home/james/rollouts-d"
}

GitHub client

Rate limiting data

resource used/limit resetting
core 0/60 in 8 minutes