dirless-ops v0.1.5
dirless-ops
Management plane for the Dirless platform. Exposes a JSON API (Grip) and a Lucky web UI across two domains:
- admin.dirless.com — Dirless employee admin UI. Login at
/admin-login. - portal.dirless.com — Customer self-service portal. Login at
/login.
Both domains are served by the same binary on port 5001. Caddy enforces domain separation.
Structure
| Directory | Purpose |
|---|---|
src/ |
Grip JSON API — customers, nodes, health checks, provision jobs, portal auth |
webui/ |
Lucky web app served at the two domains above |
Build & test
shards install
crystal spec
crystal build src/dirless_ops.cr # API + deployer binary
crystal build webui/src/dirless_ops_webui.cr # Lucky web UI binary
Config
Set DIRLESS_OPS_CONFIG to override the config path (default: /etc/dirless-ops/dirless-ops.toml). See config/dirless-ops.toml.example for all options.
Deployer mode
./dirless_ops --deploy # claim and process one pending provision job, then exit
Used by a systemd timer on the ops machine to drain the provision job queue without a separate deployer process.
API
All routes are under /v1 and require Authorization: Bearer <api_key>:
| Method | Route | Description |
|---|---|---|
GET |
/v1/health |
Unauthenticated health check |
GET|POST |
/v1/customers/ |
List / create customers |
GET|PATCH|DELETE |
/v1/customers/:name |
Get / update / delete a customer |
GET|POST |
/v1/nodes/ |
List / create nodes |
GET|PATCH|DELETE |
/v1/nodes/:name |
Get / update / delete a node |
GET |
/v1/status |
Sync and agent status across all customers |
POST |
/v1/portal/register |
Customer self-registration |
POST |
/v1/portal/login |
Customer portal login |
GET|POST |
/v1/provision-jobs/ |
List / create provision jobs |
GET|PATCH |
/v1/provision-jobs/:id |
Get / update a provision job |
Deployment
Deploy via the dirless-infra Ansible playbooks:
# Full provision (requires KeePass)
ansible-playbook -i ansible/inventory/ops_hosts.yml ansible/ops-complete.yml
# Binary-only redeploy (no secrets needed)
ansible-playbook -i ansible/inventory/ops_hosts.yml ansible/ops-deploy-only.yml
Repository
dirless-ops
Owner
Statistic
- 0
- 0
- 0
- 0
- 8
- about 7 hours ago
- March 22, 2026
License
Other
Links
Synced at
Sat, 04 Jul 2026 02:14:20 GMT
Languages