personal memory agent
at main 40 lines 1.9 kB view raw view rendered
1# Environment 2 3## Journal Path 4 5The journal lives at `journal/` in the project root. `get_journal()` from `think.utils` returns the path — trust it unconditionally. Never set `_SOLSTONE_JOURNAL_OVERRIDE` from application code, service files, agent prompts, or subprocess environments. The env var exists exclusively for external use: test harnesses (`monkeypatch.setenv`) and Makefile sandboxes. If you think you need to override the journal path, you don't — fix the actual problem instead. 6 7## Service Installation 8 9`make install-service` installs solstone as a systemd user service (Linux) or launchd agent (macOS) with convey on port 5015. Override with `make install-service PORT=8000`. Managed via `sol service <install|start|stop|restart|status|logs>`. 10 11## API Keys 12 13Store API keys in `.env` file, never commit to repository. 14 15## Error Handling & Logging 16 17- Raise specific exceptions with clear messages 18- Use logging module, not print statements 19- Validate all external inputs (paths, owner data) 20- Fail fast with clear errors - avoid silent failures 21 22## Documentation 23 24- Update README files for new functionality 25- Code comments explain "why" not "what" 26- Function signatures should include type hints; highlight gaps when touching older modules 27- **All docs in `docs/`**: Browse for JOURNAL.md, APPS.md, CORTEX.md, CALLOSUM.md, THINK.md, and more 28- Each package has a README.md symlink pointing to its documentation in `docs/`. 29- **App/UI work**: [docs/APPS.md](docs/APPS.md) is required reading before modifying `apps/` 30 31## Git Practices 32 33- **Git**: Small focused commits, descriptive branch names. Run git commands directly (not `git -C`) since you're already in the repo. 34 35## Getting Help 36 37- Run `sol` for status and CLI command list 38- Check [docs/DOCTOR.md](docs/DOCTOR.md) for debugging and diagnostics 39- Browse `docs/` for all subsystem documentation 40- Review test files in `tests/` for usage examples