Data Mounts
PDAI-1 external volume layout and data_path() API
All bulk data lives on /Volumes/PDAI-1. Code in ~/ai-mac-studio/ never embeds hardcoded PDAI-1 paths — instead it uses platform_env.data_path("name").
Mount configuration
platform/config/data-mounts.yaml defines logical names:
mounts:
pdai_collections: /Volumes/PDAI-1/pdai-collections
famulus_lake_catalog: /Volumes/PDAI-1/pdai-collections/_lake/famulus.ducklake
famulus_lake_traces: /Volumes/PDAI-1/pdai-collections/_lake/famulus_reference_traces.duckdb
scholarly_data: /Volumes/PDAI-1/2026projectdata/ai-scholarly
agents_data: /Volumes/PDAI-1/2026projectdata/ai-agents
applevoicerecorder: /Volumes/PDAI-1/2026projectdata/apps/ai-applevoicerecorder-data
pdai_1_root: /Volumes/PDAI-1
project_data: /Volumes/PDAI-1/2026projectdata
ai_platform_data: /Volumes/PDAI-1/2026projectdata/ai-platform
ai_development_data: /Volumes/PDAI-1/2026projectdata/ai-development
ai_publication_data: /Volumes/PDAI-1/2026projectdata/ai-publication
ai_privat_data: /Volumes/PDAI-1/2026projectdata/ai-privat| Key | Use |
|---|---|
famulus_lake_catalog |
DuckLake catalog of all famulus reference collections (DuckDB file; written only on mac-studio). Readers attach the read replica famulus.read.ducklake in the same folder. Only this key defines the production lake; env override FAMULUS_LAKE_CATALOG never does. See DuckLake |
famulus_lake_traces |
query-trace DB of the famulus-reference MCP server (fr_run, fr_run_step); written only by that server |
On client machines code lives in ~/ai-openscience (Syncthing mirror of ~/ai-mac-studio) and /Volumes/PDAI-1 is mac-studio’s drive mounted via SMB.
Usage in code
from platform.shared.env import detect
env = detect()
# Get path to a named mount (raises if volume not mounted)
collections = env.data_path("pdai_collections")
# → Path("/Volumes/PDAI-1/pdai-collections")
# Get path or None if not present
data = env.data_path_if_present("applevoicerecorder")Live health
Check current mount health in the admin UI: /admin/data-mounts or via the API: GET /api/data-mounts.
If /Volumes/PDAI-1 is not mounted, data_path() raises RuntimeError. Use data_path_if_present() to handle unmounted volumes gracefully.
apps/ai-applevoicerecorder data
The applevoicerecorder mount holds bulk media:
| Subdirectory | Contents |
|---|---|
3d-reconstructions/ |
Photogrammetry output meshes |
photos/ |
Reference photos for 3D reconstruction |
videos/ |
Source videos for video2mesh |
supplements/ |
Supplementary materials |
calibration_labels/ |
Camera calibration targets |
| Case PDFs | Scanned case documents |