_svcTechnical walkthrough
Your code becomes
a production system.
Follow one backend from repository conventions to generated Kubernetes resources, then from a fast local loop to an observable release in your cloud.
Your repository
Structure declares intent.
Sol discovers application units from a small, explicit convention. The suffix says how a unit runs; the domain path says who owns it.
_svcis a long-running HTTP service_workerconsumes background work and events_fnruns once or on a schedule
service · HTTPworker · Kafka consumerfunction · scheduled
myapp/
├─ app/
│ ├─ accounts/
│ │ └─ accounts_svc/
│ ├─ billing/
│ │ └─ reconcile_fn/
│ ├─ checkout/
│ │ └─ checkout_svc/
│ └─ payments/
│ └─ payment_worker/
├─ db/migrations/
├─ events/
├─ sol/
│ └─ prod/aws/us-east-1.yml
└─ sol.yml
_fn_svc_workerEach unit can carry its own sol.toml; the workspace root holds sol.yml and the target overlays under sol/<env>/<provider>/<region>.yml.
Sol builds a plan
Conventions compile into a complete system.
Sol combines repository structure, sol.yml, the selected destination, and safe defaults into one inspectable deployment model.
Repository analysis
- Discover domains and units
- Classify service, worker, or function
- Read configuration and destination
- Apply conventions and defaults
The plan is conceptual here; the CLI exposes the resulting resources and release evidence through the supported deployment and inspection commands.
Generated resources
Each primitive becomes ordinary Kubernetes.
Sol targets an open substrate in your account. The generated resources remain recognizable, inspectable, and operable with the tools you already use.
checkout_svcservicepayment_workerworkerreconcile_fnfunctionThese are emitted together as one set per unit — not a pipeline. Namespaces and service accounts are generated alongside them.
Configure and customize
Strong defaults. Explicit escape hatches.
Sol derives what it can and makes the remaining decisions visible. You configure application intent—not a second copy of the underlying platform.
# app/checkout/checkout_svc/sol.toml — every field is optional
[infra.scale]
replicas = 3
cpu = "250m"
memory = "256Mi"
[infra.env]
config = { LOG_LEVEL = "info" }
secrets = ["DATABASE_URL"]
[infra.rollout]
strategy = "canary"
steps = [10, 40, 100] # % of traffic Unit type · resource shape · service discovery · probes · observability labels · build identity
Destination · scaling · resource limits · external access · environment values · advanced overrides
Local to production
Increase realism without changing the contract.
Move from native-process feedback to production-shaped containers, then to Kubernetes in your cloud. Each stage answers a different question without inventing a different application model.
sol local runNative processesOne build · hot feedbacksol upLocal KubernetesReal containers · real chartssol deploy prod/aws/us-east-1Managed KubernetesAWS · GCP · conformant clustersInspect, operate, iterate
The evidence survives the terminal.
Status, releases, logs, metrics, traces, and rollback are part of the same workflow. When something fails, Sol connects the application model back to the Kubernetes evidence.
Prometheus metrics, Loki logs, Grafana dashboards, and trace context are wired to the unit identity.
Inspect release records, diagnose rollout state, and use sol rollback when a release should be reversed.
The resources run in your cloud. Inspect or modify them with standard Kubernetes tools—and keep them if you stop using Sol.
One model, end to end
Ready to see the real workflow?
The repository tutorial walks through the current pre-alpha CLI and the exact commands it supports today.