justme
2ae63653c4
feat: the node itself requires an owner passkey (shared by agent and probe) and reports it; the panel derives the account and passkey it is bound to [CI]
2026-10-08 06:15:07 +08:00
justme
8c37db1577
feat: every agent and probe must have an owner passkey, enforced by the panel, the installers and fleet-enroll [CI]
2026-10-08 06:04:04 +08:00
justme
0b384a58f5
fix: hash the node binary without the registry auth file that does not exist yet [CI]
ci/woodpecker/push/main-amd64-build Pipeline was successful
2026-10-08 05:43:51 +08:00
justme
4841f7b15b
feat: bind each node to the binary it runs at its first handshake; refuse changes that are not in a CI-signed manifest [CI]
ci/woodpecker/push/main-amd64-build Pipeline failed
2026-10-08 05:39:13 +08:00
justme
117d34a2af
feat: signed manifests live in the image registry; updaters and first deploys fetch and verify them without the panel [CI]
2026-10-08 05:05:13 +08:00
justme
4106f831dc
feat!: drop the backend-side elevation windows; password and passkey sessions share capabilities, passkeys guard what nodes verify; the trust page lists added and removed passkeys [CI]
2026-10-08 04:57:28 +08:00
justme
f704c66dd9
feat: CI registers release manifests without a token; the panel verifies the CI signature instead [CI]
ci/woodpecker/push/main-amd64-build Pipeline failed
2026-10-08 04:22:01 +08:00
justme
fbda9487d5
feat: serve the web apps from the Backend (embedded, allow-listed, no filesystem access) so passkeys bind to the panel's own domain [CI]
ci/woodpecker/push/main-amd64-build Pipeline failed
2026-10-08 04:09:40 +08:00
justme
4a3631f82b
fix: gate password sessions on the login method so data-source sessions also get the passkey-only page [CI SKIP]
2026-10-08 04:09:39 +08:00
justme
3b88a3419d
ci: build the dev images for the genesis-pinned trust model [CI]
ci/woodpecker/push/main-amd64-build Pipeline was successful
2026-10-08 03:28:03 +08:00
justme
a2f88a344b
feat!: genesis-pinned operator set, server identity with an encrypted control link, key-less join codes; release key continuity
...
ci/woodpecker/tag/gitea-release Pipeline is pending
ci/woodpecker/tag/linux-release Pipeline failed
ci/woodpecker/tag/windows-release Pipeline was canceled
Join codes need no passkey touch and carry only public values (genesis
fingerprint, owner credentials, installer hashes). Nodes pin the genesis and
owners at enrollment and only follow passkey-signed operator set versions.
The panel's server key is listed in the set; pinned nodes require its
signature and run the control link under AES-256-GCM. Password sessions carry
no capabilities. The updater adopts a next_key from a signed manifest.
Bump version to 0.2.0. [CI SKIP]
2026-10-08 03:21:44 +08:00
justme
9bb6841dce
feat: pinned agents and probes only accept peers carrying the operator's proof; the panel ships the signed operator chain with the rosters [CI SKIP]
2026-10-07 23:24:33 +08:00
justme
fc2bbdcc6d
feat: operator trust root: passkey-signed operator set, signed join codes, nodes verify and pin the chain at enrollment [CI SKIP]
2026-10-07 23:19:59 +08:00
justme
321cacac32
feat: operator trust chain library (passkey-signed operator set, grants and code-key bindings) [CI SKIP]
2026-10-07 23:09:09 +08:00
justme
36f9816f40
test: allow the installer manifest paths in the OpenAPI layout check [CI SKIP]
2026-10-07 23:02:50 +08:00
justme
310b2b5b19
feat: the one-line installer verifies the CI-signed release manifest and pulls the image by digest [CI]
2026-10-07 23:01:45 +08:00
justme
a19e6548d3
feat: trust forwarded client addresses only from configured proxies (rate limit, audit, SSE) [CI]
...
Docs: access.md covers the missing node-side Backend identity and the hash-first install flow.
2026-10-07 22:51:44 +08:00
justme
ff45ad086e
feat!: sensitive actions need a fresh passkey touch (elevation windows), plus login page hint cleanup [CI]
2026-10-07 22:29:24 +08:00
justme
1379b8c7cb
feat: audit log of admin writes, sign-ins and key creation, with an audit tab [CI]
2026-10-07 22:17:52 +08:00
justme
359313a57b
feat: record who created join codes and who added each node [CI]
2026-10-07 22:12:15 +08:00
justme
6385c1b9a3
feat: sign in with a passkey (WebAuthn, ES256, discoverable credentials) and manage your passkeys [CI]
2026-10-07 21:57:19 +08:00
justme
ddb6608e32
feat!: capabilities replace API token scopes; every admin endpoint declares one, with a picker UI [CI]
2026-10-07 20:56:36 +08:00
justme
55b80f0a97
docs: access control and enrollment trust chain design [CI SKIP]
2026-10-07 20:45:23 +08:00
justme
af2962fc58
feat: one-line install for agents and probes from one shared script (curl | bash, zsh, PowerShell) [CI]
ci/woodpecker/push/main-amd64-build Pipeline was successful
2026-10-07 20:02:38 +08:00
justme
5528753d45
feat: deploy-node.sh backend takes extra env settings with --env [CI SKIP]
2026-10-07 19:40:13 +08:00
justme
b99b95c738
feat!: pre-handshake knock on the agent TCP ports; probes get the agent certificate public key [CI]
ci/woodpecker/push/main-amd64-build Pipeline was successful
2026-10-07 18:56:40 +08:00
justme
f03988d68b
feat: detect an agent's public IPv4 and IPv6 addresses automatically, manual values still win [CI]
ci/woodpecker/push/main-amd64-build Pipeline was successful
2026-10-07 18:12:17 +08:00
justme
9966ea5d63
fix: run the enrollment container on the host network [CI SKIP]
2026-10-07 17:20:08 +08:00
justme
b4b50c636f
feat: deploy-node.sh also deploys the Backend and migrates old probe.json [CI SKIP]
2026-10-07 17:12:00 +08:00
justme
a9f562441f
feat!: probes generate their own keys and enroll with a join token; node and peer keys are separate [CI]
ci/woodpecker/push/main-amd64-build Pipeline was successful
2026-10-07 16:57:34 +08:00
justme
1ff847e45a
feat: declare every protocol method's direction and enforce it in the router; add the zero-trust design [CI]
...
ci/woodpecker/push/main-amd64-build Pipeline was successful
Methods, roles and binary channels are declared in one table per plane (node and peer). RpcRouter checks direction, kind and role when handlers are registered, when messages arrive (fleet_protocol_violation, disconnect after repeated violations) and before sending. NodeConnection is split by responsibility.
2026-10-07 16:17:02 +08:00
justme
ee22309e65
fix: keep the Backend backup out of the journal [CI SKIP]
2026-10-07 15:07:39 +08:00
justme
9bcef56497
feat: daily node restart controlled from the admin, connect timings as a default line task [CI]
...
ci/woodpecker/push/main-amd64-build Pipeline was successful
Agents and Probes exit in order at a configured time (default 04:30 UTC+8, switch and time zone in the admin settings) and the service manager starts them again; a local restart_at or MOSHIRO_RESTART_AT wins. The connect kind (TCP connect and TLS handshake timings) is now a default continuous line template, with a section on the line page.
2026-10-07 14:56:50 +08:00
justme
388619b8b6
feat: add a re-runnable deploy script for container nodes and migrate listen.bind to :: [CI SKIP]
2026-10-07 14:17:50 +08:00
justme
3b73fd7474
fix: pass Backend listener port into container ( #18 ) [CI]
...
ci/woodpecker/push/main-amd64-build Pipeline was successful
Pass the host listener URL to the Backend container process.
2026-10-07 05:17:13 +00:00
justme
e423d9b506
fix: pass Backend listener port into container [CI]
ci/woodpecker/pr/verify Pipeline was successful
ci/woodpecker/pr/web-build Pipeline was successful
2026-10-07 13:13:21 +08:00
justme
3364f7903e
fix: bind Backend host service to its configured port ( #17 ) [CI]
...
ci/woodpecker/push/main-amd64-build Pipeline was successful
Keep the Backend host-network container reachable on its configured port.
2026-10-07 05:11:52 +00:00
justme
4e1b372e66
fix: bind Backend host service to its configured port [CI]
ci/woodpecker/pr/verify Pipeline was successful
ci/woodpecker/pr/web-build Pipeline was successful
2026-10-07 13:08:08 +08:00
justme
1b052dcaef
backend: confirm signed channel updates ( #16 ) [CI]
...
ci/woodpecker/push/main-amd64-build Pipeline was successful
Publish signed, channel-matched Backend update offers and host IPv6 diagnostics.
2026-10-07 05:05:08 +00:00
justme
33b9782a1d
ci: tolerate legacy Backend release webhook [CI]
ci/woodpecker/pr/verify Pipeline was successful
ci/woodpecker/pr/web-build Pipeline was successful
2026-10-07 13:00:35 +08:00
justme
84f9d211bc
backend: require confirmation for signed channel updates [CI]
ci/woodpecker/pr/verify Pipeline failed
ci/woodpecker/pr/web-build unknown status
2026-10-07 12:57:20 +08:00
justme
7160de2a36
shared: merge IPv4 and IPv6 collection ( #15 ) [CI]
...
ci/woodpecker/push/main-amd64-build Pipeline was successful
Preserve independent dual-stack measurement paths; PR checks passed.
2026-10-07 03:48:39 +00:00
justme
0eda0600cc
shared: add independent IPv4 and IPv6 collection [CI]
ci/woodpecker/pr/verify Pipeline was successful
ci/woodpecker/pr/web-build Pipeline was successful
2026-10-07 11:44:01 +08:00
justme
c974a7dddb
docs: merge the Fleet docs into backend/fleet/README.md, add TODO.md, unify the Backend compose, fix stale references [CI SKIP]
2026-10-07 03:36:34 +08:00
justme
a286a453f4
fix: let the update helper write the status volume owned by the app user [CI SKIP]
...
The status helper runs as root with all capabilities dropped, so it could not write a volume owned by uid 1654 (mktemp: Permission denied) and the volume updater failed on rootful Podman. Add DAC_OVERRIDE only.
2026-10-07 02:58:34 +08:00
justme
7613f67fed
fix: create the update directory for fresh named volumes [CI]
...
ci/woodpecker/push/main-amd64-build Pipeline was successful
ConfigStore.Write only created the config root, so a new volume without update/ made update offers fail with IO_PathNotFound. Create the parent directory on write and ship an empty update/ in the node images.
2026-10-07 02:51:39 +08:00
justme
ef75c9f510
fix: API tokens use the mos_ prefix [CI]
ci/woodpecker/push/main-amd64-build Pipeline was successful
2026-10-07 02:31:32 +08:00
justme
18a6898a27
fix: build the Backend image as glibc so it can load libssl [CI]
...
ci/woodpecker/push/main-amd64-build Pipeline failed
The musl AotAnywhere output is a fully static executable, which cannot dlopen libssl: the Backend exited with 'No usable version of libssl was found' on start. Use linux-x64/arm64 and the Debian runtime-deps base.
2026-10-07 02:21:31 +08:00
justme
2e146d4da7
refactor!: rename the project from Monitor to MoShiro [CI]
...
ci/woodpecker/push/main-amd64-build Pipeline was successful
Namespaces, assemblies, solution, binaries, images, systemd units, config paths, environment variables, protocol methods and the Linux user are all renamed. Breaking: existing databases, node identities and installed units must be recreated.
2026-10-07 02:03:25 +08:00
justme
90b3ca4dad
docs: update the architecture, README and related docs, drop the roadmap [SKIP TESTS]
2026-10-07 01:30:41 +08:00
justme
6e945657c1
feat: choose probe/agent links from the admin, fix the overview popover [CI]
...
The panel decides which probes link to which agents (probes dial out): an
auto-link setting plus per-pair manual overrides with a link matrix in the
admin, and the hovered overview card is lifted above its neighbours.
2026-10-06 23:22:45 +08:00
justme
d449e50791
feat: update controls in the admin, release token scope, build info in CI images [CI]
...
The versions page shows each node's update state with update buttons, API
tokens get a release scope that can only register releases (used by CI), and
the CI image and release builds now pass the tag, commit and build time.
2026-10-06 22:57:04 +08:00
justme
8dd3209a65
feat!: probes link to the panel; signed release updates for container nodes [CI]
...
Probes connect to the panel directly and get the agent list as desired state.
CI signs the image digest of agent and probe releases, the panel forwards the
manifest, and a host updater verifies it with a local public key, pulls by
digest and rolls back when the new version is unhealthy.
2026-10-06 22:42:12 +08:00
justme
c645851c0e
fix(ci): build native node images and add compose files [CI]
...
Restore with PublishAot so agent and probe images contain NativeAOT
binaries instead of a launcher that needs a .dll, fail the build when the
binary is too small, add agent and probe compose files, and document the
[CI] marker in AGENTS.md.
2026-10-06 21:43:57 +08:00
justme
e06462f033
ci: build main images [CI]
2026-10-06 21:25:53 +08:00
justme
14b0de3544
feat: node info, build info and acrylic web theme
...
Squash of recent dev work: return_session login, backend switcher, line
detail timeline, overview strips, node platform/country/ISP info with flags
and icons, build info (version, tag, time) behind site.show_build, and the
acrylic display theme.
2026-10-06 21:24:25 +08:00
justme
10634bdd80
docs: add project agent instructions [SKIP TESTS]
...
Merge PR #14 .
2026-10-06 09:14:54 +00:00
justme
f8175f5734
docs: add project agent instructions [SKIP TESTS]
2026-10-06 17:13:08 +08:00
justme
a2a0eee46a
docs: explain development and CI workflow [SKIP TESTS]
...
Merge PR #13 .
2026-10-06 08:46:12 +00:00
justme
929882cb04
docs: explain development and CI workflow [SKIP TESTS]
2026-10-06 16:44:27 +08:00
justme
2def8e69f9
ci: publish amd64 dev images to Zot [CI]
...
Merge PR #12 . Publish development images separately from release images.
2026-10-06 08:28:53 +00:00
justme
efa17b4485
ci: use SKIP TESTS marker for backend tests [SKIP TESTS]
2026-10-06 16:26:57 +08:00
justme
56d80e8c80
ci: build web after tests and allow skipping tests [CI SKIP]
2026-10-06 16:23:13 +08:00
justme
1da8d083c1
ci: skip backend tests only with CI SKIP suffix [CI SKIP]
2026-10-06 16:21:04 +08:00
justme
e67d3294a2
ci: allow skipping verify with CI SKIP suffix [CI SKIP]
2026-10-06 16:18:59 +08:00
justme
383afa777b
ci: publish main amd64 images to dev Zot [CI SKIP]
2026-10-06 16:14:50 +08:00
justme
da0a0e3443
ci: parallelize opt-in main amd64 builds [CI]
...
Merge PR #11 . Build Backend, Agent, and Probe concurrently on main.
2026-10-06 08:04:13 +00:00
justme
19c6cab104
ci: run main amd64 image builds in parallel [CI SKIP]
2026-10-06 15:59:54 +08:00
justme
dd6ac4258d
ci: opt in to main amd64 builds [CI]
...
Merge PR #10 . Main Linux amd64 images are built only when explicitly marked.
2026-10-06 07:53:57 +00:00
justme
46499b10b6
ci: build amd64 on opt-in main commits [CI SKIP]
2026-10-06 15:40:35 +08:00
justme
0f19d5047d
ci: make main fastlane manual only [CI SKIP]
2026-10-06 15:18:12 +08:00
justme
5cb64d2436
docs: clarify no-op main fastlane for docs
...
Describe the successful no-op when only documentation changes.
Co-authored-by: JustMe <mr.toing@outlook.com >
2026-10-05 18:58:35 +00:00
justme
9dcb95ccd0
fix(ci): trigger fastlane on merged main PRs
...
Handle merged Gitea PRs as well as direct pushes to main.
Co-authored-by: JustMe <mr.toing@outlook.com >
2026-10-05 18:42:39 +00:00
justme
4bde12b493
fix(ci): trigger fastlane on merged main PRs
...
Run the Linux amd64 fast-lane after a PR is merged to main, while leaving unmerged PRs as no-ops.
Co-authored-by: JustMe <mr.toing@outlook.com >
2026-10-05 18:35:24 +00:00
justme
c4f1fd9e89
docs: clarify main fastlane merge trigger
...
Explain that feature PRs update main images after merging.
Co-authored-by: JustMe <mr.toing@outlook.com >
2026-10-05 18:08:49 +00:00
justme
ee24593b2a
fix(ci): emit native apphosts in fastlane images
...
Force native apphost generation and validate fastlane output files.
Co-authored-by: JustMe <mr.toing@outlook.com >
2026-10-05 17:43:22 +00:00
justme
7cc3afbd9b
fix(build): use native NativeAOT SDK in Linux fast lane
...
Only use the StuDev AotAnywhere SDK when explicitly enabled by Windows cross-platform builds.
Co-authored-by: JustMe <mr.toing@outlook.com >
2026-10-05 17:37:50 +00:00
justme
75d6bd5540
fix(ci): use host networking for native builds
...
Run NativeAOT Buildah steps with host networking on the Linux agent.
Co-authored-by: JustMe <mr.toing@outlook.com >
2026-10-05 17:31:24 +00:00
justme
d6b919bc42
fix(ci): handle empty changed-file lists
...
Use a Git diff fallback when Woodpecker provides no changed-file list.
Co-authored-by: JustMe <mr.toing@outlook.com >
2026-10-05 17:27:35 +00:00
justme
dcf096431d
ci: add dependency-aware main fastlane
...
Add Linux amd64 fast-lane OCI builds selected by project dependencies.
Co-authored-by: JustMe <mr.toing@outlook.com >
2026-10-05 17:22:26 +00:00
justme
deceeb19f3
feat: add cross-platform release pipeline [CI SKIP]
2026-10-04 14:01:26 -07:00
justme
26620707a0
chore: initial project import
2026-10-04 21:46:39 +08:00