Skip to content

FreeOS 0.0.2: in-host Organization, optional openXYOS sidecar - #55

Merged
XYAIStudio merged 4 commits into
mainfrom
cursor/freeos-in-host-org-4c05
Sep 18, 2026
Merged

XYAIStudio merged 4 commits into
mainfrom
cursor/freeos-in-host-org-4c05

Conversation

@XYAIStudio

@XYAIStudio XYAIStudio commented Sep 18, 2026 •

Copy link
Copy Markdown
Owner

Summary

Phase 1 of the FreeOS architecture root cure: desktop keeps one resident runtime (FreeOS/Octop Python host). Organization control-plane capabilities live in-host (org_os / /api/org-module/* / native Organization UI). The full openXYOS Node stack on 127.0.0.1:3780 is optional (FREEOS_ORG_SIDECAR=1) — not install-blocking, not first-paint.

Product version is 0.0.2 so this line is distinct from sidecar-era 0.0.1 Windows builds. Do not merge until review; GitHub Release tag v0.0.2 is for after this lands on main.

North star unchanged: FreeOS produces experts/skills/plugins/MCP → assembles into organization → org assets feed back → freeos org loop run stays runnable without Node health.

Target branch

  • Base is develop (feature / fix — default)
  • Base is main (requested for this architecture slice)

Type of change

  • Bug fix (false ready / connection refused / install abort on livez)
  • New feature (in-host Organization workbench)
  • Breaking change (sidecar no longer auto-started; opt in with FREEOS_ORG_SIDECAR=1)
  • Documentation
  • Refactor / chore
  • Release / hotfix (version stamps → 0.0.2; do not tag until merge)

What changed

  1. Organization page — native FreeOS workbench (status, colleagues, assemble/pack/loop/produce, catalog). No iframe + livez gate as the only path. Optional sidecar URL stays under Advanced.
  2. Installer / desktop — NSIS no longer extracts/starts openxyos-runtime or Aborts on livez. Wails does not set OPENXYOS_BASE_URL / start Node unless opted in. Portable start.sh / start.bat match.
  3. Mutual growth in-host — freeos org loop run and /api/org-module/loop/run no longer ensure_sidecar or wait on 3780. Local {FREEOS_HOME}/openxyos-mirror/ + lifecycle registry remain the default path.
  4. Docs — README + docs/architecture-integration.md + desktop READMEs state single-runtime is intentional.
  5. Version — pyproject.toml, octop.__version__, NSIS/Wails product version, README badges, website copy → 0.0.2.

Test plan

  • make all passes locally (this environment: scoped pytest + vitest + tsc + mypy + ruff; full make all / Windows Go GTK not run here)
  • Added/updated tests

Verified on this branch:

uv run pytest tests/unit/test_org_module.py tests/unit/test_org_loop.py \
  tests/e2e/test_org_growth_loop.py tests/unit/test_asset_loop.py \
  tests/unit/test_colleague_spawn.py tests/unit/test_host_governance.py \
  tests/unit/test_openxyos_apply.py tests/unit/cli/test_version_cmd.py \
  tests/unit/desktop/test_nsis_uninstall.py \
  tests/unit/desktop/test_nsis_detail_encoding.py \
  tests/unit/desktop/test_openxyos_provisioner.py
# 93 passed

uv run pytest tests/unit/i18n -q
# 67 passed

cd dashboard && npx vitest run src/pages/Organization && npx tsc --noEmit
# 37 passed; tsc clean

uv run ruff check …  # All checks passed
uv run mypy --strict src/octop/modules/org_os …  # Success: no issues
uv run python -c "import octop; print(octop.__version__)"  # 0.0.2

Checklist

  • Updated CHANGELOG.md (if user-facing)
  • README / docs updated (if needed)
Open in Web Open in Cursor 

cursoragent and others added 4 commits September 18, 2026 10:19
Desktop keeps one Python runtime: org control-plane APIs and the
Organization page no longer require an always-on openXYOS Node on
3780. Install does not extract or livez-gate the sidecar; growth
loop and assemble/pack write the local mirror. Bump product stamps
to 0.0.2 so this line is distinct from sidecar-era 0.0.1 builds.

Co-authored-by: XYAI Labs <haoboy8@gmail.com>
Keep uv.lock, release-link examples, and desktop/sync workflow hints
aligned with the in-host 0.0.2 product line.

Co-authored-by: XYAI Labs <haoboy8@gmail.com>
Co-authored-by: XYAI Labs <haoboy8@gmail.com>
OPENXYOS_RUNTIME_ZIP_PRESENT is opt-in only (SHIP_OPENXYOS_RUNTIME=1).
CI desktop jobs skip org-sidecar so v0.0.2 NSIS does not carry the
~500MB Node payload. Rewrite desktop metadata for in-host org.

Co-authored-by: XYAI Labs <haoboy8@gmail.com>
@cursor

cursor Bot commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

QA: default Windows package no longer embeds the Node runtime zip

Default v0.0.2 desktop packaging is slim. OPENXYOS_RUNTIME_ZIP_PRESENT is off unless an opt-in build passes -DOPENXYOS_RUNTIME_ZIP_PRESENT via SHIP_OPENXYOS_RUNTIME=1. A leftover openxyos-runtime.zip on disk no longer auto-includes itself (!if /FileExists no longer defines PRESENT).

CI (octop-desktop.yml) now:

  • assembles the green zip with SKIP_ORG_SIDECAR=1
  • fails if org-sidecar/ is present
  • runs wails3 task package with SHIP_OPENXYOS_RUNTIME=0

Artifact expectation: the NSIS FreeOS-desktop-windows-*-0.0.2.exe is the Python host + Wails shell. It should not carry the ~500MB openxyos-runtime.zip / Node+openXYOS tree. Size should track the green portable zip (CPython + FreeOS wheel), not the sidecar-era half-gigabyte installer. Opt-in only: SHIP_OPENXYOS_RUNTIME=1.

Desktop metadata (config.yml / info.json) now says in-host organization; Node is optional via FREEOS_ORG_SIDECAR=1.

Not merging. Not tagging a GitHub Release.

@XYAIStudio
XYAIStudio marked this pull request as ready for review September 18, 2026 11:09
@XYAIStudio
XYAIStudio merged commit 645ee31 into main Sep 18, 2026
12 checks passed
@XYAIStudio
XYAIStudio deleted the cursor/freeos-in-host-org-4c05 branch September 18, 2026 11:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants