pub enum Provider {
Cloudflare,
Hetzner,
Vultr,
Static,
LocalStatic,
LocalContainer,
LocalProcess,
MiniflareContainer,
MinioContainer,
LocalPgDev,
}Expand description
Tag for the infrastructure provider kind. Drives which fields are valid in
a ProviderConfig body or a MirrorProviderSlot::Inline block.
Two flavors:
- Account/runtime providers (
cloudflare,hetzner,local-container) live as files under.yah/infra/providers/<id>.tomland are referenced from a mirror viause = "<id>". - Inline-only providers (
local-static,miniflare-container,minio-container) declare an operator-local stand-in directly inside a mirror viakind = "...". They carry no credentials and have no provider file. The container-backed kinds ride on top of whicheverlocal-containerruntime is declared in infra (orbstack/colima/docker); the reconciler resolves the runtime at up-time.
Variants§
Cloudflare
Cloudflare account: R2 buckets, DNS, Workers, Tunnels.
Hetzner
Hetzner Cloud + Object Storage account.
Vultr
Vultr cloud VPS — auto-provisioned via the cloud.vps.* Envoy
(VultrEnvoy), the burst/scaling counterpart to Hetzner. Driver-backed.
Static
BYO bare/static node (OVH, on-prem, anything we did NOT provision via a
cloud API). Brought up over SSH (stand-up-yubaba.sh / yah cloud machine bootstrap); reach is declared in the machine’s [connect]
block. No create/destroy driver — placement-only.
LocalStatic
Built-in static-file server bound to localhost. Inline-only; never declared as a standalone provider file because it carries no creds.
LocalContainer
Local container runtime (orbstack/colima/docker). Configured by a
provider file under .yah/infra/providers/ so the discovery hints +
runtime override sit in one place.
LocalProcess
Dev-tier compute: the component runs as a kamaji-supervised host
process against the operator’s real workspace, no container and no
build step per edit. Inline-only — it carries no credentials, and
“the machine you are sitting at” is not an account to point at.
See reconciler::local_process.
MiniflareContainer
Containerized miniflare (workerd subprocess) fronting MinIO — the pond-tier stand-in for a CF Worker + R2 static surface. Inline-only; the reconciler spawns miniflare via the JS runtime and starts a MinIO container on the local-container runtime.
MinioContainer
Containerized MinIO providing an S3-compatible API — the pond-tier stand-in for Cloudflare R2. Inline-only; the reconciler spins up the container on the local-container runtime and auto-creates the declared bucket on first up.
LocalPgDev
Dev-tier PostgreSQL — a real server speaking real pgwire on loopback,
supervised by kamaji as the yah-pg-dev workload (W265, R584-F1). No
docker daemon: the driver fetches a per-arch PostgreSQL tarball on first
run and initdbs a cluster under .yah/infra/state/dev/pg/.
Inline-only — it carries no credentials worth a provider file (the
cluster is loopback-bound with a fixed dev password). Declared under
MirrorConfig::drivers, not providers:
[drivers.pg]
kind = "local-pg-dev"Trait Implementations§
impl Copy for Provider
Source§impl<'de> Deserialize<'de> for Provider
impl<'de> Deserialize<'de> for Provider
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for Provider
impl StructuralPartialEq for Provider
Auto Trait Implementations§
impl Freeze for Provider
impl RefUnwindSafe for Provider
impl Send for Provider
impl Sync for Provider
impl Unpin for Provider
impl UnsafeUnpin for Provider
impl UnwindSafe for Provider
Blanket Implementations§
impl<T> Allocation for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<K, Q> Equivalent<Q> for K
impl<K, Q> Equivalent<Q> for K
Source§fn equivalent(&self, key: &Q) -> bool
fn equivalent(&self, key: &Q) -> bool
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> Fruit for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more