Skip to main content
Artemis City is a single git repository that holds several projects with distinct runtimes and package managers. Each project has its own manifest so you can build, test, and deploy it independently without pulling the rest of the tree into scope.

When to use this

  • You are cloning the repo for the first time and want to know which directory holds the code you need.
  • You are running a build, typecheck, or test command and are unsure which manifest owns it.
  • You are extending the API, frontend, or Python core and want to know where to add code and dependencies.
If you only need to run the platform end-to-end, see Environments and skip to the top-level scripts.

Project map

The root package.json is a workspace coordinator, not a service manifest. It registers app/api and app/web/frontend as npm workspaces and exposes convenience scripts that delegate into each workspace.

Manifest ownership

Package definitions live with the project they describe. There is exactly one canonical manifest per runtime:
  • Python — the root pyproject.toml is the canonical package manifest. src/pyproject.toml is a pointer-only stub kept for older scripts and docs; do not treat it as a build target.
  • Express APIapp/api/package.json and app/api/tsconfig.json own the API’s dependencies and TypeScript config. app/api/package-lock.json is generated from that manifest.
  • React frontendapp/web/frontend/package.json owns the dashboard’s dependencies and Vite/TypeScript config.
  • Workspace root — the root package.json only lists workspaces, cross-project scripts, and shared devtools. Do not add API- or frontend-specific dependencies here.

Common commands

Run these from the repository root unless noted otherwise.

Root workspace

Express API only

React frontend only

Python core

Cross-project boundaries

Keep these boundaries intact when adding code:
  • The Express API calls the Python core through app/api/lib/pythonBridge.ts and src/api_bridge.py. It should not reimplement Python logic.
  • The React dashboard talks to the FastAPI backend on /api/*, not the Express /api/v1/* surface.
  • The Python wheel packages src/ and app/kernel/. It does not package app/api, app/web, or app/scripts.
  • Environment files (.env, app/api/.env, src/.env) are coordinated by setup_secrets.sh. Preserve that flow when adding new secrets.

Archived and migration-only surfaces

Some directories are retained for reference or migration. Do not build new features on top of them:
  • archive/legacy-web-api/ — the previous app/web/api/ FastAPI copy. Replaced by app/api/main.py. Kept for reference only.
  • tests/ (root) — legacy pytest tree. The canonical suite is src/tests/. Add new tests under src/tests/, not here.
  • src/Kernel/ — placeholder that predates app/kernel/. The maintained kernel is app/kernel/.
  • memory/ — mirrors src/memory/ outside the package root. Kept as a compatibility shim; do not extend it.
The full map, including stale shells and cross-project coupling rules, lives at docs/PROJECT_BOUNDARIES.md in the source repository.
Last modified on July 15, 2026