personal memory agent
Project Structure#
Directory Layout#
solstone/
├── sol.py # Unified CLI entry point (run: sol <command>)
├── observe/ # Multimodal capture & AI analysis
├── think/ # Data post-processing, AI agents & orchestration
├── convey/ # Web app frontend & backend
├── apps/ # Convey app extensions (see docs/APPS.md)
├── talent/ # Agent/generator configs + Agent Skills (talent/*/SKILL.md)
├── tests/ # Pytest test suites + test fixtures under tests/fixtures/
├── docs/ # All documentation (*.md files)
├── AGENTS.md # Development guidelines (this file)
├── CLAUDE.md # Symlink to AGENTS.md for Claude Code
└── README.md # Project overview
Each package has a README.md symlink pointing to its documentation in docs/.
Package Organization#
- Python: Requires Python 3.10+
- Modules: Each top-level folder is a Python package with
__init__.pyunless it is data-only (e.g.,tests/fixtures/) - Imports: Prefer absolute imports (e.g.,
from think.utils import setup_cli) whenever feasible - Entry Points: Commands are registered in
sol.py'sCOMMANDSdict (pyproject.toml just defines thesolentry point) - Journal: Data stored under
journal/at the project root - Calling: When calling other modules as a separate process always use
sol <command>and never call usingpython -m ...(e.g., usesol indexer, NOTpython -m think.indexer)
CLI Routing#
sol.py's COMMANDS dict maps command names to module paths. The unified CLI is sol. Run sol to see status and available commands. sol call routes to think/call.py, which discovers apps/*/call.py Typer sub-apps and mounts them as subcommands.
Agent & Skill Organization#
talent/*.md stores agent personas and generator templates. Apps can add their own in apps/*/talent/*.md. Skills live at talent/*/SKILL.md and are symlinked to .agents/skills/ and .claude/skills/ via make skills.
File Locations#
- Entry Points:
sol.pyCOMMANDSdict - Test Fixtures:
tests/fixtures/journal/- complete mock journal - Live Logs:
journal/health/<service>.log - Agent Personas:
talent/*.md(apps can add their own intalent/, see docs/APPS.md) - Generator Templates:
talent/*.md(apps can add their own intalent/, see docs/APPS.md) - Agent Skills:
talent/*/SKILL.md- symlinked to.agents/skills/and.claude/skills/viamake skills, read https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices to create the best skills - Scratch Space:
scratch/- git-ignored local workspace