Directories
¶
| Path | Synopsis |
|---|---|
|
api
|
|
|
v1alpha1
Package v1alpha1 contains the shpyrd.io/v1alpha1 API: the App resource.
|
Package v1alpha1 contains the shpyrd.io/v1alpha1 API: the App resource. |
|
cmd
|
|
|
pg-gateway
command
pg-gateway is a TCP wake-on-connect proxy for sleeping PostgreSQL databases (RFC-0075).
|
pg-gateway is a TCP wake-on-connect proxy for sleeping PostgreSQL databases (RFC-0075). |
|
shpyrd
command
Command shpyrd is the shpyrd command line interface.
|
Command shpyrd is the shpyrd command line interface. |
|
shpyrd-ctl
command
shpyrd-ctl is the operator CLI (RFC-0052): the cluster lifecycle commands that need a kubeconfig (cluster create|init|status|destroy|backup|restore, extensions, registry, sizes, the admin token, the break-glass tools).
|
shpyrd-ctl is the operator CLI (RFC-0052): the cluster lifecycle commands that need a kubeconfig (cluster create|init|status|destroy|backup|restore, extensions, registry, sizes, the admin token, the break-glass tools). |
|
shpyrd-server
command
The open-source platform server: the API, the controllers, the store, the extensions, one implicit workspace.
|
The open-source platform server: the API, the controllers, the store, the extensions, one implicit workspace. |
|
Package deploy embeds the base stack manifests: Kustomize components, Helm values and installer profiles.
|
Package deploy embeds the base stack manifests: Kustomize components, Helm values and installer profiles. |
|
ee
|
|
|
internal
|
|
|
cli
Package cli implements the shpyrd command tree.
|
Package cli implements the shpyrd command tree. |
|
controller
Package controller reconciles shpyrd App resources into kpack builds, Deployments, Services and Ingresses.
|
Package controller reconciles shpyrd App resources into kpack builds, Deployments, Services and Ingresses. |
|
scheduling
Package scheduling interprets current scheduler conditions, independently of metrics.
|
Package scheduling interprets current scheduler conditions, independently of metrics. |
|
pkg
|
|
|
api
Package api implements the shpyrd HTTP API and serves the embedded UI.
|
Package api implements the shpyrd HTTP API and serves the embedded UI. |
|
audit
Package audit records who did what (RFC-0008) as Kubernetes Events with structured annotations: the API records its mutations, the CLI records the actions it performs directly on the cluster.
|
Package audit records who did what (RFC-0008) as Kubernetes Events with structured annotations: the API records its mutations, the CLI records the actions it performs directly on the cluster. |
|
authz
Package authz decides what an identity may do (RFC-0008): a small static role table, memberships read from the control-plane store (teams and grants, RFC-0033), and a bootstrap rule so a fresh cluster is usable before anyone defines teams.
|
Package authz decides what an identity may do (RFC-0008): a small static role table, memberships read from the control-plane store (teams and grants, RFC-0033), and a bootstrap rule so a fresh cluster is usable before anyone defines teams. |
|
backup
Package backup exports the platform's state (RFC-0037): every shpyrd object, the config var Secrets and release snapshots, memberships, local accounts and the install record, plus the source archives builds need, as one tarball encrypted with age, and restores it on a fresh cluster.
|
Package backup exports the platform's state (RFC-0037): every shpyrd object, the config var Secrets and release snapshots, memberships, local accounts and the install record, plus the source archives builds need, as one tarball encrypted with age, and restores it on a fresh cluster. |
|
buildtrust
Package buildtrust serves the admission webhook that makes kpack build pods trust the platform CA (RFC-0059).
|
Package buildtrust serves the admission webhook that makes kpack build pods trust the platform CA (RFC-0059). |
|
cliout
Package cliout prints a command's result for two readers.
|
Package cliout prints a command's result for two readers. |
|
configvars
Package configvars manages an app's config vars: the keys of Secret <app>-env plus per-key metadata (when each was last set).
|
Package configvars manages an app's config vars: the keys of Secret <app>-env plus per-key metadata (when each was last set). |
|
ctl
Package ctl builds the shpyrd-ctl command tree for binaries built on the core: the core's own shpyrd-ctl, and the cloud's CLI, which is shpyrd-ctl with its commands added (another module cannot import internal/cli).
|
Package ctl builds the shpyrd-ctl command tree for binaries built on the core: the core's own shpyrd-ctl, and the cloud's CLI, which is shpyrd-ctl with its commands added (another module cannot import internal/cli). |
|
edge
Package edge is the identity the platform hands to apps (RFC-0033): the ingress asks /edge/auth who the caller is and whether they may open the app; the answer carries a short-lived JWT signed with the platform's key, which apps verify against the JWKS.
|
Package edge is the identity the platform hands to apps (RFC-0033): the ingress asks /edge/auth who the caller is and whether they may open the app; the answer carries a short-lived JWT signed with the platform's key, which apps verify against the JWKS. |
|
emails
Package emails holds the emails the platform sends, as HTML.
|
Package emails holds the emails the platform sends, as HTML. |
|
ext
Package ext defines how optional platform capabilities plug into shpyrd (RFC-0002).
|
Package ext defines how optional platform capabilities plug into shpyrd (RFC-0002). |
|
ext/all
Package all is the registry of built-in extensions (RFC-0002).
|
Package all is the registry of built-in extensions (RFC-0002). |
|
ext/authlocal
Package authlocal is the auth-local extension (RFC-0007 step 3.1): a Dex identity broker.
|
Package authlocal is the auth-local extension (RFC-0007 step 3.1): a Dex identity broker. |
|
ext/logsagent
Package logsagent is the logs-agent extension (RFC-0022a): a Vector DaemonSet that collects container logs from all project pods, attaches project/process/instance labels and feeds log drains (RFC-0023).
|
Package logsagent is the logs-agent extension (RFC-0022a): a Vector DaemonSet that collects container logs from all project pods, attaches project/process/instance labels and feeds log drains (RFC-0023). |
|
ext/mail
Package mail is the mail extension (RFC-0013): one SMTP sender the platform uses for invitations and, later, notifications.
|
Package mail is the mail extension (RFC-0013): one SMTP sender the platform uses for invitations and, later, notifications. |
|
ext/metrics
Package metrics provides the shared CLI presentation of metrics API responses.
|
Package metrics provides the shared CLI presentation of metrics API responses. |
|
ext/objectstorage
Package objectstorage is the object-storage extension (RFC-0046): a cloud-backed gateway or local Garage, a logical bucket and a scoped credential per consumer through ObjectBucket resources, usage on the cluster page.
|
Package objectstorage is the object-storage extension (RFC-0046): a cloud-backed gateway or local Garage, a logical bucket and a scoped credential per consumer through ObjectBucket resources, usage on the cluster page. |
|
ext/opencost
Package opencost is the OpenCost extension (RFC-0075): it installs OpenCost, which allocates what the cluster costs to namespaces, pods and nodes, and answers a status route for the console.
|
Package opencost is the OpenCost extension (RFC-0075): it installs OpenCost, which allocates what the cluster costs to namespaces, pods and nodes, and answers a status route for the console. |
|
ext/postgres
Package postgres is the postgres extension (RFC-0009): PostgreSQL databases for projects, run by the CloudNativePG operator, attachable to apps as DATABASE_URL.
|
Package postgres is the postgres extension (RFC-0009): PostgreSQL databases for projects, run by the CloudNativePG operator, attachable to apps as DATABASE_URL. |
|
ext/redis
Package redis is the redis extension (RFC-0010): Redis-compatible stores (Valkey by default) for projects, attachable to apps as REDIS_URL.
|
Package redis is the redis extension (RFC-0010): Redis-compatible stores (Valkey by default) for projects, attachable to apps as REDIS_URL. |
|
ext/resources
Package resources holds helpers shared by the data store extensions' CLIs: creating, listing and deleting project resources with the kubeconfig, and refusing to delete what an app still uses.
|
Package resources holds helpers shared by the data store extensions' CLIs: creating, listing and deleting project resources with the kubeconfig, and refusing to delete what an app still uses. |
|
ext/sleep
Package sleep is the scale-to-zero extension (RFC-0075): it installs KEDA and the KEDA HTTP add-on, which the app controller uses to put a web process to sleep after a quiet period and wake it on the first request.
|
Package sleep is the scale-to-zero extension (RFC-0075): it installs KEDA and the KEDA HTTP add-on, which the app controller uses to put a web process to sleep after a quiet period and wake it on the first request. |
|
gitauth
Package gitauth is how builds reach private git repositories (RFC-0017): a repository's URL in the forms a credential needs, the deploy keys shpyrd generates, and the choice of credential a build clones with.
|
Package gitauth is how builds reach private git repositories (RFC-0017): a repository's URL in the forms a credential needs, the deploy keys shpyrd generates, and the choice of credential a build clones with. |
|
github
Package github is shpyrd's GitHub App (RFC-0054): the App's JWT, installation tokens scoped to one repository, the repositories and branches an installation grants, the OAuth exchange that says which installations a person can see, and the conversion of a registration manifest.
|
Package github is shpyrd's GitHub App (RFC-0054): the App's JWT, installation tokens scoped to one repository, the repositories and branches an installation grants, the OAuth exchange that says which installations a person can see, and the conversion of a registration manifest. |
|
github/githubtest
Package githubtest is a fake GitHub for shpyrd's tests: the App's token endpoint (which checks the App's JWT), an installation's repositories and branches, people with GitHub App user tokens (exchanged, refreshed, revoked) and what each may read, a person's installations and the manifest conversion, a repository's compare, check runs, statuses and Deployments.
|
Package githubtest is a fake GitHub for shpyrd's tests: the App's token endpoint (which checks the App's JWT), an installation's repositories and branches, people with GitHub App user tokens (exchanged, refreshed, revoked) and what each may read, a person's installations and the manifest conversion, a repository's compare, check runs, statuses and Deployments. |
|
ids
Package ids renders the platform's identifiers for places where a UUID's 36 characters and dashes do not fit: image repositories, hostnames, file names.
|
Package ids renders the platform's identifiers for places where a UUID's 36 characters and dashes do not fit: image repositories, hostnames, file names. |
|
install
Package install renders and applies the shpyrd base stack in dependency ordered runlevels, from manifests embedded in the binary.
|
Package install renders and applies the shpyrd base stack in dependency ordered runlevels, from manifests embedded in the binary. |
|
kexec
Package kexec runs commands in pods and attaches to them with the local terminal: WebSocket with SPDY fallback, raw mode and resize forwarding when stdin is a terminal, remote exit codes surfaced as ExitError.
|
Package kexec runs commands in pods and attaches to them with the local terminal: WebSocket with SPDY fallback, raw mode and resize forwarding when stdin is a terminal, remote exit codes surfaced as ExitError. |
|
kind
Package kind creates and deletes local kind clusters shaped for shpyrd: host ports 80/443 mapped to the control-plane for ingress-nginx, the in-cluster registry NodePort mapped to the host, and a containerd mirror so nodes can pull images that kpack pushed to that registry.
|
Package kind creates and deletes local kind clusters shaped for shpyrd: host ports 80/443 mapped to the control-plane for ingress-nginx, the in-cluster registry NodePort mapped to the host, and a containerd mirror so nodes can pull images that kpack pushed to that registry. |
|
kube
Package kube provides Kubernetes configuration discovery and a small client bundle shared by the CLI, the installer and the in-cluster server.
|
Package kube provides Kubernetes configuration discovery and a small client bundle shared by the CLI, the installer and the in-cluster server. |
|
localca
Package localca manages a locally generated root certificate authority used by the local profile in place of a public or cloud CA.
|
Package localca manages a locally generated root certificate authority used by the local profile in place of a public or cloud CA. |
|
localnet
Package localnet knows the developer's machine (RFC-0057): which ports are free, whether a Caddy already owns 443 and can be the front door, and whether *.<domain> resolves locally through dnsmasq and macOS resolver files.
|
Package localnet knows the developer's machine (RFC-0057): which ports are free, whether a Caddy already owns 443 and can be the front door, and whether *.<domain> resolves locally through dnsmasq and macOS resolver files. |
|
logfmt
Package logfmt reads one log line and says what it contains: a level, a message, a timestamp and the remaining fields.
|
Package logfmt reads one log line and says what it contains: a level, a message, a timestamp and the remaining fields. |
|
logs
Package logs holds shared log-related utilities used by both the API server and the controller (RFC-0022a).
|
Package logs holds shared log-related utilities used by both the API server and the controller (RFC-0022a). |
|
objectgateway
Package objectgateway implements isolated logical S3 buckets over a shared provider bucket.
|
Package objectgateway implements isolated logical S3 buckets over a shared provider bucket. |
|
objectstore
Package objectstore talks to the platform's object store (Garage, RFC-0046) as its administrator: buckets, keys and permissions through the admin API, retention through the S3 API.
|
Package objectstore talks to the platform's object store (Garage, RFC-0046) as its administrator: buckets, keys and permissions through the admin API, retention through the S3 API. |
|
pages
Package pages holds the pages the server serves by itself, where no application answers: nothing here, no access, waking up, service unavailable, the mark alone, and the consent an application asks for.
|
Package pages holds the pages the server serves by itself, where no application answers: nothing here, no access, waking up, service unavailable, the mark alone, and the consent an application asks for. |
|
pgdump
Package pgdump takes the nightly dumps of the databases on a shared Postgres server (storage plan, step 3): one pg_dump per database, as the platform's dump role, streamed into the server's bucket; the newest few of each database are kept.
|
Package pgdump takes the nightly dumps of the databases on a shared Postgres server (storage plan, step 3): one pg_dump per database, as the platform's dump role, streamed into the server's bucket; the newest few of each database are kept. |
|
project
Package project holds the naming rules of a project (RFC-0011): a human display name, a URL-safe slug derived from it, and the namespace scheme.
|
Package project holds the naming rules of a project (RFC-0011): a human display name, a URL-safe slug derived from it, and the namespace scheme. |
|
projectarchive
Package projectarchive implements bounded-memory, temporary project exports.
|
Package projectarchive implements bounded-memory, temporary project exports. |
|
registry
Package registry is a small client for the OCI distribution API of the platform's image registry: what the dashboard needs to show the images it holds and what the controller needs to delete the ones no release references (RFC-0059).
|
Package registry is a small client for the OCI distribution API of the platform's image registry: what the dashboard needs to show the images it holds and what the controller needs to delete the ones no release references (RFC-0059). |
|
server
Command shpyrd-server runs the shpyrd API, the App controller and serves the dashboard from inside the cluster (or locally against a kubeconfig).
|
Command shpyrd-server runs the shpyrd API, the App controller and serves the dashboard from inside the cluster (or locally against a kubeconfig). |
|
sizes
Package sizes defines instance sizes: named CPU/memory allocations a process runs with, the equivalent of Fly machine sizes or Render instance types.
|
Package sizes defines instance sizes: named CPU/memory allocations a process runs with, the equivalent of Fly machine sizes or Render instance types. |
|
snapshots
Package snapshots takes provider snapshots of the block-volume claims of a storage class and keeps a bounded number per disk: the platform's nightly job (`shpyrd-server snapshots`, the platform-snapshots CronJob) and the operator's `shpyrd-ctl cluster snapshots take` share it.
|
Package snapshots takes provider snapshots of the block-volume claims of a storage class and keeps a bounded number per disk: the platform's nightly job (`shpyrd-server snapshots`, the platform-snapshots CronJob) and the operator's `shpyrd-ctl cluster snapshots take` share it. |
|
storagemigrate
Package storagemigrate moves a database's data from one storage class to another by switchover (the storage plan, step 1): a second instance is provisioned on the target class, the primary switches over to it, the old instance goes, and the old volume is kept for three days as the way back.
|
Package storagemigrate moves a database's data from one storage class to another by switchover (the storage plan, step 1): a second instance is provisioned on the target class, the primary switches over to it, the old instance goes, and the old volume is kept for three days as the way back. |
|
store
Package store is the platform's control-plane database (RFC-0033): the workspace, the people it has seen, teams and their grants on projects.
|
Package store is the platform's control-plane database (RFC-0033): the workspace, the people it has seen, teams and their grants on projects. |
|
tenancy
Package tenancy maps the host a request arrived at to the door it came through (RFC-0080): the console, the operator's, at the console host; or a workspace, at its address, one label under it, or one of its hosts.
|
Package tenancy maps the host a request arrived at to the door it came through (RFC-0080): the console, the operator's, at the console host; or a workspace, at its address, one label under it, or one of its hosts. |
|
tokenseal
Package tokenseal seals the secrets shpyrd keeps in its database (a person's GitHub refresh token, RFC-0054): AES-256-GCM, under a key in the cluster Secret shpyrd-token-key, which the server makes when it is absent.
|
Package tokenseal seals the secrets shpyrd keeps in its database (a person's GitHub refresh token, RFC-0054): AES-256-GCM, under a key in the cluster Secret shpyrd-token-key, which the server makes when it is absent. |
|
ui
Package ui embeds the applications the server serves: a folder per application in dist/, console/ and workspace/, each what `next build` exported for it (apps/<app>/out).
|
Package ui embeds the applications the server serves: a folder per application in dist/, console/ and workspace/, each what `next build` exported for it (apps/<app>/out). |
|
uipkg
Package uipkg fetches the application a workspace chose for its door (RFC-0084): a build of the workspace application, the folder `next build` exports, published to a registry as an artifact or an image, or lying in a directory while developing.
|
Package uipkg fetches the application a workspace chose for its door (RFC-0084): a build of the workspace application, the folder `next build` exports, published to a registry as an artifact or an image, or lying in a directory while developing. |
|
version
Package version holds the build version, set with -ldflags "-X shpyrd/pkg/version.Version=v1.2.3".
|
Package version holds the build version, set with -ldflags "-X shpyrd/pkg/version.Version=v1.2.3". |
Click to show internal directories.
Click to hide internal directories.

