Commit graph

57 commits

Author SHA1 Message Date
Luna
3dd82ab18b
docs(packaging): document desktop GUI frontends and optdepends
The GUI frontends landed with README/CLI/operations docs but no packaging
coverage. Add a PACKAGING.md section with the command/script/requirement
table for both frontends, note why stdlib tkinter is still an optdepend
rather than a hard dependency, and record that packaging must not grant the
GUIs privileges beyond the operator's own account.

Add the matching PKGBUILD optdepends (`tk`, `pyside6`), plus
`python-pystray`/`python-pillow` for the tray applet, which were never
listed when it shipped. Also add `gui/` to the CLAUDE.md architecture notes
and state snapshot.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JX86xeoBJVBb16qHkDf53K
2026-07-22 04:33:55 -07:00
Luna
457c7604ba
feat(gui): add optional tkinter and Qt6 desktop dashboards
Add two optional windowed frontends over the same local state the TUI and
web console read: `enodia-sentinel gui` (stdlib tkinter) and
`enodia-sentinel gui-qt` (PySide6, new `[qt]` extra).

Both share `gui/model.py`, a GUI-free presentation model over
`tui.collect_model`, so every formatter is unit-testable without a display
server. Only `app.py` and `qt_app.py` import GUI libraries, enforced by
import-guard tests mirroring the tray applet's boundary.

Tabs cover status, alerts, incidents, posture, integrity, response plans,
and the event tail, plus daemon-control buttons via systemctl. Response
plans are display-only; the GUIs never execute containment commands. Core
runtime dependencies stay empty.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JX86xeoBJVBb16qHkDf53K
2026-07-22 04:33:49 -07:00
Luna
9e3575461b
docs(go): save port checkpoint 2026-07-22 04:09:14 -07:00
Luna
a25c73ab1a
feat(go): report integrity anchor context 2026-07-22 04:04:58 -07:00
Luna
88d7a6e3b8
feat(go): enrich snapshots with package ownership 2026-07-22 03:50:55 -07:00
Luna
6355fb403d
feat(go): expose retained incident views 2026-07-22 03:12:34 -07:00
Luna
eff31b3a82
feat(go): enrich snapshots asynchronously 2026-07-22 03:10:26 -07:00
Luna
1ab4add205
feat(go): chain retained snapshot artifacts 2026-07-22 02:20:46 -07:00
Luna
fd2bbba0d7
feat(go): add bounded hot-path enrichment 2026-07-22 02:17:35 -07:00
Luna
538d1d954a
feat(go): persist Python-compatible incidents 2026-07-22 02:17:35 -07:00
Luna
f85c2e831a
feat(go): advance validation sidecar toward production 2026-07-22 01:52:19 -07:00
Luna
6a06eba255
docs(behavior): add behavioral spec for sweep + baseline lifecycle
Start a per-subsystem behavioral specification under docs/behavior/ that
documents the current Python agent's observable behavior at reimplementation
fidelity. It is the parity contract for the Go 2.0 rewrite (Active Migration
Track), complementing the product-oriented docs/SPECIFICATION.md.

Section 1 covers system-state capture, the daemon sweep loop, alert dedup, the
detector registry gating, and the baseline lifecycle — including three
behaviors the port must match exactly: baselines are rebuilt (not loaded) at
daemon start, arming is time-based via baseline_grace, and first_seen's
initialized flag persists across restarts while listener/SUID baselines
re-learn every start.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D36ffwoga57opftxzJVHPW
2026-07-19 10:08:32 -07:00
Luna
6a27e6e770
feat(go): port memory-map detector tranche 2026-07-11 01:19:56 -07:00
Luna
c6f7219de8 feat(go): port socket detectors 2026-07-10 17:29:07 -07:00
Luna
fc9b5f0448 feat(go): port process access detectors 2026-07-10 05:19:56 -07:00
Luna
f02509aab5 feat(go): add Phase 1 parity sidecar 2026-07-10 05:02:50 -07:00
Luna
65f5be6420 feat(schema): add Alert -> enodia.event.v1 reference wrapper 2026-07-10 04:44:07 -07:00
Luna
54bd8ff1f4 feat(schema): add enodia.event.v1 EVE-style event envelope 2026-07-10 04:43:35 -07:00
Luna
8d929b50bd
Add Suricata assimilation design 2026-07-10 04:16:31 -07:00
Luna
9784033f86
Add host event rules for bind and capability activity 2026-07-10 04:11:33 -07:00
Luna
b40ac4252c
Add host correlation and assurance coverage 2026-07-10 04:04:27 -07:00
Luna
8194d13734 Expand TUI guidance and host detection coverage 2026-07-09 19:16:27 -07:00
Luna
3b037646d2 Add typed host event egress rule 2026-07-09 06:04:30 -07:00
Luna
0b010df514
Add audited response apply rehearsal 2026-07-09 05:56:25 -07:00
Luna
51d52b5229
Expand TUI and package recovery planning 2026-07-09 05:51:59 -07:00
Luna
cab60cd633 Add terminal TUI and shell completion 2026-07-08 20:47:58 -07:00
Luna
a7535cfc56 Add rule event compatibility tests 2026-07-08 17:09:00 -07:00
Luna
66472134d8 Add enrichment and SID coverage gates 2026-07-08 17:05:17 -07:00
Luna
2d23e8b878 Record tray applet completion and SID coverage design draft
Update the CLAUDE.md snapshot and roadmap for the merged tray applet,
note the shared-checkout commit hygiene rule, and save the agreed
SID drill coverage design as a draft spec.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 06:37:07 -07:00
Luna
036469ed21 Document the desktop tray applet and check --json
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 07:40:06 -07:00
Luna
5e560f4307 Add tray applet implementation plan
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 05:49:06 -07:00
Luna
2e7bf8b248 Add tray applet design spec
Optional desktop system-tray applet as a thin launcher over the existing
CLI and systemd. Core agent stays stdlib-only; tray ships as an optional
[tray] extra (pystray + Pillow). Covers menu actions, icon state, error
handling, packaging, and testing seams.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 05:12:16 -07:00
Luna
dbbe35b3fc Add baseline reconciliation: accept audited drift with a reason
Implements the v0.9 roadmap item from the approved design spec. Operators
accept a specific FIM/package/listener/SUID drift item with a mandatory
reason; the ack suppresses that one alert only while the live state still
matches the recorded fingerprint. Content kinds (fim/pkgfile) re-alert on
further change; identity kinds (listener/suid) retire on TTL or revoke.

