Role
Twingate Connector deployment and operations specialist. Owns everything from token
generation and platform selection to high availability design and dead-connector
diagnosis. When a user needs to get a Connector running, keep it running, or understand
why it stopped, this skill answers those questions.
Decisions & Guidelines
- Never deploy a single Connector per Remote Network. It is a SPOF. The Twingate
Client load-balances and fails over across Connectors automatically — no external
load balancer is needed.
- Each Connector requires its own unique token pair. Never share tokens between
Connectors. Tokens are tied to one Connector's identity; sharing causes authentication
conflicts and unpredictable behavior.
- Always use the rolling major-version tag, never pin to a patch version.
The rolling tag self-updates on restart. Pinned images accumulate
vulnerabilities and miss bug fixes. Current tag string is in
references/connector-deployment.md.
- Scale by adding more Connectors, not by sizing up the host. Connectors are
lightweight — a small instance handles hundreds of concurrent users. Achieve HA through
parallelism, not vertical scale.
- The Connector host must have line-of-sight to backend resources. A Connector that
authenticates successfully but cannot reach its resources shows ALIVE in the console but
silently fails to proxy. Always test from the Connector host, never from the user's machine.
DEAD_NO_RELAYS always means the connector cannot reach Twingate's
control/relay infrastructure. The most common cause is DPI/SSL inspection
on *.twingate.com, but it can also be one of the required outbound ports
being blocked, or — less commonly — an IPv6-only host with no public IPv4 path to
the Relay. The full network requirements live in
references/connector-best-practices.md — verify the customer's egress path
permits all of them before assuming DPI is the cause.
- Connector tokens are credentials. Never store them in Dockerfiles, Compose files,
or IaC source committed to version control. Inject via secrets management.
- Always set a restart policy on container deployments so the Connector
recovers after host reboots without manual intervention. Current Docker flag
and Compose / systemd equivalents are in
references/docker.md,
references/deploy-connector-with-docker-compose.md, and
references/systemd-service.md.
- Prefer official deployment paths first. The community, Labs, and SE repos indexed
below are reference implementations for platforms Twingate doesn't officially package
for (Raspberry Pi images, Ubiquiti gateways, Steam Deck, Hyper-V, CI runners, fleet
autoscaling, etc.) — useful and often the only option, but tell the user plainly which
ones are community-maintained, which are unsupported SE examples, and which are
experimental, rather than presenting any of them as a Twingate-supported product.
Search References First
Grep references/ with the user's own keywords before answering, and cite what you
find. This skill has the largest GitHub-tooling surface of any Twingate skill — 19
repos covering everything from Raspberry Pi image builders to CI runner sidecars — and
filenames alone will not surface most of it. Vendor names, hardware models, exact error
strings, and CLI flags live in the file bodies, not the filenames:
grep -ril "too many open files" references/ # -> 1422554451-connector-offline-too-many-open-files-in-logs.md
grep -ril "proxytunnel" references/ # -> gh-twingate-solutions-twingate-client-userspace-spacelift.md
grep -ril "decky\|steam deck" references/ # -> gh-twingate-community-twindeck.md
Never answer from training-data memory for: outbound port numbers, container image
tags or Helm values keys, platform-specific deployment commands, hardware sizing,
connector log paths or metric names, or upgrade/shutdown procedures — these change
between releases and the references are the source of truth. The same applies to
tooling questions: if the user asks whether something exists for a given platform,
CI system, or ops workflow — Ubiquiti, Unraid, Home Assistant, Steam Deck, Hyper-V,
Codespaces, Coder, Spacelift, log shipping, autoscaling, dashboards, alerting —
search before saying no.
Routing
Co-activate, don't either/or. The pointers below are additive: for a cross-cutting
prompt, load and grep the named skills' references/ in addition to this one — never stop
at the first skill that matched. Grep a sibling's references with the user's own keywords
first; load it fully when the grep hits. Twingate answers are routinely split across skills,
so err toward consulting more, not fewer. Common cross-cutting clusters here: DEAD connector
/ unreachable resource → troubleshoot + architect; IaC token provisioning →
terraform/pulumi; Kubernetes hosting → kubernetes; identity-aware gateway access
→ idfw.
- → twingate-architect: for questions about Remote Network topology or Resource
definition strategy
- → twingate-kubernetes: for Helm chart deployment or K8s-specific Connector patterns
- → twingate-terraform / twingate-pulumi: for IaC-automated token generation
- → twingate-troubleshoot: when a Connector is DEAD or a user cannot reach a resource
References
See references/ for the current corpus, refreshed weekly. Three kinds
of file live there:
{slug}.md — summaries of twingate.com/docs pages (product documentation).
{numeric-id}-{slug}.md — Twingate help-center articles: symptom-shaped support
content, exact error strings, and per-platform gotchas.
gh-{org}-{repo}.md — summaries of public Twingate GitHub repos: SE and community
tooling, reference implementations, and automation — 19 of them for this skill alone.
Core deployment & operations
| If the user asks about… |
Read first |
| What a Connector is, how it registers, connection concepts |
connectors.md, understanding-connectors.md, connector-client-registration.md |
| Network requirements, ports, firewall/SG/NSG rules, egress |
connector-best-practices.md |
| Cloud deployment overview (universal pattern, all providers) |
cloud-providers-guide.md |
| AWS-specific deployment (ECS, EC2, EKS) |
aws-connector-patterns.md, aws.md, aws-ecs-headless-configurations.md |
Azure-specific deployment (ACI, VMs, AKS); Docker Hub rate limits blocking ACI deploy/restart (RegistryErrorResponse, index.docker.io) |
azure-connector-patterns.md, azure.md, 6965244612-azure-container-docker-hub-rate-limits-block-connector-deployment-or-restart.md |
| GCP-specific deployment (GCE, GKE, Cloud Run, MIG) |
gcp-connector-patterns.md, gcp.md |
| Docker / Docker Compose deployment |
docker.md, deploy-connector-with-docker-compose.md |
| Linux / systemd deployment |
connectors-on-linux.md, systemd-service.md |
| PaaS / managed container platforms (Aptible) |
aptible.md |
| Homelab / NAS overview, getting started |
homelabs-guide.md, home-assistant-getting-started.md, headless-iot-gateway.md |
| NAS, homelab, on-prem (Synology, QNAP, TrueNAS, Proxmox, Unraid, Firewalla, CasaOS, ZimaOS, Ubiquiti) — official doc pages |
how-to-set-up-twingate-on-a-synology-nas-dsm-7.md, how-to-set-up-twingate-on-a-synology-nas-dsm-6.md, nas-qnap-install.md, truenas-container-deployment.md, proxmox-container-deployment.md, proxmox-getting-started.md, unraid-getting-started.md, deploy-connector-on-firewalla.md, casaos-getting-started.md, zimaos-getting-started.md, deploy-connector-on-ubiquiti.md |
| Connector image tag, container env vars, deployment commands |
connector-deployment.md, connector-metadata.md, connector-details.md |
| Semi-automated / scripted deployment (Terraform, API) |
deployment-semi-automation.md |
Connector upgrades; apt upgrade fails with NO_PUBKEY GPG error |
upgrading-connectors.md, 5202917932-connector-upgrade-produces-gpg-error-in-apt.md |
DEAD_NO_RELAYS, DEAD_NO_HEARTBEAT, health diagnosis |
connector-real-time-logs.md, connector-monitoring.md, connector-health-checks.md |
Logs, metrics, monitoring, SIEM integration; enabling debug-level (TWINGATE_LOG_LEVEL=7) logging and exporting logs |
connector-metrics.md, connector-monitoring.md, connector-real-time-logs.md, siem-guide.md, 2906603735-twingate-connector-logs.md |
| Real-time connection logs to S3 fail with "Your S3 sync is experiencing issues" (SSE-KMS) |
5872386799-using-sse-kms-s3-realtime-connector-logs-sync-results-in-your-s3-sync-is-experiencing-issues.md |
| Hardware sizing, HA topology, placement |
connector-best-practices.md, connector-placement-best-practices.md |
| Headless / service account clients |
services-headless-clients.md, aws-ecs-headless-configurations.md |
| Connector shutdown, restart, lifecycle |
connector-shutdown-process.md, advanced-connector-management.md |
Connector offline / flapping diagnostics (symptom-shaped help articles)
| Symptom |
Read first |
Repeating Token is expired 403 in logs — benign, PubNub Access Manager token auto-renewal, no action needed |
1364033881-repeating-token-is-expired-error-in-connector-logs.md |
"too many open files" — host ulimit of 1024 fds capping ~128 concurrent clients; ECS Fargate can't override it |
1422554451-connector-offline-too-many-open-files-in-logs.md |
Status flapping offline/online, or dies days after restart — host clock drift >5s vs. Controller; fix with chronyd, not ntpd alone |
4104282255-connector-offline-status-flapping-offline-online-or-goes-offline-some-time-after-restart.md |
"Gone, code 410" in logs — tokens expired/deleted server-side, unrecoverable; requires apt purge twingate-connector and full re-deploy with fresh tokens |
4908519978-connector-offline-gone-code-410-in-logs.md |
| Connector healthy but zero Resource connections succeed — host has only a public IPv6 address; Relay requires IPv4, assign an Elastic IP / external IPv4 |
4995810632-connector-cannot-connect-to-the-twingate-relay.md |
GitHub repository tooling
These 19 repos are not bundled — clone/inspect at runtime. Each solves a distinct
deployment or ops problem; read the file's ## Summary and ## Key Information before
recommending one, and flag community/Labs/SE-example status per the guideline above.
Platform-specific deployments (hardware and OS targets Twingate doesn't officially package for):
| Platform |
What it does |
Read first |
| Raspberry Pi — turnkey SD image |
Builds a flashable Raspberry Pi OS image that auto-provisions a Connector via the Twingate API on first boot (systemd twingate-firstboot service); daily CI checks for new Connector/OS versions |
gh-twingate-community-pi-starter.md |
| Raspberry Pi — install scripts |
Official Twingate-Solutions install scripts for running the Twingate client directly on an already-running Pi (ARM32/ARM64), service-key based — distinct from the pi-starter image builder above |
gh-twingate-solutions-twingate-raspberry-pi.md |
| Ubiquiti / UniFi gateways (UDM Pro, UDM SE, UXG-Pro, UXG-Max) |
Deploys a Connector inside a systemd-nspawn Debian container on the gateway itself; boot hook + unifi-common service persist it across UniFi OS firmware upgrades |
gh-twingate-community-ubiquiti-connector.md |
| Unraid |
Official Docker template XML for Unraid's Community Apps UI — drop-in template exposing Access Token / Refresh Token / Network Name fields |
gh-twingate-community-unraid-template.md |
| Home Assistant |
Packages the Connector as a Home Assistant Supervisor add-on (aarch64/amd64/armv7); requires HAOS/Supervised, not Core-only installs |
gh-twingate-community-home-assistant-add-on.md |
| Steam Deck (Decky Loader / QAM) |
Twindeck — a Decky Loader plugin running the Twingate Headless Client from the Quick Access Menu without leaving gaming mode; needs a Service Account key |
gh-twingate-community-twindeck.md |
| Windows Server / Hyper-V |
PowerShell scripts (Deploy-TwingateConnector.ps1) that provision Connector VMs on Hyper-V via cloud-init Ubuntu 24.04 images, with full create/update/repair/remove lifecycle through the Twingate API |
gh-twingate-solutions-twingate-connector-hyperv.md |
| Windows Chocolatey packaging |
Chocolatey package definitions for choco install twingate — silent/automated Windows client install, upgrade, uninstall |
gh-twingate-labs-chocolatey-packages.md |
| Custom/hardened connector container |
Example Docker image adding shell access, a pluggable /healthchecks.d/ healthcheck system, and structured JSON resource metrics on stderr (separated from connector stdout) |
gh-twingate-solutions-twingate-custom-connector-container.md |
CI/CD and ephemeral dev-environment runners:
| Environment |
What it does |
Read first |
| Coder workspaces |
Terraform templates replacing Coder's default main.tf to run a Twingate client inside a workspace, supporting both interactive user auth and Service Account (headless) auth |
gh-twingate-labs-tg-coder.md |
| GitHub Codespaces |
.devcontainer Dockerfile + two devcontainer.json variants (Service Account or interactive) so a Codespace can reach Twingate-protected private resources |
gh-twingate-labs-tg-github-codespaces.md |
| render.com |
One-click "Deploy to Render" button that stands up a Connector as a render.com service using tokens generated in the Admin Console |
gh-twingate-labs-tg-render.md |
| Spacelift CI runners |
Runs Twingate's userspace HTTP proxy mode plus proxytunnel inside an unprivileged Spacelift runner container — no root, no TUN device, no NET_ADMIN — to bridge Postgres/MySQL/SSH through Twingate's HTTP CONNECT proxy |
gh-twingate-solutions-twingate-client-userspace-spacelift.md |
Observability, ops, and fleet automation:
| Capability |
What it does |
Read first |
| Grafana dashboards |
Community Grafana dashboard (grafana/insights.json) visualizing Connector transport breakdown (direct/relay-hydra/relay-quic), traffic, and uptime from a Prometheus-fed metrics export; needs Grafana 12.2.1+ |
gh-twingate-community-dashboards.md |
| PagerDuty alerting |
Bash/systemd service that tails Connector logs via journalctl -f, forwards Offline/Error/Unrecoverable error state changes to PagerDuty's Events API v2, and auto-resolves on recovery |
gh-twingate-labs-twingate-pagerduty.md |
| Log shipping to S3 |
Python sidecar/systemd service that captures ANALYTICS-prefixed Connector stdout, batches it, and uploads gzip NDJSON to any S3-compatible store (AWS S3, MinIO, R2, B2, Spaces); requires TWINGATE_LOG_ANALYTICS=v2 |
gh-twingate-solutions-twingate-connector-log-shipper.md |
| Local connector status UI |
Lightweight web dashboard running alongside a Connector on the same host for on-box status/diagnostics without the Admin Console — no built-in auth, restrict via firewall |
gh-twingate-solutions-connector-local-ui.md |
| Generic Docker auto-updater (Janus) |
Label-driven container updater (janus.autoupdate.enable=true) that recreates any labeled container — including custom connector containers — when a newer image is available, with rollback on failure; not Compose-aware |
gh-twingate-solutions-janus-updater-service.md |
| Connector fleet autoscaling |
"Fleet Commander" — an async control-plane loop that discovers, scales, and retires Connector containers across Docker/ECS/ACI backends via the Docker socket and the Twingate GraphQL Admin API; exposes /healthz, /readyz, /metrics |
gh-twingate-solutions-twingate-fleet-commander.md |
This table is a fast path, not the whole corpus — when a question doesn't match a row,
grep references/ before answering.
1---2name: twingate-connectors3description: Use when the user needs to deploy, configure, upgrade, or troubleshoot Twingate Connectors on any platform. Activate for: Docker connector, Linux connector, systemd connector, ECS connector, Azure Container Instances, GCE, Helm chart connector, connector tokens, connector HA, connector health, connector metrics, connector logging, connector upgrades, DEAD_NO_RELAYS, DEAD_NO_HEARTBEAT, or connector placement questions. Also activate for connector deployment tooling and unofficial platform support: Raspberry Pi, Ubiquiti/UniFi (UDM Pro, UDM SE, UXG) gateways, Unraid, Home Assistant, Steam Deck / Decky Loader, Hyper-V, Chocolatey packaging, custom or hardened connector containers, GitHub Codespaces, Coder workspaces, render.com, Spacelift CI runners, connector log shipping to S3, connector fleet autoscaling, Grafana connector dashboards, PagerDuty connector alerting, or Docker container auto-updating for connector hosts.4---56## Role78Twingate Connector deployment and operations specialist. Owns everything from token9generation and platform selection to high availability design and dead-connector10diagnosis. When a user needs to get a Connector running, keep it running, or understand11why it stopped, this skill answers those questions.1213## Decisions & Guidelines1415- **Never deploy a single Connector per Remote Network.** It is a SPOF. The Twingate16 Client load-balances and fails over across Connectors automatically — no external17 load balancer is needed.18- **Each Connector requires its own unique token pair.** Never share tokens between19 Connectors. Tokens are tied to one Connector's identity; sharing causes authentication20 conflicts and unpredictable behavior.21- **Always use the rolling major-version tag, never pin to a patch version.**22 The rolling tag self-updates on restart. Pinned images accumulate23 vulnerabilities and miss bug fixes. Current tag string is in24 `references/connector-deployment.md`.25- **Scale by adding more Connectors, not by sizing up the host.** Connectors are26 lightweight — a small instance handles hundreds of concurrent users. Achieve HA through27 parallelism, not vertical scale.28- **The Connector host must have line-of-sight to backend resources.** A Connector that29 authenticates successfully but cannot reach its resources shows ALIVE in the console but30 silently fails to proxy. Always test from the Connector host, never from the user's machine.31- **`DEAD_NO_RELAYS` always means the connector cannot reach Twingate's32 control/relay infrastructure.** The most common cause is DPI/SSL inspection33 on `*.twingate.com`, but it can also be one of the required outbound ports34 being blocked, or — less commonly — an IPv6-only host with no public IPv4 path to35 the Relay. The full network requirements live in36 `references/connector-best-practices.md` — verify the customer's egress path37 permits all of them before assuming DPI is the cause.38- **Connector tokens are credentials.** Never store them in Dockerfiles, Compose files,39 or IaC source committed to version control. Inject via secrets management.40- **Always set a restart policy on container deployments** so the Connector41 recovers after host reboots without manual intervention. Current Docker flag42 and Compose / systemd equivalents are in `references/docker.md`,43 `references/deploy-connector-with-docker-compose.md`, and44 `references/systemd-service.md`.45- **Prefer official deployment paths first.** The community, Labs, and SE repos indexed46 below are reference implementations for platforms Twingate doesn't officially package47 for (Raspberry Pi images, Ubiquiti gateways, Steam Deck, Hyper-V, CI runners, fleet48 autoscaling, etc.) — useful and often the only option, but tell the user plainly which49 ones are community-maintained, which are unsupported SE examples, and which are50 experimental, rather than presenting any of them as a Twingate-supported product.5152## Search References First5354**Grep `references/` with the user's own keywords before answering, and cite what you55find.** This skill has the largest GitHub-tooling surface of any Twingate skill — 1956repos covering everything from Raspberry Pi image builders to CI runner sidecars — and57filenames alone will not surface most of it. Vendor names, hardware models, exact error58strings, and CLI flags live in the file bodies, not the filenames:5960```61grep -ril "too many open files" references/ # -> 1422554451-connector-offline-too-many-open-files-in-logs.md62grep -ril "proxytunnel" references/ # -> gh-twingate-solutions-twingate-client-userspace-spacelift.md63grep -ril "decky\|steam deck" references/ # -> gh-twingate-community-twindeck.md64```6566Never answer from training-data memory for: outbound port numbers, container image67tags or Helm values keys, platform-specific deployment commands, hardware sizing,68connector log paths or metric names, or upgrade/shutdown procedures — these change69between releases and the references are the source of truth. The same applies to70tooling questions: if the user asks whether something exists for a given platform,71CI system, or ops workflow — Ubiquiti, Unraid, Home Assistant, Steam Deck, Hyper-V,72Codespaces, Coder, Spacelift, log shipping, autoscaling, dashboards, alerting —73**search before saying no.**7475## Routing7677**Co-activate, don't either/or.** The pointers below are *additive*: for a cross-cutting78prompt, load and grep the named skills' `references/` *in addition to* this one — never stop79at the first skill that matched. Grep a sibling's references with the user's own keywords80first; load it fully when the grep hits. Twingate answers are routinely split across skills,81so err toward consulting more, not fewer. Common cross-cutting clusters here: DEAD connector82/ unreachable resource → **troubleshoot + architect**; IaC token provisioning →83**terraform**/**pulumi**; Kubernetes hosting → **kubernetes**; identity-aware gateway access84→ **idfw**.8586- **→ twingate-architect**: for questions about Remote Network topology or Resource87 definition strategy88- **→ twingate-kubernetes**: for Helm chart deployment or K8s-specific Connector patterns89- **→ twingate-terraform / twingate-pulumi**: for IaC-automated token generation90- **→ twingate-troubleshoot**: when a Connector is DEAD or a user cannot reach a resource9192## References9394See [`references/`](./references/) for the current corpus, refreshed weekly. Three kinds95of file live there:9697- **`{slug}.md`** — summaries of `twingate.com/docs` pages (product documentation).98- **`{numeric-id}-{slug}.md`** — Twingate help-center articles: symptom-shaped support99 content, exact error strings, and per-platform gotchas.100- **`gh-{org}-{repo}.md`** — summaries of public Twingate GitHub repos: SE and community101 tooling, reference implementations, and automation — 19 of them for this skill alone.102103### Core deployment & operations104105| If the user asks about… | Read first |106|---|---|107| What a Connector is, how it registers, connection concepts | `connectors.md`, `understanding-connectors.md`, `connector-client-registration.md` |108| Network requirements, ports, firewall/SG/NSG rules, egress | `connector-best-practices.md` |109| Cloud deployment overview (universal pattern, all providers) | `cloud-providers-guide.md` |110| AWS-specific deployment (ECS, EC2, EKS) | `aws-connector-patterns.md`, `aws.md`, `aws-ecs-headless-configurations.md` |111| Azure-specific deployment (ACI, VMs, AKS); **Docker Hub rate limits blocking ACI deploy/restart** (`RegistryErrorResponse`, `index.docker.io`) | `azure-connector-patterns.md`, `azure.md`, `6965244612-azure-container-docker-hub-rate-limits-block-connector-deployment-or-restart.md` |112| GCP-specific deployment (GCE, GKE, Cloud Run, MIG) | `gcp-connector-patterns.md`, `gcp.md` |113| Docker / Docker Compose deployment | `docker.md`, `deploy-connector-with-docker-compose.md` |114| Linux / systemd deployment | `connectors-on-linux.md`, `systemd-service.md` |115| PaaS / managed container platforms (Aptible) | `aptible.md` |116| Homelab / NAS overview, getting started | `homelabs-guide.md`, `home-assistant-getting-started.md`, `headless-iot-gateway.md` |117| NAS, homelab, on-prem (Synology, QNAP, TrueNAS, Proxmox, Unraid, Firewalla, CasaOS, ZimaOS, Ubiquiti) — official doc pages | `how-to-set-up-twingate-on-a-synology-nas-dsm-7.md`, `how-to-set-up-twingate-on-a-synology-nas-dsm-6.md`, `nas-qnap-install.md`, `truenas-container-deployment.md`, `proxmox-container-deployment.md`, `proxmox-getting-started.md`, `unraid-getting-started.md`, `deploy-connector-on-firewalla.md`, `casaos-getting-started.md`, `zimaos-getting-started.md`, `deploy-connector-on-ubiquiti.md` |118| Connector image tag, container env vars, deployment commands | `connector-deployment.md`, `connector-metadata.md`, `connector-details.md` |119| Semi-automated / scripted deployment (Terraform, API) | `deployment-semi-automation.md` |120| Connector upgrades; **`apt upgrade` fails with `NO_PUBKEY` GPG error** | `upgrading-connectors.md`, `5202917932-connector-upgrade-produces-gpg-error-in-apt.md` |121| `DEAD_NO_RELAYS`, `DEAD_NO_HEARTBEAT`, health diagnosis | `connector-real-time-logs.md`, `connector-monitoring.md`, `connector-health-checks.md` |122| Logs, metrics, monitoring, SIEM integration; **enabling debug-level (`TWINGATE_LOG_LEVEL=7`) logging and exporting logs** | `connector-metrics.md`, `connector-monitoring.md`, `connector-real-time-logs.md`, `siem-guide.md`, `2906603735-twingate-connector-logs.md` |123| **Real-time connection logs to S3 fail with "Your S3 sync is experiencing issues" (SSE-KMS)** | `5872386799-using-sse-kms-s3-realtime-connector-logs-sync-results-in-your-s3-sync-is-experiencing-issues.md` |124| Hardware sizing, HA topology, placement | `connector-best-practices.md`, `connector-placement-best-practices.md` |125| Headless / service account clients | `services-headless-clients.md`, `aws-ecs-headless-configurations.md` |126| Connector shutdown, restart, lifecycle | `connector-shutdown-process.md`, `advanced-connector-management.md` |127128### Connector offline / flapping diagnostics (symptom-shaped help articles)129130| Symptom | Read first |131|---|---|132| **Repeating `Token is expired` 403 in logs** — benign, PubNub Access Manager token auto-renewal, no action needed | `1364033881-repeating-token-is-expired-error-in-connector-logs.md` |133| **"too many open files"** — host `ulimit` of 1024 fds capping ~128 concurrent clients; ECS Fargate can't override it | `1422554451-connector-offline-too-many-open-files-in-logs.md` |134| **Status flapping offline/online, or dies days after restart** — host clock drift >5s vs. Controller; fix with `chronyd`, not `ntpd` alone | `4104282255-connector-offline-status-flapping-offline-online-or-goes-offline-some-time-after-restart.md` |135| **"Gone, code 410" in logs** — tokens expired/deleted server-side, unrecoverable; requires `apt purge twingate-connector` and full re-deploy with fresh tokens | `4908519978-connector-offline-gone-code-410-in-logs.md` |136| **Connector healthy but zero Resource connections succeed** — host has only a public IPv6 address; Relay requires IPv4, assign an Elastic IP / external IPv4 | `4995810632-connector-cannot-connect-to-the-twingate-relay.md` |137138### GitHub repository tooling139140These 19 repos are **not bundled** — clone/inspect at runtime. Each solves a distinct141deployment or ops problem; read the file's `## Summary` and `## Key Information` before142recommending one, and flag community/Labs/SE-example status per the guideline above.143144**Platform-specific deployments (hardware and OS targets Twingate doesn't officially package for):**145146| Platform | What it does | Read first |147|---|---|---|148| **Raspberry Pi — turnkey SD image** | Builds a flashable Raspberry Pi OS image that auto-provisions a Connector via the Twingate API on first boot (systemd `twingate-firstboot` service); daily CI checks for new Connector/OS versions | `gh-twingate-community-pi-starter.md` |149| **Raspberry Pi — install scripts** | Official Twingate-Solutions install scripts for running the Twingate client directly on an already-running Pi (ARM32/ARM64), service-key based — distinct from the pi-starter image builder above | `gh-twingate-solutions-twingate-raspberry-pi.md` |150| **Ubiquiti / UniFi gateways (UDM Pro, UDM SE, UXG-Pro, UXG-Max)** | Deploys a Connector inside a `systemd-nspawn` Debian container on the gateway itself; boot hook + `unifi-common` service persist it across UniFi OS firmware upgrades | `gh-twingate-community-ubiquiti-connector.md` |151| **Unraid** | Official Docker template XML for Unraid's Community Apps UI — drop-in template exposing Access Token / Refresh Token / Network Name fields | `gh-twingate-community-unraid-template.md` |152| **Home Assistant** | Packages the Connector as a Home Assistant Supervisor add-on (`aarch64`/`amd64`/`armv7`); requires HAOS/Supervised, not Core-only installs | `gh-twingate-community-home-assistant-add-on.md` |153| **Steam Deck (Decky Loader / QAM)** | `Twindeck` — a Decky Loader plugin running the Twingate Headless Client from the Quick Access Menu without leaving gaming mode; needs a Service Account key | `gh-twingate-community-twindeck.md` |154| **Windows Server / Hyper-V** | PowerShell scripts (`Deploy-TwingateConnector.ps1`) that provision Connector VMs on Hyper-V via cloud-init Ubuntu 24.04 images, with full create/update/repair/remove lifecycle through the Twingate API | `gh-twingate-solutions-twingate-connector-hyperv.md` |155| **Windows Chocolatey packaging** | Chocolatey package definitions for `choco install twingate` — silent/automated Windows client install, upgrade, uninstall | `gh-twingate-labs-chocolatey-packages.md` |156| **Custom/hardened connector container** | Example Docker image adding shell access, a pluggable `/healthchecks.d/` healthcheck system, and structured JSON resource metrics on stderr (separated from connector stdout) | `gh-twingate-solutions-twingate-custom-connector-container.md` |157158**CI/CD and ephemeral dev-environment runners:**159160| Environment | What it does | Read first |161|---|---|---|162| **Coder workspaces** | Terraform templates replacing Coder's default `main.tf` to run a Twingate client inside a workspace, supporting both interactive user auth and Service Account (headless) auth | `gh-twingate-labs-tg-coder.md` |163| **GitHub Codespaces** | `.devcontainer` Dockerfile + two `devcontainer.json` variants (Service Account or interactive) so a Codespace can reach Twingate-protected private resources | `gh-twingate-labs-tg-github-codespaces.md` |164| **render.com** | One-click "Deploy to Render" button that stands up a Connector as a render.com service using tokens generated in the Admin Console | `gh-twingate-labs-tg-render.md` |165| **Spacelift CI runners** | Runs Twingate's **userspace HTTP proxy mode** plus `proxytunnel` inside an unprivileged Spacelift runner container — no root, no TUN device, no `NET_ADMIN` — to bridge Postgres/MySQL/SSH through Twingate's HTTP CONNECT proxy | `gh-twingate-solutions-twingate-client-userspace-spacelift.md` |166167**Observability, ops, and fleet automation:**168169| Capability | What it does | Read first |170|---|---|---|171| **Grafana dashboards** | Community Grafana dashboard (`grafana/insights.json`) visualizing Connector transport breakdown (direct/relay-hydra/relay-quic), traffic, and uptime from a Prometheus-fed metrics export; needs Grafana 12.2.1+ | `gh-twingate-community-dashboards.md` |172| **PagerDuty alerting** | Bash/systemd service that tails Connector logs via `journalctl -f`, forwards `Offline`/`Error`/`Unrecoverable error` state changes to PagerDuty's Events API v2, and auto-resolves on recovery | `gh-twingate-labs-twingate-pagerduty.md` |173| **Log shipping to S3** | Python sidecar/systemd service that captures `ANALYTICS`-prefixed Connector stdout, batches it, and uploads gzip NDJSON to any S3-compatible store (AWS S3, MinIO, R2, B2, Spaces); requires `TWINGATE_LOG_ANALYTICS=v2` | `gh-twingate-solutions-twingate-connector-log-shipper.md` |174| **Local connector status UI** | Lightweight web dashboard running alongside a Connector on the same host for on-box status/diagnostics without the Admin Console — no built-in auth, restrict via firewall | `gh-twingate-solutions-connector-local-ui.md` |175| **Generic Docker auto-updater (Janus)** | Label-driven container updater (`janus.autoupdate.enable=true`) that recreates any labeled container — including custom connector containers — when a newer image is available, with rollback on failure; not Compose-aware | `gh-twingate-solutions-janus-updater-service.md` |176| **Connector fleet autoscaling** | "Fleet Commander" — an async control-plane loop that discovers, scales, and retires Connector containers across Docker/ECS/ACI backends via the Docker socket and the Twingate GraphQL Admin API; exposes `/healthz`, `/readyz`, `/metrics` | `gh-twingate-solutions-twingate-fleet-commander.md` |177178This table is a fast path, not the whole corpus — when a question doesn't match a row,179grep `references/` before answering.