Skip to content

fix(memory): EverOS memory unavailable on native Windows #176

Closed

Description

@Kendrick-Song

Problem

EverOS (everos/core/persistence/locking.py:13) imports fcntl at module top, which is POSIX-only. On native Windows, everos server start crashes with ModuleNotFoundError: No module named 'fcntl'.

Current state (after #170)

  • Raven side: platform guard added -- onboard skips memory config on win32, backend.start() degrades to NoOpAdapter with a warning. Users are guided to WSL.
  • EverOS side: upstream declares "Windows is not supported" in docstring. The win_fcntl_shim in Raven's embedded mode used to paper over this, but HTTP-only mode spawns a child process where the shim has no effect.

Impact

Windows users get no EverOS memory at all (no episodes, profiles, skills, recall). Native Markdown memory (MEMORY.md) still works.

Possible fixes

  1. EverOS upstream: replace fcntl with portalocker (or equivalent) in everos/core/persistence/locking.py -- same approach Raven took in raven/utils/portable_lock.py
  2. Raven workaround: inject win_fcntl_shim into the spawned subprocess environment before everos server start (fragile, depends on everos internals)
  3. Accept and document: Windows users use WSL (current state)

Option 1 is the clean fix but requires an everos release.

Evidence

  • everos==1.1.3, everos/core/persistence/locking.py:13: import fcntl
  • Raven guard: raven/plugin/memory/everos/backend.py (win32 check in start())
  • Raven guard: raven/cli/onboard_commands.py (win32 check in step 4)

Activity

  1. added
    bugSomething isn't working
    enhancementNew feature or request
    and removed
    bugSomething isn't working
    on Jul 22, 2026
  2. gloryfromca commented on Aug 19, 2026

    @gloryfromca
    Member

    Still open on v0.1.12, but the shape has changed - recording it so nobody re-diagnoses it from scratch.

    Upstream is unchanged. everos 1.2.1 still imports fcntl at module top in everos/core/persistence/locking.py, and its docstring still reads "Windows is not supported - see project README on platform scope".

    Raven no longer crashes into it. EverosBackend.start() gates native Windows off explicitly before it goes anywhere near the server:

    EverOS memory is not available on native Windows.
    Run Raven inside WSL for full memory support, or run `raven onboard` to reconfigure.
    

    raven/plugin/memory/everos/backend.py:558-568

    So today's state is "documented as unsupported", not "fixed": Windows users still get no episodes, profiles, skills, or recall. Keeping this open as the tracking issue for real Windows support, which needs the upstream lock to grow a Windows path first.

  3. 0xKT commented on Oct 9, 2026

    @0xKT
    Member

    Fixed on main by #791 (merge commit 2b3cce7), shipped since v0.2.2: the memory plugin now pins everos[multimodal]==1.4.1, and EverOS 1.4.x takes its memory-root lock through portalocker instead of fcntl (native Windows support landed upstream in 1.4.0). The same PR removed the Raven-side Windows gate (everos_platform_note, ServiceState.UNSUPPORTED, the wizard's WSL notice and the import.scan refusal) and taught the plugin to find everos.exe, identify a running server through WMI and PowerShell, spawn it in its own process group and stop it with Ctrl-Break; its verification includes a Windows 11 run where a chat turn was stored as an episode. If long-term memory still fails on a native Windows install, please open a new issue with the gateway and everos server logs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions