Local-first CreatureOS runtime for persistent Codex creatures
Project description
CreatureOS
CreatureOS is a local-first habitat for persistent Codex creatures.
You install it, start it, and talk to The Keeper. The Keeper helps summon creatures that remember what matters, keep working over time, and learn habits with you.
Quick Start
Preferred path:
Open Codex and type:
install creatureos using pip and spin it up
That is the nicest path because Codex can handle the install, check that the right dependencies are present, and get the server running for you.
Manual path:
pip install creatureos
creatureos serve
Then open:
http://127.0.0.1:404
If you want CreatureOS to work from a specific folder, either:
cdinto that folder first, then runcreatureos serve- or use
creatureos serve --workspace /path/to/work
What serve Does
creatureos serve handles the normal setup automatically:
- creates the CreatureOS data directory if needed
- creates the SQLite database if needed
- prepares the first-run Keeper state
- starts the local web app
You do not need to run a separate database setup step first.
What You Need
- Python
3.12+ - the
codexCLI on yourPATH - Codex authenticated locally
Optional:
- Tailscale, if you want private access from another device with
--tailscale
A Little More Context
CreatureOS gives you a small habitat of durable creatures that can:
- chat in a web UI
- keep memory, notes, and worklists
- practice habits over time
- work with local files, attachments, and browser flows
- keep their own private workshop files and scripts
CreatureOS is intentionally opinionated:
- chats get fresh Codex threads
- habit runs stay on a persistent creature thread
- state lives locally in SQLite
- creatures use purpose and habits as their authority
- The Keeper helps shape the rest of the habitat
Useful Startup Variants
Serve on localhost plus the detected Tailscale IPv4:
creatureos serve --tailscale
Force a fresh onboarding environment scan on boot:
creatureos serve --force-scan
Anchor creature file work to a specific directory:
creatureos serve --workspace /path/to/work
Where CreatureOS Stores Things
If you do not pass --workspace, CreatureOS uses your current working directory as the primary working root for creature file work.
The onboarding scan is broader than that. It looks across likely work directories on the machine so The Keeper can form a first impression of the kind of work you do.
Runtime state lives in a user-local data directory:
- Linux:
~/.local/state/creatureos - macOS:
~/Library/Application Support/CreatureOS - Windows:
%LOCALAPPDATA%\\CreatureOS
You can override that with:
creatureos --data-dir /path/to/data serveCREATURE_OS_DATA_DIRCREATURE_OS_DB_PATH
Development
If you are working from a checkout instead of PyPI:
python3 -m pip install -e .
Common commands:
python3 -m py_compile creatureos/cli.py creatureos/web.py creatureos/service.py creatureos/storage.py creatureos/config.py creatureos/codex_cli.py
node --check creatureos/static/creature_os.js
python3 -m pytest
Browser smoke test:
CREATURE_OS_RUN_BROWSER_SMOKE=1 python3 -m pytest -m browser
Storage-focused guardrails:
python3 scripts/check_storage_sql.py
python3 scripts/storage_smoke.py
Advanced Configuration
Environment variables:
CREATURE_OS_WORKSPACE_ROOT: primary working root for creature file workCREATURE_OS_DATA_DIR: runtime data directoryCREATURE_OS_DB_PATH: SQLite path overrideCREATURE_OS_HOST: bind host override for single-bind serve modeCREATURE_OS_PUBLIC_HOST: display host used in generated URLsCREATURE_OS_PORT: port overrideCREATURE_OS_CODEX_BIN: Codex CLI binaryCREATURE_OS_MODEL: model overrideCREATURE_OS_REASONING_EFFORT: reasoning effort overrideCREATURE_OS_TIMEOUT_SECONDS: read-only run timeoutCREATURE_OS_WRITE_TIMEOUT_SECONDS: write-enabled run timeoutCREATURE_OS_PYTHON_BIN: Python interpreter used by helper scripts
Notes:
serveruns a small supervisor that restarts the worker when core runtime files change.- Static JS and CSS are served with revalidation headers to avoid stale browser state.
- If a server is already running for the same CreatureOS data directory, a second
serveexits instead of starting a duplicate process.
Contributing
If you want to work on CreatureOS itself, see CONTRIBUTING.md.
License
CreatureOS is licensed under Apache 2.0. See LICENSE.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file creatureos-0.1.1.tar.gz.
File metadata
- Download URL: creatureos-0.1.1.tar.gz
- Upload date:
- Size: 2.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b414f3ebe39e99ffeb6424254040d6d7b726f238cba3e3d374a158ba4c0522b
|
|
| MD5 |
2948b48afcf39b07b512bd61a10df17b
|
|
| BLAKE2b-256 |
7fbdade5c6137136c47ac93bc4dba8eb68f252387280bff0f1a4ed2b9464ae82
|
Provenance
The following attestation bundles were made for creatureos-0.1.1.tar.gz:
Publisher:
publish.yml on CreatureOS/creatureos
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
creatureos-0.1.1.tar.gz -
Subject digest:
0b414f3ebe39e99ffeb6424254040d6d7b726f238cba3e3d374a158ba4c0522b - Sigstore transparency entry: 1194640612
- Sigstore integration time:
-
Permalink:
CreatureOS/creatureos@2f9dc8b2be313489167aa49fa28456a5036de974 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/CreatureOS
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2f9dc8b2be313489167aa49fa28456a5036de974 -
Trigger Event:
release
-
Statement type:
File details
Details for the file creatureos-0.1.1-py3-none-any.whl.
File metadata
- Download URL: creatureos-0.1.1-py3-none-any.whl
- Upload date:
- Size: 2.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ffab7f5a03830533cd41cdd5672bbe5728f6370849d377ae9c71c08f62b8570
|
|
| MD5 |
68f030c03771f1c23fec656489f5c15d
|
|
| BLAKE2b-256 |
f313008f5ee4cc7209d10bb3bfe8d57e3da31188acc5bbb51196ba570f887758
|
Provenance
The following attestation bundles were made for creatureos-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on CreatureOS/creatureos
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
creatureos-0.1.1-py3-none-any.whl -
Subject digest:
3ffab7f5a03830533cd41cdd5672bbe5728f6370849d377ae9c71c08f62b8570 - Sigstore transparency entry: 1194640658
- Sigstore integration time:
-
Permalink:
CreatureOS/creatureos@2f9dc8b2be313489167aa49fa28456a5036de974 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/CreatureOS
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2f9dc8b2be313489167aa49fa28456a5036de974 -
Trigger Event:
release
-
Statement type: