atlas-os 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. atlas_os-0.3.0/.env.example +97 -0
  2. atlas_os-0.3.0/.gitignore +76 -0
  3. atlas_os-0.3.0/CHANGELOG.md +249 -0
  4. atlas_os-0.3.0/LICENSE +21 -0
  5. atlas_os-0.3.0/PKG-INFO +941 -0
  6. atlas_os-0.3.0/README.md +883 -0
  7. atlas_os-0.3.0/atlas_os/__init__.py +7 -0
  8. atlas_os-0.3.0/atlas_os/__main__.py +6 -0
  9. atlas_os-0.3.0/atlas_os/_paths.py +78 -0
  10. atlas_os-0.3.0/atlas_os/_probe.py +63 -0
  11. atlas_os-0.3.0/atlas_os/_skills.py +263 -0
  12. atlas_os-0.3.0/atlas_os/audit.py +246 -0
  13. atlas_os-0.3.0/atlas_os/backends.py +427 -0
  14. atlas_os-0.3.0/atlas_os/cli.py +889 -0
  15. atlas_os-0.3.0/dashboard/README.md +45 -0
  16. atlas_os-0.3.0/docs/ARCHITECTURE.md +97 -0
  17. atlas_os-0.3.0/docs/CONFIGURATION.md +204 -0
  18. atlas_os-0.3.0/docs/DATA-CLASSIFICATION.md +42 -0
  19. atlas_os-0.3.0/docs/EXAMPLES.md +261 -0
  20. atlas_os-0.3.0/docs/FAQ.md +115 -0
  21. atlas_os-0.3.0/docs/PUBLISHING.md +216 -0
  22. atlas_os-0.3.0/docs/QUICKSTART.md +119 -0
  23. atlas_os-0.3.0/docs/README.md +82 -0
  24. atlas_os-0.3.0/docs/REBUILD.md +92 -0
  25. atlas_os-0.3.0/docs/SCHEDULED-TASKS.md +95 -0
  26. atlas_os-0.3.0/docs/SCRIPTS.md +317 -0
  27. atlas_os-0.3.0/docs/SETUP.md +278 -0
  28. atlas_os-0.3.0/docs/SKILLS-CATALOGUE.md +1037 -0
  29. atlas_os-0.3.0/docs/SKILLS-FRAMEWORK.md +269 -0
  30. atlas_os-0.3.0/docs/features/README.md +44 -0
  31. atlas_os-0.3.0/docs/features/email-reports.md +96 -0
  32. atlas_os-0.3.0/docs/features/git-automation.md +169 -0
  33. atlas_os-0.3.0/docs/features/health-and-dashboard.md +117 -0
  34. atlas_os-0.3.0/docs/features/knowledge-graph.md +117 -0
  35. atlas_os-0.3.0/docs/features/knowledge-vault.md +99 -0
  36. atlas_os-0.3.0/docs/features/rag-search.md +171 -0
  37. atlas_os-0.3.0/docs/features/skills-and-automation.md +97 -0
  38. atlas_os-0.3.0/docs/features/trading-sdk.md +183 -0
  39. atlas_os-0.3.0/pyproject.toml +93 -0
  40. atlas_os-0.3.0/schemas/enforce_schemas.py +433 -0
  41. atlas_os-0.3.0/schemas/frontmatter-schemas.md +73 -0
  42. atlas_os-0.3.0/scripts/build_graph.py +153 -0
  43. atlas_os-0.3.0/scripts/embed_vault.py +718 -0
  44. atlas_os-0.3.0/scripts/health_check.py +336 -0
  45. atlas_os-0.3.0/scripts/send_email.py +121 -0
  46. atlas_os-0.3.0/scripts/trading_briefing.py +274 -0
  47. atlas_os-0.3.0/scripts/vault_changelog.py +200 -0
  48. atlas_os-0.3.0/scripts/vault_commit.py +201 -0
  49. atlas_os-0.3.0/skills/afternoon-job-tracker-update/SKILL.md +40 -0
  50. atlas_os-0.3.0/skills/atlas-daily-report-email/SKILL.md +42 -0
  51. atlas_os-0.3.0/skills/daily-job-tracker-update/SKILL.md +47 -0
  52. atlas_os-0.3.0/skills/daily-trading-report/SKILL.md +44 -0
  53. atlas_os-0.3.0/skills/friday-it-newsletter/SKILL.md +53 -0
  54. atlas_os-0.3.0/skills/generate-vault-report-doc/SKILL.md +45 -0
  55. atlas_os-0.3.0/skills/inbox-triage-digest/SKILL.md +62 -0
  56. atlas_os-0.3.0/skills/nightly-obsidian-index/SKILL.md +71 -0
  57. atlas_os-0.3.0/skills/nightly-rag-incremental/SKILL.md +35 -0
  58. atlas_os-0.3.0/skills/spreadsheet-analysis/SKILL.md +53 -0
  59. atlas_os-0.3.0/skills/topic-research-brief/SKILL.md +45 -0
  60. atlas_os-0.3.0/skills/vault-lint-report/SKILL.md +77 -0
  61. atlas_os-0.3.0/skills/weekly-digest-report/SKILL.md +54 -0
  62. atlas_os-0.3.0/skills/weekly-rag-full-reembed/SKILL.md +37 -0
  63. atlas_os-0.3.0/skills/weekly-system-health-check/SKILL.md +39 -0
  64. atlas_os-0.3.0/templates/CLAUDE.md.template +67 -0
  65. atlas_os-0.3.0/templates/memory-structure/MEMORY.md.template +25 -0
  66. atlas_os-0.3.0/templates/memory-structure/example-memories/example-feedback.md +15 -0
  67. atlas_os-0.3.0/templates/memory-structure/example-memories/example-user-profile.md +13 -0
  68. atlas_os-0.3.0/templates/ops-dashboard.html +104 -0
  69. atlas_os-0.3.0/templates/vault-skeleton/.claude-index.md.template +40 -0
  70. atlas_os-0.3.0/templates/vault-skeleton/Operations Dashboard.md +52 -0
  71. atlas_os-0.3.0/templates/vault-skeleton/wiki/hot.md.template +19 -0
  72. atlas_os-0.3.0/templates/vault-skeleton/wiki/index.md.template +26 -0
  73. atlas_os-0.3.0/templates/vault-skeleton/wiki/log.md.template +17 -0
  74. atlas_os-0.3.0/tests/conftest.py +79 -0
  75. atlas_os-0.3.0/tests/test_audit.py +215 -0
  76. atlas_os-0.3.0/tests/test_backends.py +259 -0
  77. atlas_os-0.3.0/tests/test_build_graph.py +74 -0
  78. atlas_os-0.3.0/tests/test_cli.py +60 -0
  79. atlas_os-0.3.0/tests/test_embed_vault.py +130 -0
  80. atlas_os-0.3.0/tests/test_health_check.py +109 -0
  81. atlas_os-0.3.0/tests/test_send_email.py +119 -0
  82. atlas_os-0.3.0/tests/test_skills.py +192 -0
  83. atlas_os-0.3.0/tests/test_trading_briefing.py +75 -0
  84. atlas_os-0.3.0/tests/test_vault_changelog.py +77 -0
  85. atlas_os-0.3.0/tests/test_vault_commit.py +72 -0
  86. atlas_os-0.3.0/trading/README.md +66 -0
@@ -0,0 +1,97 @@
1
+ # ──────────────────────────────────────────────────────────────────────────────
2
+ # Atlas OS configuration
3
+ #
4
+ # Copy this file to `.env` and fill in your own values:
5
+ # cp .env.example .env
6
+ #
7
+ # Load it into your shell before running scripts:
8
+ # set -a; source .env; set +a
9
+ #
10
+ # `.env` is git-ignored. NEVER commit real secrets. All values below are
11
+ # placeholders / safe defaults — none are real credentials.
12
+ # ──────────────────────────────────────────────────────────────────────────────
13
+
14
+ # ── Vault ───────────────────────────────────────────────────────────────────
15
+ # Absolute path to your markdown vault. Required by almost every script.
16
+ VAULT_PATH=~/Documents/Obsidian/MyVault
17
+
18
+ # Where to write the RAG vector store and graph (default: $VAULT_PATH/.rag)
19
+ # RAG_DIR=~/Documents/Obsidian/MyVault/.rag
20
+
21
+ # Where your Claude scheduled-task SKILL.md folders live
22
+ # SCHEDULED_DIR=~/Documents/Claude/Scheduled
23
+
24
+ # Where `atlas skills install <name>` writes installed skills
25
+ # (default: $VAULT_PATH/.claude/skills)
26
+ # ATLAS_SKILLS_DIR=~/Documents/Claude/Scheduled
27
+
28
+ # ── Pluggable LLM backends (auto-detected) ───────────────────────────────────
29
+ # Atlas OS talks to any OpenAI-compatible LLM server. If you leave the EMBED_*
30
+ # and LM_STUDIO_* vars below unset, it auto-detects a running backend by probing
31
+ # (in order): LM Studio → Ollama → llama.cpp → a custom OpenAI-compatible URL.
32
+ # Run `atlas backends` to see what's detected, `atlas backends test` to verify.
33
+ #
34
+ # ATLAS_LLM_BACKEND force one backend, skipping detection:
35
+ # lmstudio | ollama | llamacpp | openai-compatible
36
+ # ATLAS_LLM_MODEL override the chat model name reported to callers
37
+ # ATLAS_LLM_BACKEND=
38
+ # ATLAS_LLM_MODEL=
39
+ #
40
+ # Per-backend base URL overrides (only needed if not on the default localhost port):
41
+ # LM_STUDIO_URL (default :5555) · OLLAMA_URL (default :11434)
42
+ # LLAMACPP_URL (default :8080) · OPENAI_COMPATIBLE_URL (no default — must be set)
43
+ # OLLAMA_URL=http://localhost:11434
44
+ # LLAMACPP_URL=http://localhost:8080
45
+ # OPENAI_COMPATIBLE_URL=
46
+
47
+ # ── Local LLM: embeddings (OpenAI-compatible, e.g. LM Studio / Ollama) ───────
48
+ # Explicit values here take precedence over backend auto-detection above.
49
+ EMBED_HOST=localhost
50
+ EMBED_PORT=5555
51
+ EMBED_MODEL=text-embedding-nomic-embed-text-v1.5
52
+ # EMBED_API_KEY= # only if your endpoint requires a bearer token
53
+ # EMBED_URL= # overrides host/port if set
54
+
55
+ # ── Local LLM: chat completions (used by trading module) ─────────────────────
56
+ LM_STUDIO_HOST=localhost
57
+ LM_STUDIO_PORT=5555
58
+ LM_STUDIO_MODEL=local-model
59
+ # Two scripts read the chat endpoint and expect DIFFERENT shapes — set whichever
60
+ # you use, or leave both unset to fall back to host/port:
61
+ # LM_STUDIO_URL used by scripts/trading_briefing.py — include the /v1 suffix
62
+ # default: http://$LM_STUDIO_HOST:$LM_STUDIO_PORT/v1
63
+ # LM_STUDIO_ENDPOINT used by trading/config.py + trading/core.py — NO /v1 suffix
64
+ # default: http://$LM_STUDIO_HOST:$LM_STUDIO_PORT
65
+ # LM_STUDIO_URL=
66
+ # LM_STUDIO_ENDPOINT=
67
+
68
+ # ── Text-to-speech (optional) ────────────────────────────────────────────────
69
+ TTS_HOST=localhost
70
+ TTS_PORT=8800
71
+
72
+ # ── Email (SMTP) ──────────────────────────────────────────────────────────────
73
+ # The account that sends reports/newsletters.
74
+ SENDER_EMAIL=your-atlas-account@example.com
75
+ SENDER_NAME=Atlas
76
+ SMTP_SERVER=smtp.gmail.com
77
+ SMTP_PORT=587
78
+ # Gmail app password (https://myaccount.google.com/apppasswords) — NEVER commit
79
+ SMTP_APP_PASSWORD=your-app-password
80
+
81
+ # Where reports are sent (usually yourself)
82
+ USER_EMAIL=your-email@example.com
83
+
84
+ # ── Dashboard ports (optional) ────────────────────────────────────────────────
85
+ DASHBOARD_FRONTEND_PORT=3000
86
+ DASHBOARD_BACKEND_PORT=5001
87
+
88
+ # ── Trading module (optional) ─────────────────────────────────────────────────
89
+ TRADING_AGENTS_PATH=~/Documents/TradingAgents
90
+ TRADING_TICKERS=BTC-USD,ETH-USD
91
+ # Cloud Portfolio Manager step (off by default) — only if you opt in:
92
+ # ANTHROPIC_API_KEY=sk-ant-your-key
93
+ # ANTHROPIC_MODEL=claude-opus-4-6
94
+
95
+ # ── Git (optional) ────────────────────────────────────────────────────────────
96
+ # If you mirror your vault to a remote, set it here (your private repo).
97
+ # GITHUB_REPO=your-username/your-vault
@@ -0,0 +1,76 @@
1
+ # ── Secrets & credentials ───────────────────────────────────────────────────
2
+ .env
3
+ .env.*
4
+ !.env.example
5
+ *.key
6
+ *.pem
7
+ *.p12
8
+ credentials*
9
+ *credential*
10
+ *password*
11
+ *secret*
12
+ *.token
13
+ .anthropic-api-key
14
+ *-app-password
15
+ *gmail-app-password*
16
+
17
+ # ── Personal data / PII (never commit) ──────────────────────────────────────
18
+ *.xlsx # job trackers and other spreadsheets contain PII
19
+ *.xls
20
+ *.csv # may contain personal/exported data
21
+ vault-content/
22
+ vault/
23
+ personal/
24
+ private/
25
+ job-search/
26
+ job-tracker*
27
+ briefings/
28
+ *briefing*.md
29
+ session-logs/
30
+ *.eml
31
+
32
+ # ── Generated RAG / graph data (contains embedded personal notes) ───────────
33
+ *.sqlite
34
+ *.sqlite3
35
+ *.db
36
+ vectors.json
37
+ vectors.json.tmp
38
+ graph.json
39
+ graph.json.tmp
40
+ last_embed.txt
41
+ last_embed_fallback.txt
42
+ embed_checkpoint.json
43
+ .rag/
44
+ .vectors/
45
+ cache/
46
+
47
+ # ── Trading (local config may contain real paths / keys) ────────────────────
48
+ trading/config.py
49
+ signals.json
50
+
51
+ # ── Python ──────────────────────────────────────────────────────────────────
52
+ __pycache__/
53
+ *.py[cod]
54
+ *.egg-info/
55
+ .venv/
56
+ venv/
57
+ .env.bak
58
+ .pytest_cache/
59
+ .mypy_cache/
60
+ .ruff_cache/
61
+
62
+ # ── Node / dashboard ────────────────────────────────────────────────────────
63
+ node_modules/
64
+ dist/
65
+ build/
66
+ *.log
67
+
68
+ # ── OS / editor ─────────────────────────────────────────────────────────────
69
+ .DS_Store
70
+ Thumbs.db
71
+ *.swp
72
+ .idea/
73
+ .vscode/
74
+
75
+ # ── Local Claude Code / agent tooling state (not part of the public repo) ────
76
+ .claude/
@@ -0,0 +1,249 @@
1
+ # Changelog
2
+
3
+ All notable changes to Atlas OS are documented here. The format is based on
4
+ [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project
5
+ aims to follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [Unreleased]
8
+
9
+ ### Added
10
+ - **Automated PyPI publishing via GitHub Actions + Trusted Publishing.** Pushing
11
+ a `v*` tag (e.g. `v0.4.0`) now builds, tests, and publishes the release to
12
+ PyPI with no stored token — authentication is
13
+ [OIDC Trusted Publishing](https://docs.pypi.org/trusted-publishers/).
14
+ [`.github/workflows/publish.yml`](.github/workflows/publish.yml) runs
15
+ `test → build → publish`: lint + `pytest`, then `python -m build` +
16
+ `twine check`, then `pypa/gh-action-pypi-publish` against the `pypi`
17
+ environment with `id-token: write`. A companion
18
+ [`.github/workflows/test-publish.yml`](.github/workflows/test-publish.yml)
19
+ routes pre-release tags (`v*rc*`, `v*dev*`) to TestPyPI for dress rehearsals.
20
+ [`docs/PUBLISHING.md`](docs/PUBLISHING.md) documents the flow and the one-time
21
+ PyPI trusted-publisher setup (pending-publisher or manual-first-upload).
22
+ - **`atlas skills install <name>`** — one-command skill deployment. Copies a
23
+ skill's `SKILL.md` into your scheduled-tasks directory (`$ATLAS_SKILLS_DIR`,
24
+ default `$VAULT_PATH/.claude/skills/<name>/`) and substitutes its
25
+ `{{PLACEHOLDER}}` tokens from the environment / `.env`. Most tokens map to the
26
+ env var of the same name (`{{VAULT_PATH}}` ← `VAULT_PATH`); `{{ATLAS_OS}}`
27
+ resolves to the repo path and `{{LLM_PORT}}` reads `LM_STUDIO_PORT`. Tokens
28
+ with no value are left in place and reported so you can fill them by hand;
29
+ `--force` overwrites an existing install. Two companion subcommands:
30
+ `atlas skills list` (every available skill) and `atlas skills show <name>`
31
+ (print a skill's `SKILL.md`). The placeholder logic and install live in
32
+ [`atlas_os/_skills.py`](atlas_os/_skills.py), covered by
33
+ [`tests/test_skills.py`](tests/test_skills.py).
34
+ - **PyPI release preparation.** The package is now publish-ready: the version is
35
+ single-sourced from `__version__` in
36
+ [`atlas_os/__init__.py`](atlas_os/__init__.py) via `[tool.hatch.version]`
37
+ (bump it in one place), the sdist explicitly bundles `scripts/`, `schemas/`,
38
+ `templates/`, `skills/`, and `docs/` (`[tool.hatch.build.targets.sdist]`), and
39
+ the metadata gained AI/indexing topic classifiers. A new
40
+ [`docs/PUBLISHING.md`](docs/PUBLISHING.md) is the maintainer runbook (bump →
41
+ `python -m build` → `twine check` → TestPyPI → `twine upload` → tag). No
42
+ release is published yet — everything is staged so `pipx install atlas-os`
43
+ works the moment it is.
44
+ - **Pluggable LLM backends** ([`atlas_os/backends.py`](atlas_os/backends.py)).
45
+ Atlas OS now auto-detects any OpenAI-compatible LLM server, probing **LM Studio
46
+ (`:5555`) → Ollama (`:11434`) → llama.cpp (`:8080`) → a custom
47
+ `OPENAI_COMPATIBLE_URL`** in that order and using the first that responds. The
48
+ module exposes `detect_backend()`, `get_client()`, `list_models()`, and a
49
+ one-shot `run_inference()` test. Two env vars override the defaults:
50
+ `ATLAS_LLM_BACKEND` forces a backend (`lmstudio`/`ollama`/`llamacpp`/
51
+ `openai-compatible`, skipping detection) and `ATLAS_LLM_MODEL` overrides the
52
+ chat model name. New CLI: `atlas backends` lists every backend with
53
+ reachability + models, and `atlas backends test` runs an end-to-end inference.
54
+ The RAG (`embed_vault.py`), trading (`trading_briefing.py`), and health
55
+ (`health_check.py`) scripts now resolve their endpoint through this module.
56
+ **Fully backward compatible:** explicit `EMBED_*` / `LM_STUDIO_*` settings still
57
+ win, so existing setups are unchanged. Covered by
58
+ [`tests/test_backends.py`](tests/test_backends.py).
59
+ - **Skills catalogue & framework docs.** A
60
+ [`docs/SKILLS-CATALOGUE.md`](docs/SKILLS-CATALOGUE.md) documenting the full menu
61
+ of **160+ skills** — 149 capability skills across seven domains (Security,
62
+ DevOps, Frontend, Backend, Quality, Data & AI, Business), each with a one-line
63
+ summary, what it does, and when to use it, plus the four Atlas-native skills
64
+ (`autoresearch`, `save-to-vault`, `wiki-search`, `send-email`) and the nine
65
+ scheduled automations. A companion
66
+ [`docs/SKILLS-FRAMEWORK.md`](docs/SKILLS-FRAMEWORK.md) explains what a skill is,
67
+ the anatomy of a `SKILL.md`, the placeholder-token system, the lifecycle
68
+ (creation → installation → scheduling → execution → audit logging), how the
69
+ RAG-indexed catalog reaches sub-agents, the `skill-creator` meta-skill, and a
70
+ copy-paste `SKILL.md` template. Everything is generic and `{{PLACEHOLDER}}`-
71
+ tokenised — no personal data.
72
+ - **Six example skills** ([`skills/`](skills)) demonstrating the framework across
73
+ document creation (`generate-vault-report-doc`), email automation
74
+ (`inbox-triage-digest`), data analysis (`spreadsheet-analysis`), web research
75
+ (`topic-research-brief`), vault management (`vault-lint-report`), and report
76
+ generation (`weekly-digest-report`) — bringing the shipped skill count to 15.
77
+ - **Audit trail** ([`atlas_os/audit.py`](atlas_os/audit.py)). An append-only
78
+ JSONL log of every autonomous action, written to `$ATLAS_AUDIT_PATH` (default
79
+ `$VAULT_PATH/.atlas/audit.jsonl`). Each entry records the timestamp, action,
80
+ trigger (`scheduled`/`manual`/`cli`), status, duration, what changed, why it
81
+ ran, and any error. Appends are serialised with an in-process lock plus an
82
+ OS-level advisory file lock (safe across concurrent `atlas` processes) and the
83
+ file auto-rotates at 10 MB to `audit.jsonl.1`, `.2`, …. Every script-wrapping
84
+ command (`embed`, `commit`, `graph`, `changelog`, `health`, `trading`,
85
+ `email`) now logs its outcome automatically; scheduled tasks tag their runs by
86
+ setting `ATLAS_TRIGGER=scheduled`. New `atlas audit` subcommands: `show`
87
+ (`--limit`/`--action`/`--since`), `tail` (last 5, compact), and `export`
88
+ (`--format csv|json`, `--output`) for compliance reporting. Strengthens ISO
89
+ 27001 control A.12.4 (logging & monitoring). Covered by
90
+ [`tests/test_audit.py`](tests/test_audit.py).
91
+ - **GitHub issue & PR templates**
92
+ ([`.github/ISSUE_TEMPLATE/`](.github/ISSUE_TEMPLATE/),
93
+ [`.github/PULL_REQUEST_TEMPLATE.md`](.github/PULL_REQUEST_TEMPLATE.md)) — a
94
+ structured bug report (with an environment block: OS, Python, Atlas OS
95
+ version, install method), a feature request (use case / proposed solution /
96
+ alternatives), and a PR checklist (tests, docs, the PII scan). An
97
+ `ISSUE_TEMPLATE/config.yml` disables blank issues and routes security reports
98
+ to `SECURITY.md` and questions to the FAQ.
99
+ - **README status badges** — GitHub Actions CI status, GitHub stars, and
100
+ last-commit, alongside the existing license / Python / privacy / docs badges.
101
+ - **`atlas trading`** — wraps `scripts/trading_briefing.py` (`--ticker`,
102
+ `--date`, `--dry-run`); the last optional pipeline script to gain a first-class
103
+ subcommand, so the whole system is now reachable through one `atlas` command.
104
+ - **Up-front env validation.** Every vault/optional command checks its required
105
+ environment variables before shelling out and exits with a clear message and a
106
+ non-zero code if any are missing — a half-configured feature fails fast instead
107
+ of part-way through.
108
+ - **`atlas email` flags.** Send mail with `--to` / `--subject` / `--body`
109
+ (`--text` for plain text, repeatable `--attach`), or the original raw payload
110
+ via `--json`.
111
+ - **Docker support.** A minimal [`Dockerfile`](Dockerfile) (Python 3.11-slim +
112
+ git) that packages the `atlas` CLI, a [`docker-compose.yml`](docker-compose.yml)
113
+ that bind-mounts your vault and loads `.env`, and a `.dockerignore`. Run any
114
+ subcommand in a container without installing Python tooling on the host.
115
+ Build-tested end-to-end (`atlas --version` / `doctor` / `commit` against a
116
+ bind-mounted vault), with three fixes from that pass: copy the
117
+ `scripts/schemas/templates/skills` dirs *before* `pip install` (the wheel
118
+ force-includes them, so the build failed without them); `git config --global
119
+ --add safe.directory` so git operations work on a vault owned by a non-root
120
+ host user (avoids "dubious ownership"); and an optional `env_file` so compose
121
+ runs before a `.env` exists.
122
+ - **CLI tests** ([`tests/test_cli.py`](tests/test_cli.py)) covering `--version`,
123
+ every registered subcommand, and the env-validation guards.
124
+ - **Core vs optional** section in [`docs/SETUP.md`](docs/SETUP.md) separating the
125
+ always-available core (vault, commit, changelog, schemas, health) from opt-in
126
+ features (RAG/embeddings, trading, email, LM Studio, dashboard) with each one's
127
+ extra deps and env vars, plus a Docker quick-start.
128
+ - **Automated test suite** in [`tests/`](tests/) — 74 hermetic `pytest` tests
129
+ covering the core scripts (`embed_vault`, `build_graph`, `health_check`,
130
+ `send_email`, `vault_commit`, `vault_changelog`, `trading_briefing`). They stub
131
+ every external dependency (network, SMTP, git, and the optional
132
+ `tradingagents` package) and point `VAULT_PATH`/`RAG_DIR` at a temp directory,
133
+ so they need no env vars, no network, and never touch a real vault.
134
+ - **GitHub Actions CI** ([`.github/workflows/ci.yml`](.github/workflows/ci.yml))
135
+ — runs ruff, pytest, and pip-audit on every push and pull request to `main`.
136
+ - **Development & testing** section in the README and dev/CI tooling (`pytest`,
137
+ `ruff`, `pip-audit`) added to `requirements.txt`.
138
+ - **Feature deep-dive docs** in [`docs/features/`](docs/features/README.md) — one
139
+ per feature, explaining how it actually works (internals, data formats,
140
+ configuration, edge cases), grounded in the source: knowledge vault & schemas,
141
+ local RAG search, knowledge graph, git automation, scheduled tasks & skills
142
+ catalog, email reports, trading SDK, and health check & dashboard. Linked from
143
+ the README and the docs index.
144
+
145
+ ### Changed
146
+ - **`CONTRIBUTING.md` expanded** into a full contributor guide — dev-environment
147
+ setup, running the test/lint/audit suite, code style, the PR workflow, and a
148
+ project-structure overview — on top of the existing "golden rule" (never
149
+ commit personal data) and PII scan.
150
+ - **README**: documented `atlas trading`, the new `atlas email` flags,
151
+ env-validation behaviour, a Docker section (+ a Docker pointer under
152
+ Installation), the Docker files in the repo-layout diagram, and updated the
153
+ `.github/` layout line to note the issue/PR templates.
154
+ - **Docs sync across the set** to match the streamlined CLI:
155
+ - `docs/ARCHITECTURE.md` — added the `atlas` CLI as component 0 (the unified
156
+ entry point) and a Deployment section covering checkout / installed tool /
157
+ Docker.
158
+ - `docs/EXAMPLES.md`, `docs/features/email-reports.md` — updated every
159
+ `atlas email` example to the new flags (with `--json` for raw payloads),
160
+ fixing samples that the flag change would otherwise have broken.
161
+ - `docs/QUICKSTART.md` — corrected the minimum Python to 3.11+ and linked the
162
+ Docker quick-start.
163
+ - `docs/README.md` (docs index) — linked the SETUP core-vs-optional matrix and
164
+ the Docker files.
165
+ - `SECURITY.md` — added a "Running in containers (Docker)" section (no secrets
166
+ or vault data in the image; runtime-only `--env-file`; bind-mounted vault).
167
+ - **`pyproject.toml`** continues to declare the `atlas` entry point and the
168
+ optional dependency groups (`[pdf]`, `[trading]`, `[all]`); these are now the
169
+ documented install path (`pip install -e ".[all]"`) for the optional features.
170
+
171
+ ## [0.3.0] — 2026-06-02
172
+
173
+ ### Added
174
+ - **Agent skills catalog.** A self-updating `Skills Catalog.md` note generated
175
+ into the vault, listing every skill (name, description, suggested cadence)
176
+ read from each `skills/*/SKILL.md` frontmatter — so agents reading or
177
+ searching the vault can discover what automations they can invoke. Carries
178
+ `type: reference` frontmatter so the RAG indexer picks it up.
179
+ - **`atlas skills`** — list the catalog in the terminal; `atlas skills --sync`
180
+ (re)generates the note in the vault (`--output` to override the path).
181
+ `atlas init` now generates it automatically on setup.
182
+ - The `skills/` directory is bundled into the wheel so the catalog works in an
183
+ installed `atlas` without the source checkout.
184
+
185
+ ## [0.2.0] — 2026-06-02
186
+
187
+ ### Added
188
+ - **Installable package** with a unified **`atlas` CLI** (`pyproject.toml`,
189
+ `atlas_os/`). Install via `uv tool install` / `pipx` / `pip install -e .`.
190
+ Subcommands `embed`, `graph`, `commit`, `changelog`, `health`, `email`, and
191
+ `schemas` wrap the existing scripts and forward their flags; configuration
192
+ (`.env`) is auto-loaded.
193
+ - **`atlas init`** — guided onboarding: auto-detects a local LLM (LM Studio /
194
+ Ollama / any OpenAI-compatible endpoint), writes `.env`, scaffolds the vault
195
+ skeleton, initialises the vault git repo, and optionally installs the
196
+ `CLAUDE.md` template. Supports `--vault`, `--yes`, `--force`.
197
+ - **`atlas doctor`** — validates the whole setup (Python, vault, git, RAG
198
+ index, embeddings endpoint, SMTP) and reports OK / WARN / FAIL with a
199
+ non-zero exit on failures.
200
+ - Optional dependency extras: `atlas-os[trading]` (yfinance),
201
+ `atlas-os[pdf]` (pdfplumber), `atlas-os[all]`.
202
+ - `docs/CONFIGURATION.md` — authoritative reference for every environment
203
+ variable (purpose, default, required/optional, consuming scripts).
204
+ - `docs/SCRIPTS.md` — complete CLI reference for all scripts and their flags,
205
+ including the previously-undocumented `embed_vault.py` flags
206
+ (`--incremental`, `--folder`, `--pdfs-only`, `--checkpoint-interval`,
207
+ `--batch-size`).
208
+ - `docs/FAQ.md` — frequently asked questions and troubleshooting.
209
+ - `docs/README.md` — documentation index and recommended reading order.
210
+ - `CHANGELOG.md` — this file.
211
+
212
+ ### Changed
213
+ - The scripts/schemas/templates are now bundled into the wheel (under
214
+ `atlas_os_data/`) so an installed `atlas` works without the source checkout;
215
+ in a source checkout the CLI uses the live files.
216
+ - `.env.example` now documents `LM_STUDIO_URL` (used by
217
+ `scripts/trading_briefing.py`, expects a `/v1` suffix) alongside
218
+ `LM_STUDIO_ENDPOINT` (used by `trading/config.py`/`core.py`, no suffix),
219
+ clarifying which script reads which.
220
+ - Root `README.md` expanded with the install/CLI quick start, a CLI command
221
+ table, badges, a documentation map, and a configuration pointer.
222
+ - `docs/SETUP.md` restructured into "install the package" (recommended) vs
223
+ "run from a source checkout".
224
+
225
+ ## [0.1.0] — 2026-06-02
226
+
227
+ ### Added
228
+ - Initial public release of Atlas OS — a local-first personal AI operating
229
+ system built on Claude Cowork.
230
+ - Knowledge vault conventions with per-folder frontmatter schema enforcement
231
+ (`schemas/`).
232
+ - Local RAG pipeline (`scripts/embed_vault.py`) and wikilink knowledge graph
233
+ (`scripts/build_graph.py`).
234
+ - Git automation: auto-commit (`scripts/vault_commit.py`) and changelog
235
+ (`scripts/vault_changelog.py`).
236
+ - Credential-free SMTP email sender (`scripts/send_email.py`).
237
+ - System health check across all subsystems (`scripts/health_check.py`).
238
+ - Optional multi-agent trading research SDK (`trading/`) and briefing generator
239
+ (`scripts/trading_briefing.py`).
240
+ - Nine Claude Cowork scheduled-task skills (`skills/`).
241
+ - Templates for `CLAUDE.md`, memory structure, vault skeleton, and a static ops
242
+ dashboard (`templates/`, `dashboard/`).
243
+ - Documentation: setup, architecture, rebuild runbook, scheduled tasks, data
244
+ classification; `SECURITY.md`, `CONTRIBUTING.md`, MIT `LICENSE`.
245
+
246
+ [Unreleased]: https://github.com/paulholland511/atlas-os/compare/v0.3.0...HEAD
247
+ [0.3.0]: https://github.com/paulholland511/atlas-os/compare/v0.2.0...v0.3.0
248
+ [0.2.0]: https://github.com/paulholland511/atlas-os/compare/v0.1.0...v0.2.0
249
+ [0.1.0]: https://github.com/paulholland511/atlas-os/releases/tag/v0.1.0
atlas_os-0.3.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Atlas OS contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.