Local-first CreatureOS runtime for persistent Codex creatures
Project description
CreatureOS
CreatureOS turns Codex into a local-first habitat of durable creatures on your machine.
Each creature has a purpose, memory, chats, worklists, and teachable habits. The Keeper helps decide what creature should exist, what should stay alive, and whether the habitat is actually serving you well.
Quick Start
Preferred path:
If you do not already have Codex installed, first download the Codex app or CLI:
https://chatgpt.com/codex/get-started
Then set Codex to full access, open Codex, and type:
install creatureos using pip and spin it up, troubleshoot any issues
That is the nicest path because Codex can handle the install, fix dependency issues, verify that the Codex CLI is actually usable, 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.10+ - the
codexCLI on yourPATH - Codex authenticated locally
- if you have not installed Codex yet, start here:
https://chatgpt.com/codex/get-started
Optional:
- Tailscale, if you want private access from another device with
--tailscale
Connect From Your Phone
CreatureOS can run on your computer and still be reachable from your phone.
The usual path is:
- run
creatureos serve --tailscaleon the computer - install Tailscale on both the computer and the phone
- open the Tailscale CreatureOS URL from the phone
If you want Codex to walk you through it, set Codex to full access and type:
please give me exact instructions on how to connect to this on my phone using Tailscale on this device and my phone
What Creatures Can Do
CreatureOS is meant for ongoing work, not one-off prompting. A creature can:
- copy-edit a book chapter and keep the next revision alive
- audit a repo or server config and come back with concrete follow-ups
- monitor logs, configs, and security drift and flag what needs attention
- review a UI, suggest improvements, and help implement cleaner interactions
- maintain a technical worklist across bugs, follow-ups, and unfinished refactors
- draft and post on social media for you from the machine where your tools live
- organize long-running research and keep the open threads worth returning to
- maintain an ongoing worklist instead of forgetting what was open
- remember unresolved threads when you return tomorrow
- learn a habit once the shape of repeated work is actually clear
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.4.tar.gz.
File metadata
- Download URL: creatureos-0.1.4.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 |
8698433f6f1c35d911cc3c817c394eb947a58046fa3fa76114b49f23ff2d6522
|
|
| MD5 |
468e673dfc80a44725cd026e045effea
|
|
| BLAKE2b-256 |
8d69dd62d48da1a9cba077b4fdb6123a8a67376a27210058235197a92d4f3a2c
|
Provenance
The following attestation bundles were made for creatureos-0.1.4.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.4.tar.gz -
Subject digest:
8698433f6f1c35d911cc3c817c394eb947a58046fa3fa76114b49f23ff2d6522 - Sigstore transparency entry: 1228812287
- Sigstore integration time:
-
Permalink:
CreatureOS/creatureos@0f6740b6767f0ad1e8f1cf447ebef9d62de4f3b9 -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/CreatureOS
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0f6740b6767f0ad1e8f1cf447ebef9d62de4f3b9 -
Trigger Event:
release
-
Statement type:
File details
Details for the file creatureos-0.1.4-py3-none-any.whl.
File metadata
- Download URL: creatureos-0.1.4-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 |
9cfc4ea5d1257f6f2a9285958621d04ee2c1560b683204e77730b1c62a079c46
|
|
| MD5 |
f9897a33791ccf8c599d0aab4bb8d6ed
|
|
| BLAKE2b-256 |
248d079d96aeff591367a18c9da65025bf41d73f6fef9a9c2da6e15621a62a3d
|
Provenance
The following attestation bundles were made for creatureos-0.1.4-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.4-py3-none-any.whl -
Subject digest:
9cfc4ea5d1257f6f2a9285958621d04ee2c1560b683204e77730b1c62a079c46 - Sigstore transparency entry: 1228812306
- Sigstore integration time:
-
Permalink:
CreatureOS/creatureos@0f6740b6767f0ad1e8f1cf447ebef9d62de4f3b9 -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/CreatureOS
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0f6740b6767f0ad1e8f1cf447ebef9d62de4f3b9 -
Trigger Event:
release
-
Statement type: