dashboard/.gitignore | 1 + dashboard/Cargo.lock | 451 ++++++++++++- dashboard/Cargo.toml | 4 + dashboard/agent/install.ps1 | 41 ++ dashboard/agent/install.sh | 53 ++ dashboard/agent/setup.mjs | 192 ++++++ dashboard/agent/source.json | 4 + dashboard/package.json | 1 + dashboard/pnpm-lock.yaml | 4 +- dashboard/src/auth.rs | 1114 ++++++++++++++++++++++++++++++++ dashboard/src/cache.rs | 73 --- dashboard/src/core.rs | 9 +- dashboard/src/main.rs | 115 +++- dashboard/src/mcp.rs | 190 ++++-- dashboard/src/relay.rs | 27 + dashboard/src/shale.rs | 52 +- dashboard/src/telemetry.rs | 24 +- dashboard/src/users.rs | 633 ++++++++---------- dashboard/web/api.contract.ts | 33 +- dashboard/web/auth.ts | 24 + dashboard/web/components/Sidebar.tsx | 3 +- dashboard/web/main.tsx | 8 + dashboard/web/pages/Account.tsx | 134 ++-- dashboard/web/pages/MCP.css | 79 ++- dashboard/web/pages/MCP.tsx | 189 +++--- dashboard/web/pages/MCPAccess.tsx | 34 + dashboard/web/pages/MCPConsent.tsx | 84 +++ dashboard/web/pages/SignIn.css | 10 + dashboard/web/pages/SignIn.tsx | 58 ++ dashboard/web/pages/Users.tsx | 100 +-- dashboard/web/types/mcp.ts | 14 +- dashboard/web/types/users.ts | 3 - nixos/configuration.nix | 3 + nixos/dashboard.nix | 6 +- readme.md | 110 +++- service/copyparty/copyparty.conf | 7 +- tools/build-agent.py | 29 + tools/dashboard-agent-test.py | 175 +++++ tools/dashboard-auth-test.py | 196 ++++++ tools/dashboard-backup-test.py | 71 ++ tools/dashboard-mcp-test.py | 2 +- tools/dashboard-relay-test.py | 2 +- tools/dashboard-shale-link-test.py | 56 +- tools/data.py | 48 +- tools/deploy.py | 3 + tools/import-dashboard-auth.py | 59 ++ tools/router.py | 57 +- 47 files changed, 3776 insertions(+), 809 deletions(-)