Thanks for your interest. Seahaven is early and the API is still moving, so open an issue before starting anything larger than a bug fix.
You need uv and a final release of Python 3.14 or newer. Not a release candidate: two locked dependencies break on the 3.14 rcs, and uv will not stop you from syncing onto one.
uv python install 3.14
uv sync --extra serve
uv run python -V # must be 3.14.0 or newer, with no "rc"CI runs these, and all of them must pass before you open a pull request:
uv run ruff format --check
uv run ruff check
uv run ty check -c 'src.exclude=["src/seahaven/mcp", "tests/test_mcp_server.py", "tests/test_mcp_process.py"]'
uv run pytest # the framework
uv run pytest worlds/projecttracker # the reference world
uv run pytest extensions/seahaven-xmlrpc # the example extension
uv run python tools/check_licences.py serveserve and mcp are conflicting extras, so the second environment is a second run:
uv sync --extra mcp
uv run python -c "import mcp.server.context, seahaven.mcp"
uv run ty check src/seahaven/mcp tests/test_mcp_server.py tests/test_mcp_process.py
uv run pytest
uv run python tools/check_licences.py mcp
uv sync --extra serve # back to the everyday oneThe type check is split between the two environments, because ty resolves imports against the one
it runs in. Each block carries its half: the first walks everything but the MCP paths, and the
second checks exactly those.
- Everything is typed, tests included.
tyis the checker. - Write tests with the code. Examples in the docs are executed by the test suite.
- Keep a pull request to one change. Unrelated fixes go in their own.
- Runtime dependencies must be permissively licensed (MIT, Apache-2.0, BSD). No copyleft.
- No real customer data anywhere, including in the reference world.
Seahaven is intended to be released under the MIT licence, but the LICENSE file is not in the
repository yet. Ask before investing in a large change.