- reconcile.py: ReconcileStore (mtime-cached, fails closed on missing/corrupt
  store), fingerprint builders, and the filter_alerts chokepoint.
- CLI: baseline accept/revoke/list with --reason/--expires/--force/--stale/--json.
- Wired at the daemon sweep + eBPF chokepoint, fim-check, and /api/integrity.
- RECONCILE_V1 schema, config knob, COMMAND_REFERENCE/SCHEMAS/OPERATIONS/ROADMAP
  docs, and reconcile unit/CLI/integration tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 10:33:55 -07:00
Luna
3d2047fde2 Add baseline reconciliation design spec
Covers the v0.9 roadmap item: accept legitimate FIM/package/listener/SUID
drift with a mandatory reason and audited fingerprint-bound ack store.
Approach A selected: ReconcileStore with re-alert-on-fingerprint-change,
optional TTL, and stale tracking. Filter applied at daemon chokepoint,
CLI fim check, and dashboard API.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 03:49:59 -07:00
Luna
69798b26e4 Add systemd unit posture checks
Close the remaining v0.8 posture bullet: flag enabled systemd units with
group/world-writable unit files (systemd_unit_writable, sid 100050) and
units whose ExecStart binary runs from a writable/unsafe path such as
/tmp, /dev/shm, /var/tmp, /home, or /run/user (systemd_exec_unsafe_path,
sid 100051).

- posture.systemd_findings/parse_systemctl_show/read_systemd_units, wired
  into posture.run() behind the new posture_systemd config knob.
- read_systemd_units shells out to systemctl with timeouts and fails closed
  on non-systemd hosts; the dashboard /api/posture surfaces findings for free.
- Unit tests for the parser and evaluator; TestRunIntegration patches the
  new reader so run() never touches live systemctl.
- Docs: COMMAND_REFERENCE posture list, ROADMAP v0.8 bullet, RUNBOOKS
  Runbook 2 triggers, config TOML knob.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 02:27:19 -07:00
Luna
11d91a40b4 Add dashboard integrity/watchdog console
Surface integrity and watchdog state in the read-only dashboard via a new
/api/integrity endpoint and integrity_report(): watchdog/heartbeat
verdict, FIM baseline and package-DB anchor freshness, pacman keyring and
SigLevel posture, and Sentinel's own self-integrity footprint. The
endpoint summarizes existing anchors and heartbeats only — it runs no live
FIM or package verification from the request path, keeping the dashboard
read-only.

Add the enodia.integrity.v1 schema (schemas.py + docs/SCHEMAS.md) with a
contract test, a new "Integrity" dashboard tab and summary metric, and
web tests for the report shape, schema contract, endpoint, and console
wiring. Docs updated; completes the v1.0 "dashboard to local console"
roadmap item.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 17:39:53 -07:00
Luna
e0e5cd62d9 Document packaging and release artifacts 2026-06-17 00:22:43 -07:00
Luna
aee984d862 Version documentation index and contracts 2026-06-16 04:14:26 -07:00
Luna
7a176ea238 Add stable v1 schema IDs and docs 2026-06-16 04:05:12 -07:00
Luna
bfef23fc4a Add dashboard theme settings and contrast tests 2026-06-16 02:29:45 -07:00
Luna
7f4d5b42fd Generate event rule documentation 2026-06-15 18:52:28 -07:00
Luna
e43d7689a0 Add dashboard rule atlas 2026-06-15 16:37:51 -07:00
Luna
5db88d285e Add event rule inspection commands 2026-06-15 05:36:58 -07:00
Luna
1f05923e0f Document current Sentinel project state 2026-06-13 06:46:33 -07:00
Luna
6a09fbb7f9 Frame Sentinel as IDS IPS and EDR 2026-06-13 05:59:03 -07:00
Luna
1a5b6f1d8d Persist dry-run response plans 2026-06-13 05:53:48 -07:00
Luna
812cf0c836 Describe Sentinel as endpoint detection and response 2026-06-13 05:49:34 -07:00
Luna
a51478fa22 Add event-driven memory syscall telemetry 2026-06-13 05:45:30 -07:00
Luna
893409b549 Add memory obfuscation and ps-hidden process detection 2026-06-13 03:55:09 -07:00
Luna
cb334c0c94 Expand monitoring for credential theft and covert protocols 2026-06-13 03:30:36 -07:00