open-ocean is the community full system architecture and installer layer of the ellmos ecosystem. Because it manages recipe resolution, component verification, local fetching/placement, and skill activation, it strictly enforces the following architectural security invariants:
- Local-First & Zero-Egress Invariant:
- All manifest evaluations, hash verification, component expansions, and activation steps execute locally on the host machine.
- The core toolset emits zero telemetry, collects no diagnostic payloads, and connects to no external analytics or cloud services.
- Fail-Closed Verification & Transactional Rollback:
- Every bundle manifest and component reference is cryptographically verified against pinned SHA hashes before any write action is performed.
- If a hash verification check fails, execution terminates immediately (exit code 2) without writing anything to disk.
- All filesystem writes performed during live runs (
--apply) are recorded in an activation log (ocean-dev.activation-log.json). Rollback (--rollback) reverses exactly these recorded actions in strict reverse order without heuristic guessing.
- Mandatory Dry-Run-First Safety Gate:
- Dry-run is the mandatory default mode for all commands (
ocean_dev.py). - No filesystem mutations occur unless
--applyis explicitly passed by the operator.
- Dry-run is the mandatory default mode for all commands (
- Sandboxed Activation Isolation:
--skills-dirnever defaults to a live agent's active skills directory (e.g.~/.claude/skills).- The default target is an isolated sandbox (
<workspace>/skills) that starts empty, ensuring active host agent configurations cannot be silently altered or polluted during testing.
- Non-Elevation & Least Privilege:
- All scripts and tools run completely unprivileged in standard user space. Root or administrator privileges are never requested or required.
- Fenced Runtime Shutdown:
- On POSIX, the runtime child starts in its own session/process group. The supervisor captures that identity before writing the running receipt, sends stop signals to the whole group, and reports stopped only after a bounded empty-group check.
- A missing, malformed, or changed POSIX fence fails closed. This does not claim containment of a provider that calls setsid()/daemonizes, nor a Windows Job Object guarantee; those remain separate host gates.
| Version | Supported | Notes |
|---|---|---|
0.1.x |
✅ | Active release stream |
< 0.1.0 |
❌ | Pre-release / development builds |
If you discover a security vulnerability or unexpected privilege escalation in open-ocean:
- Do not open a public issue.
- Report the vulnerability privately via GitHub Security Advisories or directly to the security team at security@ellmos.ai and security@open-bricks.org (fallback: support@lukasgeiger.com, lukas@open-bricks.org).
- Please include detailed reproduction steps, environment details, relevant activation logs, and expected versus observed behavior.
- We acknowledge receipt within 48 hours and coordinate remediation releases promptly with a 5 business days triage guarantee.
open-ocean ist die Architektur- und Installer-Schicht des freien Community-Vollsystems im ellmos-Ökosystem. Da Rezept-Auflösungen, Komponenten-Verifizierungen, lokales Platzieren und Skill-Aktivierungen gesteuert werden, gelten verbindliche Sicherheitsinvarianten:
- Local-First & Zero-Egress-Invariante:
- Sämtliche Manifest-Auflösungen, Hash-Prüfungen, Komponenten-Pläne und Aktivierungsschritte laufen ausschließlich lokal auf dem Host-System.
- Die Werkzeuge erzeugen keinerlei Netzwerktelemetrie, sammeln keine Nutzungsdaten und übertragen keine Informationen an externe Cloud-Dienste.
- Fail-Closed Verifikation & Transaktionaler Rollback:
- Jedes Bundle-Manifest und jede Komponenten-Referenz wird vor jeglicher Schreiboperation kryptografisch gegen fixierte SHA-Hashes geprüft.
- Schlägt eine Verifikation fehl, bricht die Ausführung sofort ab (Exit-Code 2), ohne eine Datei zu schreiben.
- Alle im Scharfbetrieb (
--apply) durchgeführten Datei- und Verzeichnisoperationen werden in einem Aktivierungsprotokoll (ocean-dev.activation-log.json) festgehalten. Ein Rollback (--rollback) nimmt exakt diese Einträge in umgekehrter Reihenfolge ohne Heuristiken zurück.
- Verbindliches Dry-Run-Sicherheitsgatter:
- Dry-Run ist das verbindliche Standardverhalten aller Werkzeuge (
ocean_dev.py). - Reale Schreiboperationen auf dem Dateisystem finden ausschließlich statt, wenn der Operator explizit
--applyübergibt.
- Dry-Run ist das verbindliche Standardverhalten aller Werkzeuge (
- Sandkasten-Isolation bei Aktivierung:
--skills-dirzeigt standardmäßig niemals auf das Produktivverzeichnis eines aktiven KI-Agenten (wie~/.claude/skills).- Standardziel ist eine isolierte Sandbox (
<workspace>/skills), sodass aktive Agenten-Konfigurationen bei Test- und Entwicklungsläufen nicht unbemerkt modifiziert werden können.
- Keine Rechteausweitung (User-Mode-Betrieb):
- Alle Skripte und Werkzeuge laufen vollständig im normalen Benutzerkontext ohne Administrator- oder Root-Rechte.
- Prozessgruppen-Fence beim Laufzeitstopp:
- Unter POSIX startet der Laufzeit-Kindprozess in einer eigenen Session/Prozessgruppe. Der Supervisor übernimmt deren Identität vor dem laufenden Beleg, signalisiert die gesamte Gruppe und meldet stopped erst nach einer begrenzten Bestätigung der Gruppenleere.
- Ein fehlender, fehlerhafter oder veränderter POSIX-Beleg führt zum geschlossenen Abbruch. Das garantiert weder die Eindämmung eines Providers mit setsid()/Daemonisierung noch ein Windows-Job-Object; beide Fälle bleiben eigene Host-Gatter.
| Version | Unterstützt | Hinweise |
|---|---|---|
0.1.x |
✅ | Aktiver Release-Zweig |
< 0.1.0 |
❌ | Vorabversionen / Entwicklungsstände |
Wenn Sie eine Sicherheitslücke oder unerwartete Rechteausweitung in open-ocean entdecken:
- Eröffnen Sie kein öffentliches Issue.
- Melden Sie die Schwachstelle vertraulich über GitHub Security Advisories oder direkt per E-Mail an security@ellmos.ai und security@open-bricks.org (Fallback: support@lukasgeiger.com, lukas@open-bricks.org).
- Bitte fügen Sie Reproduktionsschritte, Umgebungsdetails, relevante Aktivierungsprotokolle sowie das erwartete und beobachtete Verhalten bei.
- Wir bestätigen den Eingang innerhalb von 48 Stunden und koordinieren eine Fehlerbehebung mit einer verbindlichen 5-Werktage-Triage-Zusage.