{
  "atalanta": {
    "hostname": "atalanta",
    "services": [],
    "tailscale_host": "atalanta",
    "type": "client"
  },
  "ember": {
    "hostname": "ember",
    "services": [],
    "tailscale_host": "ember",
    "type": "server"
  },
  "everseen": {
    "hostname": "everseen",
    "services": [],
    "tailscale_host": "everseen",
    "type": "client"
  },
  "prattle": {
    "hostname": "prattle",
    "services": [
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": null
        },
        "description": "Automatic Ripping Machine",
        "domain": null,
        "health_url": null,
        "name": "arm",
        "port": 8080,
        "repository": null,
        "runtime": "docker"
      },
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": null
        },
        "description": "S3-compatible object storage",
        "domain": "s3.dunkirk.sh",
        "health_url": null,
        "name": "garage",
        "port": 3900,
        "repository": null,
        "runtime": "rust"
      }
    ],
    "tailscale_host": "prattle",
    "type": "server"
  },
  "terebithia": {
    "hostname": "terebithia",
    "services": [
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": null
        },
        "description": "HTTP/TCP/UDP tunnel proxy",
        "domain": "bore.dunkirk.sh",
        "health_url": "https://bore.dunkirk.sh",
        "name": "bore",
        "port": 7080,
        "repository": null,
        "runtime": "go"
      },
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": "/var/lib/cachet/data/cachet.db"
        },
        "description": "Cachet Slack emoji/profile cache",
        "domain": "cachet.dunkirk.sh",
        "health_url": "https://cachet.dunkirk.sh/health?detailed=true",
        "name": "cachet",
        "port": 3000,
        "repository": "https://github.com/taciturnaxolotl/cachet",
        "runtime": "bun"
      },
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": "/var/lib/canvas-mcp/data/canvas-mcp.db"
        },
        "description": "Canvas MCP server for Claude Desktop",
        "domain": "canvas.dunkirk.sh",
        "health_url": "https://canvas.dunkirk.sh/health?detailed=true",
        "name": "canvas-mcp",
        "port": 3006,
        "repository": "https://github.com/taciturnaxolotl/canvas-mcp",
        "runtime": "bun"
      },
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": "/var/lib/cedarlogic/data/cedarlogic.db"
        },
        "description": "CedarLogic circuit simulator",
        "domain": "cedarlogic.dunkirk.sh",
        "health_url": "https://cedarlogic.dunkirk.sh/health",
        "name": "cedarlogic",
        "port": 3100,
        "repository": "https://github.com/taciturnaxolotl/CedarLogic",
        "runtime": "custom"
      },
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": "/var/lib/control/data/control.db"
        },
        "description": "Control Panel - Admin dashboard for Caddy toggles",
        "domain": "control.dunkirk.sh",
        "health_url": "https://control.dunkirk.sh/health",
        "name": "control",
        "port": 3010,
        "repository": "https://github.com/taciturnaxolotl/control",
        "runtime": "bun"
      },
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": null
        },
        "description": "Emojibot for df1317",
        "domain": "df.emojibot.dunkirk.sh",
        "health_url": "https://df.emojibot.dunkirk.sh/health",
        "name": "emojibot-df1317",
        "port": 3005,
        "repository": "https://github.com/taciturnaxolotl/emojibot",
        "runtime": "bun"
      },
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": null
        },
        "description": "Emojibot for hackclub",
        "domain": "hc.emojibot.dunkirk.sh",
        "health_url": "https://hc.emojibot.dunkirk.sh/health",
        "name": "emojibot-hackclub",
        "port": 3002,
        "repository": "https://github.com/taciturnaxolotl/emojibot",
        "runtime": "bun"
      },
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": null
        },
        "description": "RSS-to-Email via SSH",
        "domain": "herald.dunkirk.sh",
        "health_url": "https://herald.dunkirk.sh",
        "name": "herald",
        "port": 8085,
        "repository": null,
        "runtime": "go"
      },
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": "/var/lib/hn-alerts/data/hn-alerts.db"
        },
        "description": "HN Alerts Hacker News monitoring service",
        "domain": "hn.dunkirk.sh",
        "health_url": "https://hn.dunkirk.sh/health",
        "name": "hn-alerts",
        "port": 3001,
        "repository": "https://github.com/taciturnaxolotl/hn-alerts",
        "runtime": "bun"
      },
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": "/var/lib/indiko/data/indiko.db"
        },
        "description": "Indiko IndieAuth/OAuth2 server",
        "domain": "indiko.dunkirk.sh",
        "health_url": "https://indiko.dunkirk.sh/health",
        "name": "indiko",
        "port": 3003,
        "repository": "https://github.com/taciturnaxolotl/indiko",
        "runtime": "bun"
      },
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": null
        },
        "description": "Tangled git hosting",
        "domain": "knot.dunkirk.sh",
        "health_url": "https://knot.dunkirk.sh",
        "name": "knot",
        "port": 5555,
        "repository": null,
        "runtime": "go"
      },
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": "/var/lib/l4/data/stats.db"
        },
        "description": "L4 Image CDN - Slack image optimizer and R2 uploader",
        "domain": "l4.dunkirk.sh",
        "health_url": "https://l4.dunkirk.sh/health",
        "name": "l4",
        "port": 3004,
        "repository": "https://github.com/taciturnaxolotl/l4",
        "runtime": "bun"
      },
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": "/var/lib/overpass/data/overpass.db"
        },
        "description": "Overpass gas price cache server",
        "domain": "overpass.dunkirk.sh",
        "health_url": "https://overpass.dunkirk.sh/health",
        "name": "overpass",
        "port": 7878,
        "repository": "https://github.com/taciturnaxolotl/overpass",
        "runtime": "bun"
      },
      {
        "data": {
          "files": [
            "/var/lib/paperless/media"
          ],
          "postgres": null,
          "sqlite": "/var/lib/paperless/db.sqlite3"
        },
        "description": "Paperless-ngx document management system",
        "domain": "paperless.dunkirk.sh",
        "health_url": "https://paperless.dunkirk.sh/health/",
        "name": "paperless",
        "port": 28981,
        "repository": null,
        "runtime": "python"
      },
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": "/var/lib/pear/data/pear.db"
        },
        "description": "Pear recipe extractor and viewer",
        "domain": "pear.dunkirk.sh",
        "health_url": "https://pear.dunkirk.sh",
        "name": "pear",
        "port": 7879,
        "repository": null,
        "runtime": "custom"
      },
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": "/var/lib/potluck/data/potluck.db"
        },
        "description": "Potluck — pooled pioneer.ai chat frontend",
        "domain": "backend.potluck.dunkirk.sh",
        "health_url": "https://backend.potluck.dunkirk.sh/healthz",
        "name": "potluck",
        "port": 8090,
        "repository": null,
        "runtime": "custom"
      },
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": null
        },
        "description": "Tangled CI",
        "domain": "spindle.dunkirk.sh",
        "health_url": "https://spindle.dunkirk.sh",
        "name": "spindle",
        "port": 6555,
        "repository": null,
        "runtime": "go"
      },
      {
        "data": {
          "files": [],
          "postgres": null,
          "sqlite": "/var/lib/traverse/data/traverse.db"
        },
        "description": "Traverse code walkthrough diagram server",
        "domain": "traverse.dunkirk.sh",
        "health_url": "https://traverse.dunkirk.sh",
        "name": "traverse",
        "port": 4173,
        "repository": "https://github.com/taciturnaxolotl/traverse",
        "runtime": "bun"
      }
    ],
    "tailscale_host": "terebithia",
    "type": "server"
  }
}
