|
1 | 1 | # Viaduct |
2 | | -> Open-source control plane for mixed virtualization discovery, planning, and supervised migration operations. |
| 2 | +> Open-source control plane for virtualization migration assessment, planning, and controlled operator execution. |
3 | 3 |
|
4 | 4 | [](https://github.com/eblackrps/Viaduct/actions/workflows/ci.yml) |
5 | 5 | [](https://github.com/eblackrps/Viaduct/blob/main/LICENSE) |
6 | 6 |
|
7 | | -Viaduct helps operators understand mixed virtualization estates before they commit to a migration path. The repository combines a Go backend, REST API, CLI, React dashboard, and a standalone public site around one shared model for discovery, dependency-aware planning, migration readiness, saved pilot workspaces, and exported operator evidence. |
| 7 | +Viaduct helps operators discover mixed virtualization estates, map dependencies, build migration plans, and manage controlled migration work from one shared backend model. The repository combines a Go backend, REST API, CLI, React dashboard, and standalone public site around the same persisted inventory, workspace, planning, and reporting surfaces. |
8 | 8 |
|
9 | | -## Current Status |
| 9 | +## Current Focus |
10 | 10 |
|
11 | | -Viaduct is in active development. The strongest current story is: |
12 | | -- mixed-estate discovery |
13 | | -- dependency-aware assessment |
14 | | -- readiness and simulation |
15 | | -- supervised pilot planning |
16 | | -- operator-visible reporting and export |
| 11 | +Viaduct is built for operators who need: |
| 12 | +- mixed-estate discovery and inventory normalization |
| 13 | +- dependency-aware migration assessment |
| 14 | +- readiness and planning discipline before cutover work starts |
| 15 | +- controlled, reviewable operator workflows with exported evidence |
17 | 16 |
|
18 | | -The default first-run experience is the pilot workspace flow: create workspace, discover, inspect, simulate, save plan, and export report. Start in the local lab or a supervised pilot environment first. Do not assume unattended migration breadth across every connector pair. |
| 17 | +The default first-run experience is the WebUI-first workspace flow: start Viaduct, create a workspace, discover, inspect, simulate, save a plan, and export a report. The local lab remains the fastest path from fresh clone to a working dashboard and API. |
19 | 18 |
|
20 | 19 | ## Why Viaduct |
21 | 20 |
|
22 | 21 | Many teams do not need more abstract migration talk. They need to know what exists, what depends on what, what should move first, and what evidence is good enough to approve a pilot. Viaduct is aimed at that planning and handoff gap. |
23 | 22 |
|
24 | 23 | It is strongest when operators need: |
25 | 24 | - one normalized inventory across mixed platforms |
26 | | -- dependency context before planning a first wave |
| 25 | +- dependency context before sequencing migration work |
27 | 26 | - a persisted assessment record instead of disconnected notes and screenshots |
28 | 27 | - a CLI, API, and dashboard that reflect the same state |
29 | 28 |
|
@@ -53,39 +52,31 @@ It is strongest when operators need: |
53 | 52 | The cleanest path is the local lab in [examples/lab](examples/lab). |
54 | 53 |
|
55 | 54 | ```bash |
56 | | -mkdir -p ~/.viaduct |
57 | | -cp examples/lab/config.yaml ~/.viaduct/config.yaml |
58 | 55 | make build |
59 | 56 | make web-build |
60 | 57 | ./bin/viaduct version |
61 | | - |
62 | | -export VIADUCT_ADMIN_KEY=lab-admin |
63 | | -./bin/viaduct serve-api --port 8080 |
| 58 | +./bin/viaduct start |
64 | 59 | ``` |
65 | 60 |
|
66 | | -In another terminal: |
| 61 | +On a fresh source checkout, `viaduct start`: |
| 62 | +- creates `~/.viaduct/config.yaml` automatically when it is missing |
| 63 | +- points that config at the shipped `examples/lab/kvm` fixtures |
| 64 | +- serves the built dashboard and API together at [http://127.0.0.1:8080](http://127.0.0.1:8080) |
| 65 | +- opens the WebUI automatically on interactive local runs when practical |
67 | 66 |
|
68 | | -```bash |
69 | | -curl -X POST \ |
70 | | - -H "X-Admin-Key: lab-admin" \ |
71 | | - -H "Content-Type: application/json" \ |
72 | | - --data @examples/lab/tenant-create.json \ |
73 | | - http://localhost:8080/api/v1/admin/tenants |
74 | | - |
75 | | -curl -X POST \ |
76 | | - -H "X-API-Key: lab-tenant-key" \ |
77 | | - -H "Content-Type: application/json" \ |
78 | | - --data @examples/lab/service-account-create.json \ |
79 | | - http://localhost:8080/api/v1/service-accounts |
80 | | -``` |
| 67 | +For the default local lab path, the dashboard can use the built-in single-user fallback and does not require a pasted browser key. Tenant keys and service-account keys remain supported for multi-tenant, packaged, and pilot environments. |
81 | 68 |
|
82 | | -Then open [http://localhost:8080](http://localhost:8080), sign in with `lab-operator-key`, and run the workspace-first flow. |
| 69 | +Use these companion commands when you need them: |
83 | 70 |
|
84 | | -`viaduct serve-api` now serves the built dashboard automatically when assets are present in `web/dist`, a packaged `web/` directory, or an installed `share/viaduct/web` layout. If you prefer the Vite development server while changing frontend code, that flow still lives in [web/README.md](web/README.md). |
| 71 | +```bash |
| 72 | +./bin/viaduct status --runtime |
| 73 | +./bin/viaduct doctor |
| 74 | +./bin/viaduct stop |
| 75 | +``` |
85 | 76 |
|
86 | | -The runtime bootstrap stores keys in the browser session by default. Use the optional remember toggle only on a trusted workstation. |
| 77 | +`viaduct serve-api` remains the lower-level API command for container, service, and intentionally headless deployments. It still serves the built dashboard automatically when assets are present in `web/dist`, a packaged `web/` directory, or an installed `share/viaduct/web` layout. If you prefer the Vite development server while changing frontend code, that flow still lives in [web/README.md](web/README.md). |
87 | 78 |
|
88 | | -If you serve the dashboard from a non-default origin, configure `VIADUCT_ALLOWED_ORIGINS` on the API so the browser can reach tenant-protected routes. The same-origin packaged and local built path on `http://localhost:8080` does not need that override. |
| 79 | +If you serve the dashboard from a different browser origin, configure `VIADUCT_ALLOWED_ORIGINS` on the API so tenant-protected routes can be reached safely. The default same-origin local path on `http://127.0.0.1:8080` does not need that override. |
89 | 80 |
|
90 | 81 | Use these entrypoints next: |
91 | 82 | - Quickstart: [QUICKSTART.md](QUICKSTART.md) |
|
0 commit comments