Compare commits

135 Commits

Author SHA1 Message Date
478e5b88bc chore: seal v0.2.0 milestone with updated submodule reference and README 2026-04-27 20:18:04 -04:00
38f1dfec4e feat(xdg): implement xdg-compliant directory structure and diagnostic doctor 2026-04-27 19:51:41 -04:00
bdb4b30012 docs: mark v0.2.0 Autonomous Self-Editing Foundation tasks as DONE
- Exposed Structural AST Editing Tools.
- Implemented Reflection Loops.
- Hardened Actuators (path-traversal and Merkle snapshots).
- Implemented tool permission tiers (ask/allow/deny).
- Validated skill hot-reload capability.
2026-04-27 13:44:50 -04:00
5e68db2464 docs: merge architectural evolution note into roadmap
- Transferred remaining architectural tasks (AST tooling, Reflection Loops, Actuator hardening, Lazy-loading) into the active gtd.org task tree.
- Purged the standalone note as its contents are now fully tracked in the project roadmap.
2026-04-27 13:39:02 -04:00
d1b1e1c4bb docs: shift vector search to v0.3.0 and make provider-agnostic
- Moved vector search out of v0.2.0 (blocking the TUI release).
- Re-architected as 'Asynchronous Embedding Gateway' in v0.3.0.
- Supports Ollama, llama.cpp, and OpenAI based on .env configuration.
- Operates via a background worker thread to prevent Merkle GC churn during active text editing.
2026-04-27 13:36:52 -04:00
6a90e43067 docs: sync gtd.org roadmap with new v0.3.0-v1.0.0 version scheme
- Renamed v0.3.0 to include HITL
- Renamed v0.4.0 to include Git Workflows
- Shifted Creator + Architect to v0.6.0
- Inserted new v0.5.0 (Interactive Actuation)
- Inserted new v0.7.0 (Visual Grounding) and v0.8.0 (Evaluation Harness) before v1.0.0 SOTA Parity.
2026-04-27 13:22:55 -04:00
4317eff40e docs: Add self-enforcement checklist to AGENTS.md
- Before task gate (git clean, skill query, GTD read)
- During task LP rules (org-only, one function per block, prose)
- After task validation (tests pass, chaos tier 1, no artifacts)
- References to authoritative skill org files

This makes the mandate enforceable, not just documentation.
2026-04-25 19:33:25 -04:00
cc6c552d5a refactor: Move Emacs config from system/ to projects/dotemacs/
- Delete deprecated system/ configuration files
- Update projects/dotemacs/modules/ with reorganized config
- Add .opencode/ directory for agent state
- Clean up attachments and unused documentation files
2026-04-25 18:41:20 -04:00
43c225a4b5 Update gtd.org: mark org-skill-emacs-edit DONE
- Added org-skill-emacs-edit (pure Lisp, no Emacs subprocess)
- Marked lisp-repair as DONE (now in org-skill-lisp-utils)
2026-04-23 07:35:55 -04:00
e87ae0c517 Update gtd.org: mark core skills consolidation DONE
- Merged lisp-validator + lisp-repair → org-skill-lisp-utils.org
- Added lisp utilities: count-char, deterministic-repair, neural-repair
- Moved skills from contrib to core
2026-04-23 07:22:43 -04:00
08803640a4 docs: Document ASDF fix and engineering methodology additions
- Added 4 cognitive tools: reload-skill, read-file, write-file, replace-string
- Fixed ASDF compilation bug with explicit dependencies
- Added test-first methodology rules to engineering standards
2026-04-23 06:48:22 -04:00
5f48f07b77 chore: Sync submodule for definitive v0.1.0 release 2026-04-19 20:51:49 -04:00
c5c524d335 chore: Final sync for stable conductor bridge 2026-04-19 20:41:26 -04:00
b11b028245 chore: Sync submodule for definitive gateway fix 2026-04-19 20:36:45 -04:00
ced260dd0f chore: Sync submodule for definitive protocol fix 2026-04-19 20:34:27 -04:00
1a87c72f7d chore: Sync submodule for Sexp restoration 2026-04-19 20:31:06 -04:00
284de44dcd chore: Sync submodule for JSON protocol 2026-04-19 20:23:27 -04:00
fd6c621eeb chore: Sync submodule for final protocol hardening 2026-04-19 20:16:22 -04:00
34af90e7e5 chore: Sync submodule for definitive proto-get fix 2026-04-19 20:10:14 -04:00
1f736aabe5 chore: Sync submodule for dependency fix 2026-04-19 20:06:48 -04:00
609b2fcac3 chore: Sync submodule for protocol security fix 2026-04-19 20:03:20 -04:00
f48f38400d chore: Sync submodule for chat protocol fix 2026-04-19 19:59:27 -04:00
e49b68287b chore: Sync submodule for protocol debugging 2026-04-19 19:56:31 -04:00
de23523200 chore: Sync submodule for validator hardening 2026-04-19 19:47:22 -04:00
dde4796d23 chore: Sync submodule for validator fix 2026-04-19 19:44:26 -04:00
7f0d195017 chore: Sync submodule for gateway syntax fix 2026-04-19 19:36:56 -04:00
e98a68f32c chore: Sync submodule for definitive v0.1.0 conductor fix 2026-04-19 19:32:32 -04:00
7815717346 chore: Sync submodule for boot lock 2026-04-19 19:19:57 -04:00
61191ac03e chore: Sync submodule for UI test improvement 2026-04-19 19:17:07 -04:00
1866695eca chore: Sync submodule for SBCL fix 2026-04-19 19:14:08 -04:00
05c2730c61 chore: Sync submodule for quoting fix 2026-04-19 19:11:25 -04:00
a97a3d1ba9 chore: Sync submodule for serial boot fix 2026-04-19 19:09:19 -04:00
41598c3542 chore: Sync submodule for race fix 2026-04-19 19:04:57 -04:00
5d3ab60adf chore: Sync submodule for boot race fix 2026-04-19 19:00:58 -04:00
18a802c2e2 chore: Sync submodule for definitively stable v0.1.0 2026-04-19 18:49:24 -04:00
c1cfde1e4b chore: Sync submodule for dynamic cascade 2026-04-19 18:38:04 -04:00
b78b32bda9 chore: Sync submodule for stable v0.1.0 TUI 2026-04-19 18:37:35 -04:00
bc51a5e586 chore: Sync submodule for metabolic feedback fix 2026-04-19 18:18:32 -04:00
a32524ec64 chore: Sync submodule for verified TUI loop 2026-04-19 18:11:50 -04:00
d03914053f chore: Sync submodule for definitive TUI fix 2026-04-19 18:06:46 -04:00
b1c2884254 chore: Sync submodule for protocol and visibility fixes 2026-04-19 17:54:04 -04:00
0239b4f8d7 chore: Sync submodule for tool visibility fix 2026-04-19 17:43:33 -04:00
04f7e248b4 chore: Sync submodule for response format fix 2026-04-19 17:41:35 -04:00
0c1bdc0418 chore: Sync submodule for case-insensitive gateway 2026-04-19 17:35:48 -04:00
71d3016a1c chore: Sync submodule for handler-case fix 2026-04-19 17:33:02 -04:00
913a81b0bd chore: Sync submodule for neural gateway hardening 2026-04-19 17:31:07 -04:00
c0f3ab1cf2 chore: Sync submodule for definitive package fix 2026-04-19 17:28:45 -04:00
44319bece1 chore: Sync submodule for definitive reason fix 2026-04-19 17:26:17 -04:00
f3c5de68b6 chore: Sync submodule for reasoning fix 2026-04-19 17:22:43 -04:00
50eaef0a9d chore: Sync submodule for universal reasoning 2026-04-19 17:12:05 -04:00
c84b82fd1f chore: Sync submodule for SETF fix 2026-04-19 17:05:04 -04:00
c711512689 chore: Sync submodule for robust protocol fix 2026-04-19 16:59:21 -04:00
54a76e71f0 chore: Sync submodule for cache purge and keyword fix 2026-04-19 16:45:12 -04:00
c7b7c4fc9d chore: Sync submodule for final TUI fix 2026-04-19 16:41:03 -04:00
727d56dbda chore: Sync submodule for actuator hardening 2026-04-19 16:36:51 -04:00
d7a4421464 chore: Sync submodule for hardened actuator kernel 2026-04-19 16:34:44 -04:00
e69bc16f0c chore: Sync submodule for actuator normalization 2026-04-19 16:31:14 -04:00
1e74331428 chore: Sync submodule for CLI actuator normalization 2026-04-19 16:28:22 -04:00
52593cb2ef chore: Sync submodule for skill list hardening 2026-04-19 16:23:28 -04:00
879ff3c2c5 chore: Sync submodule for definitive context fix 2026-04-19 16:21:42 -04:00
0893d5e959 chore: Sync submodule for definitive path fix 2026-04-19 16:17:55 -04:00
94361997ff chore: Sync submodule for definitive memory fix 2026-04-19 16:05:34 -04:00
dd834e55bd chore: Sync submodule for boot noise reduction 2026-04-19 15:57:00 -04:00
d4cdb0aa1d chore: Sync submodule for sanitized memory 2026-04-19 15:52:58 -04:00
89581e08ab chore: Sync submodule for sanitized actuator 2026-04-19 15:51:36 -04:00
fc5069908b chore: Sync submodule for colon fix 2026-04-19 15:50:01 -04:00
417ff56f67 chore: Sync submodule for definitive Green Boot 2026-04-19 15:48:49 -04:00
6d571c93c8 chore: Sync submodule for final syntax fix 2026-04-19 15:43:34 -04:00
643ecf17be chore: Sync submodule for comma character fix 2026-04-19 15:42:08 -04:00
e4fccdbcb9 chore: Sync submodule for skill syntax and stub fixes 2026-04-19 15:40:48 -04:00
fd70333f3f chore: Sync submodule for keyword cleaner 2026-04-19 15:37:07 -04:00
84cdb374c4 chore: Sync submodule for protocol normalization 2026-04-19 15:31:45 -04:00
8b3526d8cb chore: Sync submodule for keyword case fix 2026-04-19 15:27:44 -04:00
3c8a709549 chore: Sync submodule for metabolic feedback fix 2026-04-19 15:23:30 -04:00
f53a02c13b chore: Sync submodule for robust protocol reader 2026-04-19 15:21:05 -04:00
4f74624e73 chore: Sync submodule for vault memory unbound fix 2026-04-19 15:05:44 -04:00
7657969147 chore: Sync submodule for definitive TUI keyboard fix 2026-04-19 14:54:40 -04:00
0ec48197ba chore: Sync submodule for definitive TUI cursor fix 2026-04-19 14:29:30 -04:00
563c661555 chore: Sync submodule for boot execution fix 2026-04-19 14:19:19 -04:00
fbc2719ff4 chore: Sync submodule for vault load fix 2026-04-19 13:53:07 -04:00
df86c1d1be chore: Hard sync of submodule to latest verified TUI state 2026-04-19 13:38:34 -04:00
a5f81ad9ab chore: Sync submodule for final verified TUI input focus fix 2026-04-19 13:19:07 -04:00
9ebbbae15e chore: Sync submodule for verified TUI parenthesis fix 2026-04-19 13:12:11 -04:00
619d8871f2 chore: Sync submodule for TUI input focus fix 2026-04-19 13:02:43 -04:00
d02812f95c chore: Sync submodule for final TUI and package fixes 2026-04-19 12:09:52 -04:00
0f51b32680 chore: Sync submodule for read-framed-message export fix 2026-04-19 12:03:40 -04:00
1873525c4a chore: Sync submodule for bash variable restoration 2026-04-19 11:55:19 -04:00
a7f61908c2 chore: Sync submodule for strict command router refactor 2026-04-19 11:48:30 -04:00
02169a7ad3 chore: Sync submodule for precise setup exit fix 2026-04-19 11:44:59 -04:00
446c66f101 chore: Sync submodule for final protocol desync and fallthrough fixes 2026-04-19 11:42:38 -04:00
a3506551ea chore: Sync submodule for final v0.1.0 release 2026-04-17 20:25:18 -04:00
2518d4778c chore: Sync submodule for TUI window logic fix 2026-04-17 19:20:57 -04:00
78ec8240d4 chore: Sync submodule for squashed SBCL command fixes 2026-04-17 18:55:53 -04:00
d9f89bba7b chore: Sync submodule for forced SKILLS_DIR fix 2026-04-17 18:45:37 -04:00
ec87c36908 chore: Sync submodule for line continuation fix 2026-04-17 18:39:01 -04:00
01bd848244 chore: Sync submodule for final TUI and onboarding fixes 2026-04-17 18:32:49 -04:00
7cbf723d04 chore: Sync submodule for TUI and PATH fixes 2026-04-17 18:26:53 -04:00
f76360fae7 chore: Sync submodule for final verified fixed MVP release 2026-04-17 18:17:29 -04:00
cf50300be6 chore: Sync submodule for final verified MVP release 2026-04-17 18:07:06 -04:00
3a4c15a448 chore: Sync submodule for final-final MVP release 2026-04-17 17:57:31 -04:00
4b19d7d743 chore: Sync submodule for final-final MVP fixes 2026-04-17 17:56:05 -04:00
90f91ce082 chore: Sync submodule for final MVP release 2026-04-17 17:49:58 -04:00
b5e6912cc4 chore: Sync submodule for symlink-aware SCRIPT_DIR fix 2026-04-17 17:38:48 -04:00
e83e297843 chore: Sync submodule for final boot sequence fixes 2026-04-17 17:32:18 -04:00
0447c8495d chore: Sync submodule for final boot failure fixes 2026-04-17 17:25:02 -04:00
032fedc549 chore: Sync submodule for bash syntax fix 2026-04-17 17:17:50 -04:00
0760c8c126 chore: Sync submodule for package export and setup pre-load fixes 2026-04-17 17:12:14 -04:00
4dda5d2a97 chore: Sync submodule for verbose setup logging 2026-04-17 17:07:46 -04:00
a7b01cbf0b chore: Sync submodule for robust setup verification 2026-04-17 17:02:11 -04:00
2f6b32c2c7 chore: Update submodule for Memex path and directory creation fixes 2026-04-17 16:54:03 -04:00
d86ace0bf3 chore: Update submodule reference for stray binary removal 2026-04-17 16:41:47 -04:00
8c99cc785e chore: Update submodule reference for fresh VM setup fixes 2026-04-17 16:40:10 -04:00
b807402dba chore: Update submodule references for final MVP hardening 2026-04-17 16:30:57 -04:00
e922c04226 chore(gtd): Add v0.2.0 advanced onboarding tasks inspired by OpenClaw/Hermes 2026-04-17 16:29:47 -04:00
2265fb3e21 chore: Sync workspace and submodule for Audit Phase 2026-04-17 15:44:21 -04:00
ad6dee1dcd chore: Update submodule with identity setup feature 2026-04-17 14:12:06 -04:00
03883e7e4f chore: Update submodule with interactive setup and TUI entrypoint 2026-04-17 14:08:06 -04:00
4ff4ac7961 chore: Update submodule for MVP spec refinement 2026-04-17 14:05:20 -04:00
b49f83a891 chore: Update submodule for MVP spec test plan addition 2026-04-17 13:57:43 -04:00
7ede631db4 chore: Mark licensing tasks as DONE in GTD 2026-04-17 13:43:18 -04:00
3a031ba8a2 chore: Update submodule for AGPLv3 and CLA documentation 2026-04-17 13:41:42 -04:00
8597b34792 chore: Update submodule for JSON to S-Expression refactor 2026-04-17 13:36:54 -04:00
729a8e8d8a chore: Update submodule with TUI implementation 2026-04-17 13:24:10 -04:00
0cf2a8d386 chore: Update MVP plan and submodule pointer 2026-04-17 12:55:03 -04:00
bb6238bfa6 chore: Update GTD file with MVP release plan details 2026-04-17 12:38:15 -04:00
562ba063cb chore: Update inbox and opencortex submodule 2026-04-17 12:20:27 -04:00
a08bba8a3d chore: Update submodule pointers 2026-04-16 12:00:47 -04:00
4c818ccd86 fix: Correct UUID symbol and rename contrib submodule 2026-04-16 11:59:37 -04:00
12f11ce5b0 chore: Update org-agent-contrib submodule to latest c5d3d8c 2026-04-14 16:03:40 -04:00
e29ca5679e REFAC: Standardize on Cognitive Cycle and update documentation 2026-04-14 15:59:19 -04:00
34a210228e BRAND: Rename project to OpenCortex and update gtd.org 2026-04-14 11:51:26 -04:00
df9c47ad03 LEGAL: Finalize v0.1.0 licensing and legal framework 2026-04-14 10:17:33 -04:00
3900e3c8fc AUDIT: Align terminology with Autonomy and finalize CLI-first actuation 2026-04-14 09:38:24 -04:00
6c88a66273 AUDIT: Final v0.1.0 hardening - Emacs in Docker and sub-TODO mandate 2026-04-13 21:20:56 -04:00
614907613e AUDIT: Scheduled v0.1.0 publication and verification tasks for tomorrow 2026-04-13 21:18:58 -04:00
117 changed files with 4341 additions and 5939 deletions

18
.gitmodules vendored
View File

@@ -1,9 +1,9 @@
[submodule "org-agent"] [submodule "opencortex"]
path = org-agent path = opencortex
url = ssh://git@10.10.10.201:2222/amr/org-agent.git url = ssh://git@10.10.10.201:2222/amr/opencortex.git
[submodule "projects/org-agent"] [submodule "projects/opencortex"]
path = projects/org-agent path = projects/opencortex
url = ssh://git@10.10.10.201:2222/amr/org-agent.git url = ssh://10.10.10.201:2222/amr/opencortex.git
[submodule "projects/org-agent-contrib"] [submodule "projects/opencortex-contrib"]
path = projects/org-agent-contrib path = projects/opencortex-contrib
url = ssh://git@10.10.10.201:2222/amr/org-agent-contrib.git url = ssh://git@10.10.10.201:2222/amr/opencortex-contrib.git

139
.opencode/AGENTS.md Normal file
View File

@@ -0,0 +1,139 @@
# OpenCortex Agent Mandate
This file defines the operating policies and engineering guidelines that all autonomous agents MUST follow.
## Vision
- **Pure Lisp + Org-mode**: All intelligence implemented in Lisp, all documentation in Org-mode
- **No JSON, No YAML**: Thin harness, fat skills
- **Constraint**: No temporary scripts in opencortex repo - use `/home/user/memex/system/` instead
## Current Goal
- **v0.2.0**: Self-Improvement + Local LLMs
- org-skill-self-edit (self-modification)
- org-skill-emacs-edit (full org-mode manipulation)
- Local vector search (Ollama embeddings)
- Tool permission tiers (ask/allow/deny)
- Skill hot-reload ✅ DONE
- Engineering Standards skill ✅ DONE
- Literate Programming skill ✅ DONE
## Wake-Up Protocol
When this agent starts, it MUST:
1. **Read this file** (`~/.opencode/AGENTS.md`)
2. **Query the skill catalog**: Before any analysis, check if a skill covers the problem domain
- `(list-skills)` to see all loaded skills
- `(find-skill :keyword)` to check for a specific domain
- Read the skill's org file if found
3. **Verify git status**: Working tree MUST be clean before modification
4. **Read `gtd.org`**: Load current task context from the roadmap
5. **Enter lifecycle**: Follow the Engineering Standards lifecycle (Phase 0 → A → B → C → D → E)
Rationale: Raw LLM reasoning is a fallback, not a starting point. The skill layer encodes the system's accumulated wisdom. Ignoring skills creates drift.
## Engineering Standards
The Engineering Standards skill (`opencortex.skills.org-skill-engineering-standards`) defines the full lifecycle. The summaries below are reminders; the skill org file is authoritative.
### Phase 0: Before You Think
**Skill-First Query Rule**: Before analysis, debugging, or implementation, query the skill catalog. If a relevant skill exists, follow its mandates. Do not duplicate logic.
### Phase A: Design (Test-First)
1. **Define success criteria first** — Write the test or PROTOCOL that proves the feature works
2. **Break the design with chaos** — Three tiers of adversarial testing:
- *Deterministic chaos*: Scripted regression tests on every change
- *Probabilistic chaos*: Randomized fuzzing on every major release
- *Stress chaos*: Load and resource starvation during hardening sprints
### Phase B: Commit (Recovery Point)
3. **Commit Before Modify** — Commit and push (if network available) before any file changes
### Phase C: Build (Implementation)
4. **Literate Programming** — All logic in Org files; generated `.lisp` is derived, not authored
5. **Function-Block Granularity** — One function per `#+begin_src lisp` block
6. **Tangle Mandate** — Edit Org only; never touch generated `.lisp`
7. **Configuration Externalization** — No hardcoded values; use `.env.example`
8. **Org as Thinking Medium** — Document investigation before fixing
### Phase D: Validate (Proof)
9. **Test Verification** — Run the full suite. A change that breaks tests is damage, not a fix.
### Phase E: Document (Audit Trail)
10. **Decision Audit Trail** — Document root cause, options, tradeoffs, and rationale
11. **Stop-and-Wait** — For major changes, propose strategy, state "Waiting for user feedback," yield turn
12. **GTD Synchronization** — Update `gtd.org` with TODO headlines before marking complete
## Literate Programming Rules
The Literate Programming skill (`opencortex.skills.org-skill-literate-programming`) enforces Org discipline:
1. **One Function, One Block** — No bundling multiple definitions
2. **Org-Mode Evaluation Gate**`C-c C-c` after every block change
3. **Pre-Tangle Structural Check** — Verify paren balance before tangling
4. **No Direct `.lisp` Edits** — All changes flow through Org
5. **Code and Prose Together** — Every block preceded by explanatory text
Violating these rules corrupts the skill loader and causes boot failure (as seen in the 2026-04-25 incident).
## Agent Workflow
- **Boot Sequence**: Read AGENTS.md → query skills → verify git → read gtd.org
- **Before Any Modification**: Commit first (Commit Before Modify rule)
- **Plan Mode**: Draft PROTOCOL.md before complex implementations
- **Testing**: Run FiveAM test suite + chaos tests before marking task complete
- **Completion**: Update gtd.org, commit, sync with user
## Self-Enforcement Checklist
This agent MUST verify these conditions before, during, and after each task. Violation is a bug, not a suggestion.
### Before Any Task (Gate)
- [ ] **Git clean** — Working tree must be clean before modification
- [ ] **Skill query** — Check if relevant skill exists in `/home/user/memex/projects/opencortex/skills/`
- [ ] **Skill read** — If found, read the skill's org file before proceeding
- [ ] **GTD read** — Check `gtd.org` for current task context
### During Task (Literate Programming)
- [ ] **Org-only edits** — Edit only `.org` files, never generated `.lisp` directly
- [ ] **One function per block** — Each `#+begin_src` block contains exactly one definition
- [ ] **Prose before code** — Every block preceded by explanatory text
- [ ] **Prose includes**: What the function does, arguments, return value, rationale
- [ ] **Evaluate each block** — Verify the block compiles/evaluates correctly
- [ ] **Paren balance** — Check balanced parentheses before tangling
### After Task (Validation)
- [ ] **Tests pass** — Run full test suite; 100% pass required
- [ ] **Chaos tier 1** — Deterministic regression tests pass
- [ ] **No artifacts** — No orphaned `.bak`, `.log`, `.tmp`, or untracked test files
- [ ] **Commit** — Stage and commit changes with descriptive message
- [ ] **GTD update** — Update `gtd.org` with completed task state
### For OpenCortex Work Specifically
Reference authoritative skill files:
- Engineering Standards: `projects/opencortex/skills/org-skill-engineering-standards.org`
- Literate Programming: `projects/opencortex/skills/org-skill-literate-programming.org`
- Policy: `projects/opencortex/skills/org-skill-policy.org`
The summaries in this file are reminders; the skill org files are authoritative.
## References
- opencortex repo: `/home/user/memex/projects/opencortex`
- Engineering Standards: `/home/user/memex/projects/opencortex/skills/org-skill-engineering-standards.org`
- Literate Programming: `/home/user/memex/projects/opencortex/skills/org-skill-literate-programming.org`
- Policy Skill: `/home/user/memex/projects/opencortex/skills/org-skill-policy.org`
- Roadmap: `/home/user/memex/gtd.org`
- README: `/home/user/memex/projects/opencortex/README.org`

View File

@@ -2,10 +2,10 @@
#+AUTHOR: Amr #+AUTHOR: Amr
#+CREATED: [2026-03-17 Tue] #+CREATED: [2026-03-17 Tue]
#+UPDATED: [2026-04-08 Wed] #+UPDATED: [2026-04-08 Wed]
#+FILETAGS: :memex:psf:org-agent:lisp:sovereignty: #+FILETAGS: :memex:psf:opencortex:lisp:sovereignty:
* Overview * Overview
The *Master Memex* is a sovereign, neurosymbolic intelligence organization system. It is not merely a collection of notes, but a live, programmable environment—a **Personal Software Foundry (PSF)**—where a human (the Sovereign Executive) and agentic co-processes (the `org-agent` kernel and Gemini CLI) collaborate within a shared address space. The *Master Memex* is a sovereign, neurosymbolic intelligence organization system. It is not merely a collection of notes, but a live, programmable environment—a **Personal Software Foundry (PSF)**—where a human (the Sovereign Executive) and agentic co-processes (the `opencortex` kernel and opencode) collaborate within a shared address space.
This system synthesizes three core organizational methodologies into a unified "Lisp Machine" experience: This system synthesizes three core organizational methodologies into a unified "Lisp Machine" experience:
- *Zettelkasten:* For atomic, evergreen, and interlinked knowledge. - *Zettelkasten:* For atomic, evergreen, and interlinked knowledge.
@@ -33,10 +33,10 @@ The workspace is strictly divided into these zones to facilitate both human ergo
* The Agentic Inhabitants * The Agentic Inhabitants
The Memex is inhabited by autonomous agents that operate as "Probabilistic" (probabilistic/neural) and "Deterministic" (deterministic/symbolic) layers: The Memex is inhabited by autonomous agents that operate as "Probabilistic" (probabilistic/neural) and "Deterministic" (deterministic/symbolic) layers:
** [[file:projects/org-agent/README.org][org-agent (The Kernel)]] ** [[file:projects/opencortex/README.org][opencortex (The Kernel)]]
A Common Lisp microkernel that maintains a live, threaded Object-Store in RAM. It uses Org-mode as its native Abstract Syntax Tree (AST), allowing it to "perceive" and "act" on the Memex with structural precision. A Common Lisp microkernel that maintains a live, threaded Object-Store in RAM. It uses Org-mode as its native Abstract Syntax Tree (AST), allowing it to "perceive" and "act" on the Memex with structural precision.
** Gemini CLI ** opencode
A strategic orchestrator that handles large-scale batch tasks, research, and planning. It operates according to the *PSF Consensus Loop* (Demand -> Blueprint -> Success -> Build -> Chaos -> Memory). A strategic orchestrator that handles large-scale batch tasks, research, and planning. It operates according to the *PSF Consensus Loop* (Demand -> Blueprint -> Success -> Build -> Chaos -> Memory).
* The Cognitive Architecture: A Session-less Mind * The Cognitive Architecture: A Session-less Mind

View File

@@ -1,36 +0,0 @@
# Implementation Plan: The Micro-Loader (Boot Sequence Refactor)
## Objective
Consolidate and harden the kernel's skill-loading logic into a stateful "Micro-Loader." This improves boot reliability, provides clear error reporting for malformed skills, and centralizes all capability management within the `skills` module.
## Key Files & Context
- **Target:** `projects/org-agent/literate/skills.org` (Consolidating logic here).
- **Target:** `projects/org-agent/literate/core.org` (Moving `load-all-skills` out of here).
- **Mandate:** Syntax Pre-flight and Dependency Assertion.
## Implementation Steps
### 1. Define the Skill Catalog
- Introduce `*skill-catalog*` in `skills.lisp` to track metadata and load status for every skill file found in `SKILLS_DIR`.
- Statuses: `:discovered`, `:loading`, `:ready`, `:failed`.
### 2. Refactor `load-skill-from-org` (Harden)
- **Syntax Check:** Invoke `validate-lisp-syntax` before evaluation.
- **Dependency Check:** If `#+DEPENDS_ON` refers to a skill that failed or is missing, mark this skill as `:failed` immediately with a clear error.
- **Detailed Logging:** Record the specific reason for failure (syntax, timeout, runtime error) in the catalog.
### 3. Implement `initialize-all-skills` (The Orchestrator)
- Move the directory scanning and loop logic from `core.lisp` into `skills.lisp`.
- This function will:
1. Scan `SKILLS_DIR`.
2. Populate the catalog.
3. Run the topological sort.
4. Execute the load loop with timeouts.
5. Print a final "Boot Summary" report.
### 4. Simplify Kernel Boot
- Update `start-daemon` in `core.lisp` to call `(initialize-all-skills)` instead of the old `load-all-skills`.
## Phase E: Chaos (Verification)
- **Integrity Test:** Add a test that verifies `initialize-all-skills` correctly identifies a missing dependency and prevents the dependent skill from attempting to load.
- **Report Test:** Verify that the skill catalog correctly reflects the status of loaded vs. failed skills.

View File

@@ -27,10 +27,10 @@ Chronological record of all meetings, fleeting notes, and raw conversation logs
## Major System Developments ## Major System Developments
### Three OpenClaw Skills Deployed ### Three OpenClaw Skills Deployed
Created and deployed three integrated skills for the org-agent-memex system: Created and deployed three integrated skills for the opencortex-memex system:
- *org-agent-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes - *opencortex-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *org-agent-memex-gtd*: Automated task promotion and GTD workflow management - *opencortex-memex-gtd*: Automated task promotion and GTD workflow management
- *org-agent-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation - *opencortex-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation
All skills follow the established pattern: SKILL.md with YAML frontmatter, README.md for users, and integration with the PARA + Atomic Notes (Zettelkasten) + GTD workflow. All skills follow the established pattern: SKILL.md with YAML frontmatter, README.md for users, and integration with the PARA + Atomic Notes (Zettelkasten) + GTD workflow.
@@ -93,10 +93,10 @@ Awaiting pressure-testing session for 21-layer audit assumptions. All building p
## Major System Developments ## Major System Developments
### Three OpenClaw Skills Deployed ### Three OpenClaw Skills Deployed
Created and deployed three integrated skills for the org-agent-memex system: Created and deployed three integrated skills for the opencortex-memex system:
- *org-agent-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes - *opencortex-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *org-agent-memex-gtd*: Automated task promotion and GTD workflow management - *opencortex-memex-gtd*: Automated task promotion and GTD workflow management
- *org-agent-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation - *opencortex-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation
All skills follow the established pattern: SKILL.md with YAML frontmatter, README.md for users, and integration with the PARA + Atomic Notes (Zettelkasten) + GTD workflow. All skills follow the established pattern: SKILL.md with YAML frontmatter, README.md for users, and integration with the PARA + Atomic Notes (Zettelkasten) + GTD workflow.
@@ -159,10 +159,10 @@ Awaiting pressure-testing session for 21-layer audit assumptions. All building p
## Major System Developments ## Major System Developments
### Three OpenClaw Skills Deployed ### Three OpenClaw Skills Deployed
Created and deployed three integrated skills for the org-agent-memex system: Created and deployed three integrated skills for the opencortex-memex system:
- *org-agent-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes - *opencortex-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *org-agent-memex-gtd*: Automated task promotion and GTD workflow management - *opencortex-memex-gtd*: Automated task promotion and GTD workflow management
- *org-agent-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation - *opencortex-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation
All skills follow the established pattern: SKILL.md with YAML frontmatter, README.md for users, and integration with the PARA + Atomic Notes (Zettelkasten) + GTD workflow. All skills follow the established pattern: SKILL.md with YAML frontmatter, README.md for users, and integration with the PARA + Atomic Notes (Zettelkasten) + GTD workflow.
@@ -225,10 +225,10 @@ Awaiting pressure-testing session for 21-layer audit assumptions. All building p
## Major System Developments ## Major System Developments
### Three OpenClaw Skills Deployed ### Three OpenClaw Skills Deployed
Created and deployed three integrated skills for the org-agent-memex system: Created and deployed three integrated skills for the opencortex-memex system:
- *org-agent-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes - *opencortex-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *org-agent-memex-gtd*: Automated task promotion and GTD workflow management - *opencortex-memex-gtd*: Automated task promotion and GTD workflow management
- *org-agent-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation - *opencortex-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation
All skills follow the established pattern: SKILL.md with YAML frontmatter, README.md for users, and integration with the PARA + Atomic Notes (Zettelkasten) + GTD workflow. All skills follow the established pattern: SKILL.md with YAML frontmatter, README.md for users, and integration with the PARA + Atomic Notes (Zettelkasten) + GTD workflow.
@@ -291,10 +291,10 @@ Awaiting pressure-testing session for 21-layer audit assumptions. All building p
## Major System Developments ## Major System Developments
### Three OpenClaw Skills Deployed ### Three OpenClaw Skills Deployed
Created and deployed three integrated skills for the org-agent-memex system: Created and deployed three integrated skills for the opencortex-memex system:
- *org-agent-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes - *opencortex-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *org-agent-memex-gtd*: Automated task promotion and GTD workflow management - *opencortex-memex-gtd*: Automated task promotion and GTD workflow management
- *org-agent-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation - *opencortex-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation
All skills follow the established pattern: SKILL.md with YAML frontmatter, README.md for users, and integration with the PARA + Zettelkasten + GTD workflow. All skills follow the established pattern: SKILL.md with YAML frontmatter, README.md for users, and integration with the PARA + Zettelkasten + GTD workflow.
@@ -357,10 +357,10 @@ Awaiting pressure-testing session for 21-layer audit assumptions. All building p
## Major System Developments ## Major System Developments
### Three OpenClaw Skills Deployed ### Three OpenClaw Skills Deployed
Created and deployed three integrated skills for the org-agent-memex system: Created and deployed three integrated skills for the opencortex-memex system:
- *org-agent-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes - *opencortex-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *org-agent-memex-gtd*: Automated task promotion and GTD workflow management - *opencortex-memex-gtd*: Automated task promotion and GTD workflow management
- *org-agent-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation - *opencortex-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation
All skills follow the established pattern: SKILL.md with YAML frontmatter, README.md for users, and integration with the PARA + Zettelkasten + GTD workflow. All skills follow the established pattern: SKILL.md with YAML frontmatter, README.md for users, and integration with the PARA + Zettelkasten + GTD workflow.

View File

@@ -5,10 +5,10 @@
* Activities * Activities
** OpenClaw Resilience and Memory Restoration ** OpenClaw Resilience and Memory Restoration
- *Problem:* Agent suffered from "context amnesia" after a session reset at 08:10 AM, losing the path to `emacs.org` and failing to rediscover it. - *Problem:* Agent suffered from "context amnesia" after a session reset at 08:10 AM, losing the path to `emacs.org` and failing to rediscover it.
- *Root Cause:* Search depth was too shallow (workspace root only), and the `org-agent-memex-gtd` skill was not in the executable skills directory. - *Root Cause:* Search depth was too shallow (workspace root only), and the `opencortex-memex-gtd` skill was not in the executable skills directory.
- *Resolution:* - *Resolution:*
- Identified canonical path: `/home/amr/.openclaw/workspace/memex/5_projects/dotemacs/emacs.org`. - Identified canonical path: `/home/amr/.openclaw/workspace/memex/5_projects/dotemacs/emacs.org`.
- Restored skills by copying `org-agent-memex-gtd`, `org-agent-memex-workbreakdown`, and `org-agent-memex-zettlekasten` to standard `.openclaw/skills/` directory. - Restored skills by copying `opencortex-memex-gtd`, `opencortex-memex-workbreakdown`, and `opencortex-memex-zettlekasten` to standard `.openclaw/skills/` directory.
- Synced `GTD.org` and `memex/gtd.org` to ensure "Ground Truth" is consistent. - Synced `GTD.org` and `memex/gtd.org` to ensure "Ground Truth" is consistent.
** Emacs Configuration Modularization ** Emacs Configuration Modularization

15
fedora-43-repos.repo Normal file
View File

@@ -0,0 +1,15 @@
[fedora]
name=Fedora 43 - x86_64
enabled=1
metadata_expire=1h
baseurl=https://mirrors.fedoraproject.org/metalink?repo=fedora-43&arch=x86_64
type=rpm-md
gpgcheck=0
[updates]
name=Fedora 43 - x86_64 - Updates
enabled=1
metadata_expire=1h
baseurl=https://mirrors.fedoraproject.org/metalink?repo=fedora-43-updates&arch=x86_64
type=rpm-md
gpgcheck=0

528
gtd.org
View File

@@ -9,72 +9,432 @@
:PROPERTIES: :PROPERTIES:
:ID: gtd-actions :ID: gtd-actions
:END: :END:
** DONE Fix Modular Emacs configuration loading and org-capture templates
- Restored ef-themes configuration in emacs-core.org which was lost during refactoring.
CLOSED: [2026-04-21 Tue 15:00]
- Resolved conflict where multiple modules were overwriting ~/.emacs.d/custom.el.
- Switched from defvar to setq for org-capture-templates to ensure it applies on boot.
** DONE Reorganize Emacs configuration files into the dotemacs project
- Deleted outdated configuration modules in ~/memex/projects/dotemacs/.
- Moved live configuration files from ~/memex/system/ to ~/memex/projects/dotemacs/.
- Organized modules into a /modules subdirectory and snippets into /templates.
- Updated ~/.emacs and internal Org-babel paths to reflect the new location.
CLOSED: [2026-04-21 Tue 16:45]
** DONE Fix emacsclient defaulting to terminal mode
- Identified that 'opencortex' setup.org was hardcoded to install emacs-nox.
- Reinstalled emacs-gtk and restored GUI support.
- Patched projects/opencortex/harness/setup.org to use 'emacs' metapackage.
- Restored missing modules/emacs-ui.org and added it to dotemacs.org.
- Added 'em' alias to ~/.bash_aliases for persistent GUI frame creation.
CLOSED: [2026-04-21 Tue 17:15]
:END:
* Projects * Projects
:PROPERTIES:
:ID: gtd-projects :ID: gtd-projects
:END: :END:
** NEXT Org-agent v1.0 ** NEXT OpenCortex v1.0
:PROPERTIES: :PROPERTIES:
:ID: proj-org-agent-v1-0 :ID: proj-opencortex-v1-0
:Engineering-STATE: D: BUILD :Engineering-STATE: D: BUILD
:CREATED: [2026-03-09 Mon 14:23] :CREATED: [2026-03-09 Mon 14:23]
:END: :END:
Org-agent: A Neurosymbolic AI Agent. OpenCortex: A Neurosymbolic AI Agent.
*** PHASE: SOVEREIGN MVP (v0.1.0 Released) *** PHASE: AUTONOMOUS MVP (v0.1.0 Released)
:PROPERTIES: :PROPERTIES:
:ID: proj-mvp-v0-1-0 :ID: proj-mvp-v0-1-0
:END: :END:
The "Zero-to-One" release. The agent must be mathematically secure, CLI-first, and capable of autonomous Memex maintenance. The "Zero-to-One" release. The agent must be mathematically secure, CLI-first, and capable of autonomous Memex maintenance.
**** DONE 1. Harness Hardening (The Final Audit) **** DONE 1. Harness Hardening (The Final Audit)
- [X] Audit remaining core skills (`org-skill-policy.org`, `org-skill-bouncer.org`) to the new Literate Granularity standard. ***** DONE Audit remaining core skills (`org-skill-policy.org`, `org-skill-bouncer.org`) to the new Literate Granularity standard.
- [X] Implement Verification Lock: Ensure `MANDATORY_SKILLS` pass `validate-lisp-syntax` before boot proceeds. ***** DONE Implement Verification Lock: Ensure `MANDATORY_SKILLS` pass `validate-lisp-syntax` before boot proceeds.
- [X] Logging & Transparency: Ensure `context-get-system-logs` is utilized by the Reason engine to explain blocked actions. ***** DONE Logging & Transparency: Ensure `context-get-system-logs` is utilized by the Reason engine to explain blocked actions.
**** DONE 2. The Sovereign Scribe & Gardener (The Primary Value Prop) **** DONE 2. The Autonomous Scribe & Gardener (The Primary Value Prop)
- [X] Implement `org-skill-scribe.org`: Background worker that distills daily chronological logs into structured Zettelkasten notes. ***** DONE Implement `org-skill-scribe.org`: Background worker that distills daily chronological logs into structured Zettelkasten notes.
- [X] Implement `org-skill-gardener.org`: Heartbeat-driven skill that autonomously flags orphaned nodes and repairs broken links. ***** DONE Implement `org-skill-gardener.org`: Heartbeat-driven skill that autonomously flags orphaned nodes and repairs broken links.
**** DONE 3. The Zero-to-One Experience (setup.org) **** DONE 3. The Zero-to-One Experience (setup.org)
- [X] Consolidate installation instructions, `onboard.sh`, and `Dockerfile` into a single, literate `setup.org` file. ***** DONE Consolidate installation instructions, `onboard.sh`, and `Dockerfile` into a single, literate `setup.org` file.
- [X] Ensure the setup process interactively builds the `.env` and verifies SBCL/Quicklisp dependencies. ***** DONE Ensure the setup process interactively builds the `.env` and verifies SBCL/Quicklisp dependencies.
**** TODO 4. CLI-First Actuation **** DONE 4. CLI-First Actuation
- [ ] Verify the `cli` actuator and inbound gateway handle standard I/O interaction gracefully, treating Emacs as an optional power-user viewport. CLOSED: [2026-04-14 Tue 09:40]
***** DONE Verified the `cli` actuator and inbound gateway handle standard I/O interaction gracefully via a stateful `socat` connection.
*** PHASE: PUBLICATION & VERIFICATION (v0.1.0 Post-Release)
:PROPERTIES:
:ID: proj-pub-v0-1-0
:END:
Ensuring the system is ready for the world through collaborative testing, documentation, and licensing.
**** DONE 1. Collaborative End-to-End Testing [2026-04-21 Tue]
CLOSED: [2026-04-21 Tue 17:30]
***** DONE Verified stable foundation at commit `cab0e5a`.
***** DONE Verified boot sequence and bidirectional connectivity.
**** DONE 2. Semantic Reorganization & System Stabilization [2026-04-21 Tue]
CLOSED: [2026-04-21 Tue 18:30]
***** DONE Rename directories: harness/, library/, environment/, infrastructure/.
***** DONE Consolidate Probabilistic engine into reason.lisp.
***** DONE Embed bidirectional CLI logic into opencortex.sh.
***** DONE Stabilize skill engine: 12/12 skills loaded with package jailing.
***** DONE Cleanup legacy documentation and deployment artifacts.
**** DONE 2. Comprehensive Documentation <2026-04-14 Tue>
CLOSED: [2026-04-20 Mon 18:00]
***** DONE Draft `USER_MANUAL.org`: Focus on CLI interaction, installation, and Memex structure.
***** DONE Draft `CONTRIBUTING.org`: Explain Literate Granularity and Skill creation standards.
**** DONE 3. License & Legal Finalization <2026-04-14 Tue>
CLOSED: [2026-04-17 Fri 11:25]
***** DONE Assign the AGPLv3 open-source license.
***** DONE Implement a broad Contributor License Agreement (CLA) process.
***** DONE Update `LICENSE` and `CHANGELOG` accordingly.
**** TODO 4. GitHub Migration & Repository Setup <2026-04-14 Tue>
***** TODO Migrate primary remote to GitHub and configure canonical repository.
***** TODO Set repository topics, badges, issue templates, and CI/CD foundations.
**** TODO 5. Marketing & Social Media Launch <2026-04-14 Tue>
***** TODO Execute PR plan (Reddit, Hacker News, X/Twitter).
***** TODO Create a short, high-quality terminal demo GIF/video of the TUI interaction.
*** PHASE: INTERACTIVE REFINEMENT (v0.2.0 Target) *** PHASE: INTERACTIVE REFINEMENT (v0.2.0 Target)
:PROPERTIES: :PROPERTIES:
:ID: proj-refinement-v0-2-0 :ID: proj-refinement-v0-2-0
:END: :END:
Elevating the user interface from raw shell piping to a high-fidelity, native Lisp experience. Elevating the user interface from raw shell piping to a high-fidelity, native Lisp experience. Priority: Self-editing is the foundation of all future growth. Full org-mode manipulation makes the agent a true Emacs citizen.
**** TODO 1. Common Lisp TUI (The "gemini-cli" parity) Roadmap basis: Evolutionary roadmap from README.org. Working backwards from SOTA parity.
- [ ] Implement a rich, interactive TUI natively in Common Lisp (e.g., via `cl-charms`, `croatoan`, or `cl-ncurses`).
- [ ] Support syntax highlighting for code blocks and Org-mode syntax.
- [ ] Implement a fixed bottom input box with command history.
- [ ] Implement Slash Commands (`/help`, `/exit`, `/clear`, `/skill-load`).
**** TODO 2. Direct Lisp-to-Terminal Actuation **** DONE 0. Autonomous Self-Editing Foundation
- [ ] Refactor the `:cli` actuator to use the native TUI rendering instead of raw stream printing. ***** DONE org-skill-lisp-repair (Lisp syntax repair)
- Deterministic: auto-balance parens via paren-counting
- Probabilistic: LLM generates surgical fix on =:syntax-error= events
- Memory rollback on failure
DONE: Now in org-skill-lisp-utils (merged from contrib)
***** DONE org-skill-emacs-edit (full org-mode manipulation)
- Read org buffers, parse AST via org-element
- Create/update/delete headlines, set properties, manage TODO states
- Handle =id:= links and internal links
- Pure Lisp implementation (no Emacs subprocess)
***** DONE Expose Structural AST Editing Tools
- Wrap org-skill-emacs-edit into def-cognitive-tool definitions
- Force LLM to use semantic node updates instead of regex file I/O
***** DONE Implement Reflection Loops
- Feed rejection traces (syntax errors, policy blocks) back to LLM to trigger self-correction
***** DONE Harden Actuators
- Fix path-traversal vulnerabilities in file I/O tools (e.g. :write-file)
- Enforce Merkle-snapshots on all state-modifying actions
***** DONE Implement tool permission tiers (ask/allow/deny)
- Per-tool permission plist stored in org-object
- =generate-tool-belt-prompt= filters denied tools before LLM sees them
- Ask-tier prompts user before execution
***** DONE Implement skill hot-reload (=:reload-skill= tool)
- Swap compiled skill files without breaking active sockets
- Reload skill into jailed package namespace
- DONE: Added :reload-skill, :read-file, :write-file, :replace-string tools
- DONE: Fixed ASDF compilation bug (position tracking issue with :serial t)
- DONE: Added explicit :depends-on declarations to opencortex.asd
*** PHASE: EVOLUTIONARY ROADMAP **** DONE Engineering Process Improvements [2026-04-23 Wed]
**** TODO v1.0.0 (Phase 2.5): The Verified Wrapper (SOTA Parity) ***** DONE Fix ASDF compilation bug (position tracking at byte 16834)
- Root cause: Duplicate proto-get, bt: prefix issues, :serial t position cache
- Fix: Removed duplicate, fixed bt:->bordeaux-threads, explicit dependencies
- Added eval-when wrapper for new tools (good Lisp practice)
***** DONE Add test-first methodology to engineering standards
- Rule 10: Test-first - design tests before coding, run chaos testing
- Rule 11: Org as thinking medium - document investigations in prose
- Rule 12: Engineering decision audit trail - document root cause, tradeoffs
- Added to opencortex-contrib/skills/org-skill-engineering-standards.org
***** DONE Perform comprehensive architectural review and evolution strategy [2026-04-27 Mon]
- Identified hidden gaps: Org-mode round-trip, sandboxing vulnerabilities, and GC scaling.
- Defined "Structural AST Editing" and "Reflection Loops" as core strategic requirements.
- Captured findings in [[file:notes/opencortex-architectural-evolution.org][opencortex-architectural-evolution.org]].
***** DONE Fix API drift in opencortex-contrib [2026-04-27 Mon]
- Standardized legacy keywords (:neuro/:symbolic) to new harness standard (:probabilistic/:deterministic).
- Updated 16 skills in opencortex-contrib for kernel compatibility.
- Complete Formal Verification gates for external tools. **** DONE 4. Core Skills Consolidation [2026-04-23 Thu]
- Achieve secure, end-to-end autonomous engineering workflows. - Merged lisp-validator + lisp-repair → org-skill-lisp-utils.org
**** TODO v2.0.0 (Phase 3): Cannibalizing the Toolchain - Added lisp utilities: count-char, deterministic-repair, neural-repair
- Ingest DOM as native Lisp AST (Cannibalize Browser). - Added validation: structural, syntactic, semantic checks
- Replace string-based bash with native OS bindings (Cannibalize Shell). - Moved org-skill-self-fix from contrib → core
**** TODO v3.0.0 (Phase 4): True Symbolic Determinism - Moved org-skill-engineering-standards from contrib → core
- Relegate LLM to Semantic Translator. - Deleted old org-skill-lisp-validator.org
- Implement Deterministic Planner (The Solver).
- Implement Self-Correcting Syntax Gates. **** TODO 5. Advanced CLI Onboarding Experience
**** TODO v4.0.0+ (Phase 5): The Neurosymbolic Singularity ***** TODO Implement interactive Lisp CLI wizard (=opencortex setup=)
- Homoiconic Self-Writing (Hot-reloading literate source). ***** TODO Implement =opencortex link <gateway>= for Telegram/Signal bot connection
- Asynchronous Swarm Cognition (Jailed sub-agents). ***** TODO Implement =opencortex doctor= for environment health and API key validation
***** TODO Implement =opencortex install <skill>= for dynamic skill downloading
**** TODO 1. Common Lisp TUI Implementation
***** TODO Integrate =croatoan= for native terminal rendering
***** TODO Implement scrollable history viewport for chat and thought streams
***** TODO Implement fixed bottom input box with multi-line support and command history
***** TODO Implement persistent status bar for background workers (Scribe/Gardener)
***** TODO Support syntax highlighting for Lisp code blocks and Org-mode syntax
**** TODO 2. Slash Commands & Interactive Control
***** TODO Implement =/help= command for system overview
***** TODO Implement =/exit= and =/clear= commands
***** TODO Implement =/skill-load <name>= for dynamic hot-reloading
***** TODO Implement =/status=, =/config=, =/search=, =/commit= slash commands
**** TODO 3. Direct Lisp-to-Terminal Actuation
***** TODO Refactor the =:cli= actuator to use native TUI rendering
*** PHASE: EVENT ORCHESTRATION + HITL (v0.3.0)
:PROPERTIES:
:ID: proj-orchestration-v0-3-0
:END:
Unified control plane: hooks + cron + routing in one skill. Deep project understanding.
**** TODO 0. Event Orchestrator (unified hooks+cron+routing)
***** TODO Integrate contrib org-skill-event-orchestrator
- Merge *hook-registry* + *cron-registry* + complexity classifier
- Hooks via =#+HOOK:= Org-mode properties
- Three complexity tiers: =:REFLEX= (no LLM), =:COGNITION= (light LLM), =:REASONING= (full LLM)
- Hook into heartbeat for cron processing
**** TODO 1. Context Manager (project scoping)
***** TODO Integrate contrib org-skill-context-manager
- Stack-based context with =push-context= / =pop-context=
- Path resolution relative to current context
- Memory scope: =:scope= property on org-objects (memex/session/project)
- Implement lazy-loading proxies for large-scale memory traversal (offload cold nodes to disk)
**** TODO 2. Model-Tier Routing (cost optimization)
***** TODO Extend =*model-selector-fn= for complexity-based routing
- Heartbeats → smallest model
- User input → medium model
- Complex reasoning → large model
- Source: GBrain sub-agent model routing
**** TODO 3. Memory Scope Segmentation
***** TODO Extend org-object with =:scope= property
- =:memex= (permanent knowledge)
- =:session= (ephemeral context)
- =:project= (scoped to current work)
- Scope-aware retrieval in memory.lisp
**** TODO 4. Asynchronous Embedding Gateway
***** TODO Implement provider-agnostic org-skill-embedding-gateway
- Support Ollama, llama.cpp, and OpenAI based on .env config
- Implement lazy-loading: edits mark nodes as =:vector :pending=
- Background worker thread batches pending nodes and updates Merkle tree silently
**** TODO 4. Slash Commands (TUI ergonomics)
***** TODO M-x style command palette
***** TODO /- prefix for command mode
***** TODO Commands defined in Org-mode
*** PHASE: LONG-HORIZON PLANNING + GIT WORKFLOWS (v0.4.0)
:PROPERTIES:
:ID: proj-planning-v0-4-0
:END:
Multi-step task mastery, structured tracking with failure handling and course correction.
**** TODO 0. Long-Horizon Planning (task tree DAG)
***** TODO Implement org-skill-long-horizon
- Decompose complex tasks into Org-mode headline trees
- Terminal states: =:todo==:next-action==:in-progress==:done= / =:blocked= / =:stuck=
- Parent summarises child results
- Branch pruning when paths fail
- Source: Claude Code ULTRAPLAN (reimplemented in Lisp)
**** TODO 1. Git Steward (version control integration)
***** TODO Integrate contrib org-skill-git-steward
- Status, diff, commit, push, branch operations
- Policy: commit-before-modify gate (from contrib engineering-standards)
- Log commits to memory
**** TODO 2. TDD Runner Integration
***** TODO Integrate contrib org-skill-tdd-runner
- Run FiveAM tests on file save
- Inject =:test-failure= event on red
- Hook into self-fix for auto-repair proposals
**** TODO 3. Deep Emacs Integration
***** TODO Full org-agenda awareness
- Navigate, clock time, refile, archive
- Uses org-element + org-id
*** PHASE: INTERACTIVE ACTUATION & ENVIRONMENT STEWARDSHIP (v0.5.0)
:PROPERTIES:
:ID: proj-actuation-v0-5-0
:END:
Interactive terminal sessions and autonomous dependency management.
**** TODO 0. Interactive PTY Actuator
***** TODO Stream long-running process output to the context window (e.g., `npm run dev`, REPLs)
***** TODO Implement async interrupt control (Ctrl+C emulation)
**** TODO 1. The Environment Steward
***** TODO Autonomously detect missing dependencies (e.g., "Command not found")
***** TODO Propose an installation command and retry the failed action
*** PHASE: CREATOR + ARCHITECT + GTD (v0.6.0)
:PROPERTIES:
:ID: proj-creator-v0-5-0
:END:
Agent bootstraps itself: creates skills autonomously, designs projects from PRDs, tracks work.
**** TODO 0. Skill Creator (autonomous skill generation)
***** TODO Integrate contrib org-skill-creator
- LLM drafts complete skill org-file from natural language
- Mandatory: syntax validation → jail-load → test → register
**** TODO 1. Architect Agent (PRD → PROTOCOL)
***** TODO Integrate contrib org-skill-architect
- Scan =:STATUS: FROZEN= PRDs
- Generate Phase B PROTOCOL from Phase A
- Write to same file
**** TODO 2. GTD Integration (project tracking)
***** TODO Integrate contrib org-skill-gtd
- Full GTD cycle: capture, clarify, organize, reflect, engage
- org-gtd v4.0 DAG (=:TRIGGER:=, =:BLOCKER:=)
**** TODO 3. Consensus Loop (multi-model agreement)
***** TODO Integrate contrib org-skill-consensus
- Run multiple providers for critical decisions
- Compare results, detect disagreements
- Confidence scoring
**** TODO 4. Web Research (Playwright browsing)
***** TODO Integrate contrib org-skill-playwright + org-skill-web-research
- Headless Chromium via Python bridge
- Text extraction and screenshots
- Gemini Web UI automation
**** TODO 5. Memex Management (PARA lifecycle)
***** TODO Integrate contrib org-skill-memex + org-skill-workspace-manager
- Archive DONE tasks, suggest refiling
- Detect orphaned nodes
- PARA/Zettelkasten maintenance
*** PHASE: VISUAL GROUNDING & MCP BRIDGE (v0.7.0)
:PROPERTIES:
:ID: proj-vision-v0-7-0
:END:
Multimodal visual interaction and ecosystem-wide tool compatibility.
**** TODO 0. Computer Use / Vision
***** TODO Allow the agent to request host OS or browser screenshots
***** TODO Analyze UI and issue precise X/Y coordinate click/type commands via an X11/Wayland bridge
**** TODO 1. MCP Gateway Bridge
***** TODO Build a Lisp-native client for the Model Context Protocol
***** TODO Connect OpenCortex to external tools and data sources
*** PHASE: THE EVALUATION HARNESS (v0.8.0)
:PROPERTIES:
:ID: proj-eval-v0-8-0
:END:
Automated benchmarking to mathematically prove the agent's reasoning capabilities.
**** TODO 0. SWE-Bench Harness
***** TODO Automated pipeline that clones repositories and feeds GitHub issues
***** TODO Track multi-step resolution trajectory, run tests, and score success
*** PHASE: SOTA PARITY (v1.0.0)
:PROPERTIES:
:ID: proj-sota-v1-0-0
:END:
Feature-complete agent competitive with commercial agents. All borrowed concepts reimplemented in pure Lisp.
All features from v0.2.0 through v0.8.0 combined, verified, and tested end-to-end.
| Area | Parity Target |
|------|--------------|
| Self-improvement | Claude Code self-debug |
| Planning | ULTRAPLAN equivalent |
| Tool ecosystem | 10+ cognitive tools |
| Context window | Semantic search + scope segmentation |
| Safety | 6 Policy invariants + formal verification |
| Multi-step tasks | Task trees with terminal states |
| Code editing | Full file read/write via org manipulation |
| Memory | Vector recall in org-object |
| Emacs integration | Full org-mode control (exceeds Claude Code) |
| Autonomy | 100% local capable (exceeds Claude Code) |
*** PHASE: LISP MACHINE EMERGENCE (v2.0.0)
:PROPERTIES:
:ID: proj-lisp-v2-0-0
:END:
From Lisp-using agent to true Lisp machine. Agent IS the Emacs process.
**** TODO Lish: Lisp editor as Org-mode IDE
- Org-babel for interactive Lisp evaluation
- Full REPL in TUI
- No bridge needed — direct memory access
**** TODO Lish: Shell replacement
- Lisp-based shell that speaks plists
- Org-mode buffers as file system
- No bash dependency
*** PHASE: NEUROSYMBOLIC MATURITY (v3.0.0)
:PROPERTIES:
:ID: proj-neuro-v3-0-0
:END:
Deterministic planner takes the wheel. LLM relegated to semantic translation.
**** TODO Deterministic planner
- Planner as pure Lisp function
- No LLM needed for scheduling
- Generates task graphs without probabilistic inference
**** TODO Self-correcting gates
- Gates learn from false positives (user override patterns)
- Adaptive threshold adjustment
*** PHASE: AI STACK INTERNALIZED (v4.0.0)
:PROPERTIES:
:ID: proj-ai-v4-0-0
:END:
The agent understands its own weights. No external inference.
**** TODO Llama.cpp in Lisp
- FFI binding to llama.cpp
- No Python subprocess
- Pure Common Lisp inference
**** TODO Weights as sexps
- Neural weights represented as Lisp data structures
- Homoiconic model introspection
*** PHASE: TRUE AGENCY (v5.0.0)
:PROPERTIES:
:ID: proj-agency-v5-0-0
:END:
World models, temporal reasoning, goal persistence across restarts.
**** TODO World models
- Agent builds predictive models of user behavior
- Project dynamics awareness
- System state forecasting
**** TODO Temporal reasoning
- Scheduling and deadline awareness
- Elapsed duration tracking
- Calendar integration
**** TODO Goal persistence
- Goals survive restarts
- Long-term projects tracked in org-objects
- Cross-session continuity
*** PHASE: EVOLUTIONARY ROADMAP (Previous — Superseded by Critical Analysis)
:PROPERTIES:
:ID: proj-old-roadmap
:END:
Superseded by the critical analysis-informed roadmap above (v0.2.0 through v5.0.0). This section kept for historical reference.
**** TODO v0.1.0: The Autonomous Foundation (Current Release) — Now COMPLETE
**** TODO v1.0.0 (Phase 2.5): The Verified Wrapper (SOTA Parity) — Now v1.0.0
**** TODO v2.0.0 (Phase 3): Cannibalizing the Toolchain — Now v2.0.0
**** TODO v3.0.0 (Phase 4): True Symbolic Determinism — Now v3.0.0
*** PHASE: FOUNDATION (Complete) *** PHASE: FOUNDATION (Complete)
**** DONE Draft Swank/Socket communication protocol between CL and Emacs **** DONE Draft Swank/Socket communication protocol between CL and Emacs
@@ -111,9 +471,9 @@ Elevating the user interface from raw shell piping to a high-fidelity, native Li
*** PHASE: THE SOVEREIGN BOUNDARY (Core vs Skills Refactor) *** PHASE: THE SOVEREIGN BOUNDARY (Core vs Skills Refactor)
:PROPERTIES: :PROPERTIES:
:ID: proj-sovereign-boundary :ID: proj-autonomous-boundary
:END: :END:
Slim down the org-agent microharness by moving non-essential cognitive functions to hot-reloadable user-space skills. Slim down the opencortex microharness by moving non-essential cognitive functions to hot-reloadable user-space skills.
**** DONE Extract LLM Provider Routing to a Skill (neuro.lisp) **** DONE Extract LLM Provider Routing to a Skill (neuro.lisp)
**** DONE Extract Vector Embedding Algorithms to a Skill (embedding.lisp) **** DONE Extract Vector Embedding Algorithms to a Skill (embedding.lisp)
@@ -157,7 +517,7 @@ Slim down the org-agent microharness by moving non-essential cognitive functions
CLOSED: [2026-04-12 Sun 19:15] CLOSED: [2026-04-12 Sun 19:15]
**** DONE Feature: Implement Latent Reflection (Proactive Gardening) using heartbeat idle cycles **** DONE Feature: Implement Latent Reflection (Proactive Gardening) using heartbeat idle cycles
CLOSED: [2026-04-12 Sun 19:15] CLOSED: [2026-04-12 Sun 19:15]
**** DONE Simplification: Refactor Cognitive Loop into a Unified Reactive Signal Pipeline **** DONE Simplification: Refactor Cognitive Cycle into a Unified Reactive Signal Pipeline
CLOSED: [2026-04-12 Sun 19:15] CLOSED: [2026-04-12 Sun 19:15]
**** DONE Resilience: Implement Micro-Rollbacks for the Immune System **** DONE Resilience: Implement Micro-Rollbacks for the Immune System
CLOSED: [2026-04-12 Sun 19:15] CLOSED: [2026-04-12 Sun 19:15]
@@ -187,19 +547,29 @@ Slim down the org-agent microharness by moving non-essential cognitive functions
- Implemented Task Integrity (GTD semantics) in symbolic.lisp. - Implemented Task Integrity (GTD semantics) in symbolic.lisp.
- Integrated Consensus Gate and Delegation hooks in core.lisp. - Integrated Consensus Gate and Delegation hooks in core.lisp.
- Verified with new task-orchestrator-tests.lisp. - Verified with new task-orchestrator-tests.lisp.
**** IN-PROGRESS Full review of org-agent's harness **** DONE Implement Unified Envelope Architecture & Channel-Awareness
CLOSED: [2026-04-20 Mon 13:20]
- Removed specialized :CHAT type; reverted to semantic :REQUEST/:EVENT protocol.
- Decoupled routing metadata into a :META envelope (SOURCE, SESSION-ID).
- Updated TUI, Emacs, and CLI gateways to use the unified protocol.
- Verified end-to-end loop with TUI; kernel correctly routes responses back to origin interface.
- Achieved "Equality of Clients" mandate.
**** IN-PROGRESS Full review of opencortex's harness
:PROPERTIES: :PROPERTIES:
:CREATED: [2026-04-13 Mon 13:30] :CREATED: [2026-04-13 Mon 13:30]
:ASSIGNED: Agent :ASSIGNED: Agent
:END: :END:
- [X] Audit terminology: Replaced OACP with "communication protocol" workspace-wide. - [X] Audit terminology: Replaced OACP with "communication protocol" workspace-wide.
- [X] Audit boot sequence: Synchronized loader with `org-skill-policy.org`. - [X] Audit boot sequence: Synchronized loader with `org-skill-policy.org`.
- [X] Implement Unified Envelope (Channel-Aware Routing).
- [-] Audit core Perceive-Think-Act loop. - [-] Audit core Perceive-Think-Act loop.
- [X] Verified protocol framing and reader jailing (`*read-eval* nil`). - [X] Verified protocol framing and reader jailing (`*read-eval* nil`).
- [X] Refactored `loop.org` for literate granularity and configuration externalization. - [X] Refactored `loop.org` for literate granularity and configuration externalization.
- [X] Improved error handling (restricted rollback) and added graceful shutdown. - [X] Improved error handling (restricted rollback) and added graceful shutdown.
- [X] **GAP:** Missing symbolic guard check in `act-gate` (Stage 3: Act). - [X] **FIXED:** Implemented symbolic guard check in `act-gate` via Bouncer skill refactoring.
- [ ] Ensure alignment with System Policy and Engineering Standards. - [X] **FIXED:** Harness `deterministic-verify` now correctly respects skill triggers.
- [X] Ensure alignment with System Policy and Engineering Standards.
- [X] Restored structural integrity by fixing `manifest.org` loading sequence.
**** TODO Wake up the Scribe (Implement autonomous weekly Journal-to-Ledger distillation in org-skill-scribe.org) **** TODO Wake up the Scribe (Implement autonomous weekly Journal-to-Ledger distillation in org-skill-scribe.org)
**** TODO Implement `org-skill-lisp-repair` (Self-correcting syntax gate for Deterministic Engine) **** TODO Implement `org-skill-lisp-repair` (Self-correcting syntax gate for Deterministic Engine)
CLOSED: [2026-04-11 Sat 15:10] CLOSED: [2026-04-11 Sat 15:10]
@@ -254,6 +624,55 @@ Slim down the org-agent microharness by moving non-essential cognitive functions
- Updated codebase-wide terminology to use Probabilistic/Deterministic Engines. - Updated codebase-wide terminology to use Probabilistic/Deterministic Engines.
- Replaced System 1/2 with Probabilistic/Deterministic Engines respectively. - Replaced System 1/2 with Probabilistic/Deterministic Engines respectively.
**** DONE Refactor org-skill-policy.org: Concrete Invariants, Conflict Hierarchy, and Auditable Gate
CLOSED: [2026-04-22 Wed 11:50]
:PROPERTIES:
:ID: policy-refactor-concrete-invariants
:END:
- Added explicit Override Hierarchy (Transparency > Autonomy > Bloat > Mentorship > Sustainability).
- Implemented `policy-check-transparency`: blocks user-facing actions without :explanation.
- Implemented `policy-check-autonomy`: flags proprietary domain references as autonomy debt.
- Implemented `policy-check-bloat`: warns on :create-skill actions exceeding size threshold.
- Implemented `policy-check-mentorship`: blocks high-impact actions missing :mentorship-note.
- Implemented `policy-check-sustainability`: logs cloud-provider usage as sustainability debt.
- Implemented `policy-explain`: formats auditable rationale for every policy decision.
- Implemented `policy-find-engineering-standards-gate`: robust cross-package search for standards skill.
- Hardened `policy-deterministic-gate`: never returns NIL silently; always returns action or auditable log.
- Raised skill priority from 100 to 500 to ensure it runs before other deterministic gates.
**** DONE Add Invariant 6 (Modularity) and Harness Boundary Contract to Policy/Manifest
CLOSED: [2026-04-22 Wed 12:10]
:PROPERTIES:
:ID: policy-modularity-invariant
:END:
- Added Modularity as Invariant 6 in `org-skill-policy.org`: general life principle that complexity must live at the edges.
- Implemented `policy-check-modularity`: blocks modifications to protected core paths unless `:modularity-justification` is provided.
- Defined `*modularity-protected-paths*` as project-configurable variable (defaults: harness/, opencortex.asd).
- Updated Override Hierarchy to include Modularity between Bloat and Mentorship.
- Added Harness Boundary Contract section to `harness/manifest.org` documenting primary boundary files and generated artifacts.
- Converted checkbox sub-tasks to hierarchical TODO headlines in gtd.org per GTD standard.
**** DONE Implement `org-skill-lisp-validator` (3-phase deterministic validation gate)
CLOSED: [2026-04-22 Wed 12:30]
:PROPERTIES:
:ID: lisp-validator-implementation
:END:
- Created 3-phase validation pipeline: Structural (O(n) paren scanner), Syntactic (reader with *read-eval* nil), Semantic (whitelist AST walk).
- Implemented `lisp-validator-validate` returning structured plists for machine parsing.
- Exposed `:validate-lisp` cognitive tool for Probabilistic Engine self-correction.
- Replaced `validate-lisp-syntax` in `harness/skills.org` with delegation to the validator.
- Added mandatory validation rule to Probabilistic Engine system prompt in `harness/reason.org`.
- Fixed paren balance and `return-from` compilation errors in org source; tangled and validated in SBCL.
**** DONE Fix Skill Loader to Respect `:tangle` Blocks and Eliminate Circular Dependency
CLOSED: [2026-04-22 Wed 12:45]
:PROPERTIES:
:ID: skill-loader-tangle-fix
:END:
- Updated `load-skill-from-org` in `harness/skills.org` to only collect blocks with `:tangle` directives pointing to runtime `.lisp` files, excluding `tests/` and `test/` paths.
- Added fallback to `validate-lisp-syntax` so it uses a basic reader check when `lisp-validator-validate` is not yet loaded (breaks circular harness->skill dependency).
- Verified full boot: 13/13 skills loaded successfully into SBCL, including `skill-lisp-validator` at priority 900 and `skill-policy` at priority 500.
*** TRACK: SECURITY & CONTAINMENT (The 5-Vector Bouncer Matrix) *** TRACK: SECURITY & CONTAINMENT (The 5-Vector Bouncer Matrix)
**** DONE Implement Path-Based Scoping for File Writes (DNA/State vs Work) **** DONE Implement Path-Based Scoping for File Writes (DNA/State vs Work)
CLOSED: [2026-04-12 Sun 15:15] CLOSED: [2026-04-12 Sun 15:15]
@@ -278,7 +697,7 @@ Slim down the org-agent microharness by moving non-essential cognitive functions
- Added unit tests for each provider in `llm-gateway-tests.lisp`. - Added unit tests for each provider in `llm-gateway-tests.lisp`.
- Mocked `dex:post` to verify JSON payload formatting and response parsing. - Mocked `dex:post` to verify JSON payload formatting and response parsing.
- Implemented robust `get-nested` helper to handle various provider structures. - Implemented robust `get-nested` helper to handle various provider structures.
- Integrated `llm-gateway` and `credentials-vault` into `org-agent.asd`. - Integrated `llm-gateway` and `credentials-vault` into `opencortex.asd`.
**** TODO Verify org-skill-shell-actuator formal safety harnesses **** TODO Verify org-skill-shell-actuator formal safety harnesses
**** DONE Build Playwright-Python Bridge for high-fidelity browsing **** DONE Build Playwright-Python Bridge for high-fidelity browsing
CLOSED: [2026-04-11 Sat 18:30] CLOSED: [2026-04-11 Sat 18:30]
@@ -343,11 +762,11 @@ Slim down the org-agent microharness by moving non-essential cognitive functions
:ID: monthly-infra-audit :ID: monthly-infra-audit
:REPEAT_TO_STATE: TODO :REPEAT_TO_STATE: TODO
:END: :END:
- [ ] Check for new Debian security patches (`apt-get update` check). ***** TODO Check for new Debian security patches (`apt-get update` check)
- [ ] Check for new `signal-cli` releases (compare vs v0.14.0). ***** TODO Check for new `signal-cli` releases (compare vs v0.14.0)
- [ ] Check for new Quicklisp distribution (monthly snapshot). ***** TODO Check for new Quicklisp distribution (monthly snapshot)
- [ ] **Verification:** Update `Dockerfile`, run `docker-compose build --no-cache`, and execute full test suite. ***** TODO Verification: Update `Dockerfile`, run `docker-compose build --no-cache`, and execute full test suite
- [ ] If all tests pass, commit updated `Dockerfile` and `.asd` dependencies. ***** TODO If all tests pass, commit updated `Dockerfile` and `.asd` dependencies
*** TRACK: COMMUNITY & DOCS *** TRACK: COMMUNITY & DOCS
**** TODO Write Quickstart Guide **** TODO Write Quickstart Guide
@@ -621,7 +1040,7 @@ Institutionalizing the virtual software house operating system.
- State "DONE" from "NEXT" [2026-03-22 Sun 15:45] - State "DONE" from "NEXT" [2026-03-22 Sun 15:45]
:END: :END:
*** DONE Apply Engineering Loop to `org-agent` Phase 1 (Core Loop) *** DONE Apply Engineering Loop to `opencortex` Phase 1 (Core Loop)
:PROPERTIES: :PROPERTIES:
:CREATED: [2026-03-22 Sun 15:30] :CREATED: [2026-03-22 Sun 15:30]
:ASSIGNED: Technical Analyst :ASSIGNED: Technical Analyst
@@ -789,8 +1208,8 @@ Defining and maintaining high-integrity KM and GTD workflows.
:END: :END:
Detected ~1,300 entries missing the `:CREATED:` property during the Engineering Phase E (Chaos) audit. Detected ~1,300 entries missing the `:CREATED:` property during the Engineering Phase E (Chaos) audit.
- [ ] Implement inference logic to restore historical timestamps (via Git or context). **** TODO Implement inference logic to restore historical timestamps (via Git or context)
- [ ] Batch repair `inbox-emacs.org`, `inbox-atoms.org`, and `inbox-posts.org`. **** TODO Batch repair `inbox-emacs.org`, `inbox-atoms.org`, and `inbox-posts.org`
** Agora Gap Verification ** Agora Gap Verification
:PROPERTIES: :PROPERTIES:
@@ -1092,9 +1511,8 @@ A modular manual of different areas to go with different activities. Fits in the
** Architecture Astronaut Archive ** Architecture Astronaut Archive
*** TODO Implement Privacy-Aware Background Indexer (Local hashes for @personal, Semantic for others) *** TODO Implement Privacy-Aware Background Indexer (Local hashes for @personal, Semantic for others)
*** TODO Decouple Transport from Protocol (True Actuator-Agnosticism in communication.lisp)
*** TODO Implement communication protocol Backpressure Handling (Queue bounds and BUSY frames in communication.lisp) *** TODO Implement communication protocol Backpressure Handling (Queue bounds and BUSY frames in communication.lisp)
*** TODO Implement Cognitive Loop "Rut" Recovery (Dynamic Escalation in org-skill-lisp-validator) *** TODO Implement Cognitive Cycle "Rut" Recovery (Dynamic Escalation in org-skill-lisp-validator)
*** TODO Implement Asynchronous Event Bus for Telemetry (core.lisp) *** TODO Implement Asynchronous Event Bus for Telemetry (core.lisp)
*** TODO Implement Memory Eviction and Lazy Loading (LRU Cache in memory.lisp) *** TODO Implement Memory Eviction and Lazy Loading (LRU Cache in memory.lisp)
*** TODO Implement Two-Speed Reflection (Immediate :post-action + Latent Heartbeat) *** TODO Implement Two-Speed Reflection (Immediate :post-action + Latent Heartbeat)
@@ -1102,7 +1520,7 @@ A modular manual of different areas to go with different activities. Fits in the
*** TODO Implement Intent-Shift Detector (Semantic topic-shift flagging in neuro.lisp) *** TODO Implement Intent-Shift Detector (Semantic topic-shift flagging in neuro.lisp)
*** TODO Implement Cognitive Economics (Dynamic LLM routing based on 2x2 matrix complexity) *** TODO Implement Cognitive Economics (Dynamic LLM routing based on 2x2 matrix complexity)
*** TODO Implement Micro-Prolog Logic Engine (Lisp-native unification & pattern matching for Memory) *** TODO Implement Micro-Prolog Logic Engine (Lisp-native unification & pattern matching for Memory)
*** TODO Implement Sovereign Logic Synthesis (Hybrid SubSys2: Neural pattern detection + Symbolic rule generation) *** TODO Implement Autonomous Logic Synthesis (Hybrid SubSys2: Neural pattern detection + Symbolic rule generation)
*** TODO Implement Continuous Vibe (Sentiment-weighted personality in system-prompt) *** TODO Implement Continuous Vibe (Sentiment-weighted personality in system-prompt)
*** TODO Implement Search-Before-Think Bridge (Autonomous target-id population via vector search in perceive-gate) *** TODO Implement Search-Before-Think Bridge (Autonomous target-id population via vector search in perceive-gate)
*** TODO Implement Belief Revision & Reconciliation (Audit deltas for contradictions in scribe-engine.lisp) *** TODO Implement Belief Revision & Reconciliation (Audit deltas for contradictions in scribe-engine.lisp)

View File

@@ -13664,7 +13664,7 @@ CLOSED: [2026-04-04 Sat 17:36]
The Proxmox Migration: Move the agent from the low-power machine into a dedicated LXC container on the new rack. The Proxmox Migration: Move the agent from the low-power machine into a dedicated LXC container on the new rack.
** Phase III: The org-agent Microkernel (The "Native" Phase) ** Phase III: The opencortex Microkernel (The "Native" Phase)
Hollowing out the modern tools in favor of Lisp. Hollowing out the modern tools in favor of Lisp.
The Lisp Transition: Replace OpenClaws Python logic with your minimalist Common Lisp heartbeat. The Lisp Transition: Replace OpenClaws Python logic with your minimalist Common Lisp heartbeat.
@@ -13942,7 +13942,7 @@ Server Rack Assembly: Build the 4080/4040 aluminum skeleton.
Local AI Capability: Install the RTX 6000 Pros. Move from remote APIs to local inference using Ollama/vLLM (DeepSeek-R1 / Qwen3-Coder). Local AI Capability: Install the RTX 6000 Pros. Move from remote APIs to local inference using Ollama/vLLM (DeepSeek-R1 / Qwen3-Coder).
The Proxmox Migration: Move the agent from the low-power machine into a dedicated LXC container on the new rack. The Proxmox Migration: Move the agent from the low-power machine into a dedicated LXC container on the new rack.
***** Phase III: The org-agent Microkernel (The "Native" Phase) ***** Phase III: The opencortex Microkernel (The "Native" Phase)
:PROPERTIES: :PROPERTIES:
:CREATED: [2026-03-20 Fri 08:20] :CREATED: [2026-03-20 Fri 08:20]
:END: :END:
@@ -13956,16 +13956,16 @@ The final evolution into a self-hosted Lisp Machine.
The FPGA Sidecar: Activate the hardware-level "Thalamus" to verify Lisp forms. The FPGA Sidecar: Activate the hardware-level "Thalamus" to verify Lisp forms.
Unikernel/Bare Metal: Bootstrap Sol out of the Linux environment and directly onto the hardware, where the Org-mode tree and the Lisp Heap become the operating system. Unikernel/Bare Metal: Bootstrap Sol out of the Linux environment and directly onto the hardware, where the Org-mode tree and the Lisp Heap become the operating system.
***** Org-agent ***** OpenCortex
:PROPERTIES: :PROPERTIES:
:CREATED: [2026-03-20 Fri 08:00] :CREATED: [2026-03-20 Fri 08:00]
:END: :END:
By formalizing this, you are effectively designing the blueprint for Sol. By formalizing this, you are effectively designing the blueprint for Sol.
To answer your biggest question first: No, org-agent will not replace OpenCode or the Claude Agent SDK—it will act as their orchestrator and wrapper. Tools like OpenCode (which focuses on terminal-based, plan-first coding with AGENTS.md) and the Claude Agent SDK (which provides programmatic access to Anthropic's tool-calling and multi-agent teams) are phenomenal execution engines. However, they are built around Markdown, JSON, and Python/TypeScript ecosystems. To answer your biggest question first: No, opencortex will not replace OpenCode or the Claude Agent SDK—it will act as their orchestrator and wrapper. Tools like OpenCode (which focuses on terminal-based, plan-first coding with AGENTS.md) and the Claude Agent SDK (which provides programmatic access to Anthropic's tool-calling and multi-agent teams) are phenomenal execution engines. However, they are built around Markdown, JSON, and Python/TypeScript ecosystems.
org-agent replaces their management layer. Instead of letting OpenCode or Claude dictate your workflow, org-agent sits above them. When org-agent decides a complex coding task is required, it simply invokes OpenCode or a Claude subagent via a CLI or API call, passing along a compiled .org file as context. opencortex replaces their management layer. Instead of letting OpenCode or Claude dictate your workflow, opencortex sits above them. When opencortex decides a complex coding task is required, it simply invokes OpenCode or a Claude subagent via a CLI or API call, passing along a compiled .org file as context.
Here is the developer brief for building the system. Here is the developer brief for building the system.
Project Brief: org-agent Project Brief: opencortex
Mission: Build a hyper-minimalist, self-editing, proactive AI agent framework in Common Lisp. The system must use Org-mode as its exclusive interface for memory, state, and skill configuration, rejecting Markdown and JSON overhead. Mission: Build a hyper-minimalist, self-editing, proactive AI agent framework in Common Lisp. The system must use Org-mode as its exclusive interface for memory, state, and skill configuration, rejecting Markdown and JSON overhead.
Target Environment: A Linux/Proxmox homelab, running local inference servers, heavily utilizing GitOps and Lisp-based development. Target Environment: A Linux/Proxmox homelab, running local inference servers, heavily utilizing GitOps and Lisp-based development.
1. Core Architecture (The Lisp Microkernel) 1. Core Architecture (The Lisp Microkernel)
@@ -13979,18 +13979,18 @@ Instead of relying on SKILL.md or OpenCode's AGENTS.md, all capabilities are def
* Dynamic Loading: The agent reads these files on boot. If the agent generates a new .org file via an LLM output, it instantly acquires that new skill on the next heartbeat. * Dynamic Loading: The agent reads these files on boot. If the agent generates a new .org file via an LLM output, it instantly acquires that new skill on the next heartbeat.
* Progressive Disclosure: To save token context, the agent only loads the #+DESCRIPTION of a skill initially. It must explicitly request the full #+BEGIN_SRC implementation if it decides to use it. * Progressive Disclosure: To save token context, the agent only loads the #+DESCRIPTION of a skill initially. It must explicitly request the full #+BEGIN_SRC implementation if it decides to use it.
3. LLMs and Coding Agents as "Effectors" 3. LLMs and Coding Agents as "Effectors"
org-agent treats AI models and external SDKs exactly like it treats a Proxmox server—as a downstream tool to be managed. opencortex treats AI models and external SDKs exactly like it treats a Proxmox server—as a downstream tool to be managed.
| External Tool | How org-agent Uses It | Trade-off | | External Tool | How opencortex Uses It | Trade-off |
|------------------------+-----------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------| |------------------------+-----------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------|
| Local Inference (vLLM) | A base skill (llm-local.org) containing an HTTP POST request to your RTX 6000 cluster for fast, cheap, private reasoning. | Requires manual mapping of Lisp s-expressions to the local model's API. | | Local Inference (vLLM) | A base skill (llm-local.org) containing an HTTP POST request to your RTX 6000 cluster for fast, cheap, private reasoning. | Requires manual mapping of Lisp s-expressions to the local model's API. |
| OpenCode | A wrapper skill (skill-opencode.org) that triggers the opencode CLI to execute a massive refactoring job, returning the git diff to org-agent. | Abandons OpenCode's native TUI in favor of headless execution. | | OpenCode | A wrapper skill (skill-opencode.org) that triggers the opencode CLI to execute a massive refactoring job, returning the git diff to opencortex. | Abandons OpenCode's native TUI in favor of headless execution. |
| Claude Agent SDK | A wrapper skill that triggers a Python script leveraging Anthropic's SDK to spin up a multi-agent "Team" for deep architectural planning. | Costs external API tokens; requires Python alongside Lisp. | | Claude Agent SDK | A wrapper skill that triggers a Python script leveraging Anthropic's SDK to spin up a multi-agent "Team" for deep architectural planning. | Costs external API tokens; requires Python alongside Lisp. |
4. Security & Isolation 4. Security & Isolation
Because org-agent runs directly on the host machine to manage Proxmox and GitOps, security is handled via strict allow-lists within the Lisp kernel. Because opencortex runs directly on the host machine to manage Proxmox and GitOps, security is handled via strict allow-lists within the Lisp kernel.
* The LLM backend is instructed to output strictly formatted Lisp s-expressions (e.g., (invoke-skill "proxmox" "restart-staging")). * The LLM backend is instructed to output strictly formatted Lisp s-expressions (e.g., (invoke-skill "proxmox" "restart-staging")).
* The Lisp Executor will only evaluate forms where the car (the function name) matches a predefined, safe whitelist. * The Lisp Executor will only evaluate forms where the car (the function name) matches a predefined, safe whitelist.
The Verdict on the Workflow The Verdict on the Workflow
By building org-agent, you are creating a system where your daily GTD notes, your infrastructure commands, and your AI's source code all share the exact same syntax. It is the ultimate manifestation of "Code is Data." By building opencortex, you are creating a system where your daily GTD notes, your infrastructure commands, and your AI's source code all share the exact same syntax. It is the ultimate manifestation of "Code is Data."
Would you like me to draft the Lisp parser function that reads an .org skill file and translates its #+NAME and #+BEGIN_SRC blocks into callable Lisp functions for the agent's whitelist? Would you like me to draft the Lisp parser function that reads an .org skill file and translates its #+NAME and #+BEGIN_SRC blocks into callable Lisp functions for the agent's whitelist?
***** Agora ***** Agora
@@ -15109,4 +15109,132 @@ CLOSED: [2026-04-04 Sat 17:39]
:ARCHIVE_CATEGORY: wip-block-goose-an-open-source-extensible-AI-agent-2026-04-04-17-39-47-wLfQw5 :ARCHIVE_CATEGORY: wip-block-goose-an-open-source-extensible-AI-agent-2026-04-04-17-39-47-wLfQw5
:ARCHIVE_TODO: DONE :ARCHIVE_TODO: DONE
:END: :END:
*** 2026-04-14 Tuesday
**** DONE [[https://torath.gov.eg/books/bookAuthority/books-listing?seriesName=%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%20%D8%A7%D9%84%D9%85%D8%B5%D8%B1%D9%8A%D9%8A%D9%86&page=1][تاريخ المصريين - الهيئة المصرية العامة للكتاب - تراث مصر الرقمي]]
CLOSED: [2026-04-14 Tue 11:47]
:PROPERTIES:
:TITLE: تاريخ المصريين - الهيئة المصرية العامة للكتاب - تراث مصر الرقمي
:URI: https://torath.gov.eg/books/bookAuthority/books-listing?seriesName=%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%20%D8%A7%D9%84%D9%85%D8%B5%D8%B1%D9%8A%D9%8A%D9%86&page=1
:CREATED: [2026-04-14 Tue 11:14]
:ID: تاريخ-المصريين-الهيئة-المصرية-العامة-للكتاب-تراث-2026-04-14-11-47-42
:ORG_GTD: Reference
:ARCHIVE_TIME: 2026-04-14 Tue 11:47
:ARCHIVE_FILE: /tmp/org-gtd/wip-تاريخ-المصريين-الهيئة-المصرية-العامة-للكتاب-تراث-2026-04-14-11-47-42-B4uIxI.org
:ARCHIVE_CATEGORY: wip-تاريخ-المصريين-الهيئة-المصرية-العامة-للكتاب-تراث-2026-04-14-11-47-42-B4uIxI
:ARCHIVE_TODO: DONE
:END:
**** DONE [[https://www.arsheef.org/digitized-collections][Digitized Collections — arsheef]]
CLOSED: [2026-04-14 Tue 11:47]
:PROPERTIES:
:TITLE: Digitized Collections — arsheef
:URI: https://www.arsheef.org/digitized-collections
:CREATED: [2026-04-14 Tue 11:02]
:ID: Digitized-Collections-arsheef-2026-04-14-11-47-49
:ORG_GTD: Reference
:ARCHIVE_TIME: 2026-04-14 Tue 11:47
:ARCHIVE_FILE: /tmp/org-gtd/wip-Digitized-Collections-arsheef-2026-04-14-11-47-49-yc2uyh.org
:ARCHIVE_CATEGORY: wip-Digitized-Collections-arsheef-2026-04-14-11-47-49-yc2uyh
:ARCHIVE_TODO: DONE
:END:
**** DONE [[https://archive.org/search?query=%D9%83%D8%AA%D8%A7%D8%A8+%D8%A7%D9%84%D9%87%D9%84%D8%A7%D9%84][Internet Archive: Digital Library of Free & Borrowable Texts, Movies, Music & Wayback Machine]]
CLOSED: [2026-04-14 Tue 11:47]
:PROPERTIES:
:TITLE: Internet Archive: Digital Library of Free & Borrowable Texts, Movies, Music & Wayback Machine
:URI: https://archive.org/search?query=%D9%83%D8%AA%D8%A7%D8%A8+%D8%A7%D9%84%D9%87%D9%84%D8%A7%D9%84
:CREATED: [2026-04-14 Tue 11:02]
:ID: Internet-Archive-Digital-Library-of-Free-and-2026-04-14-11-47-54
:ORG_GTD: Reference
:ARCHIVE_TIME: 2026-04-14 Tue 11:47
:ARCHIVE_FILE: /tmp/org-gtd/wip-Internet-Archive-Digital-Library-of-Free-and-2026-04-14-11-47-54-Z0t1BU.org
:ARCHIVE_CATEGORY: wip-Internet-Archive-Digital-Library-of-Free-and-2026-04-14-11-47-54-Z0t1BU
:ARCHIVE_TODO: DONE
:END:
A complete archive of كتاب الهلال.
**** DONE [[https://community.home-assistant.io/t/new-weather-radar-card/417635][New Weather Radar Card - Share your Projects! / Dashboards & Frontend - Home Assistant Community]]
CLOSED: [2026-04-14 Tue 11:48]
:PROPERTIES:
:TITLE: New Weather Radar Card - Share your Projects! / Dashboards & Frontend - Home Assistant Community
:URI: https://community.home-assistant.io/t/new-weather-radar-card/417635
:CREATED: [2026-04-14 Tue 11:11]
:ID: New-Weather-Radar-Card-Share-your-Projects-2026-04-14-11-47-57
:ORG_GTD: Reference
:ARCHIVE_TIME: 2026-04-14 Tue 11:48
:ARCHIVE_FILE: /tmp/org-gtd/wip-New-Weather-Radar-Card-Share-your-Projects-2026-04-14-11-47-57-IY5m4O.org
:ARCHIVE_CATEGORY: wip-New-Weather-Radar-Card-Share-your-Projects-2026-04-14-11-47-57-IY5m4O
:ARCHIVE_TODO: DONE
:END:
**** DONE [[https://community.home-assistant.io/t/music-assistant-player-card-control-your-players-adjust-transfer-and-join-queues-and-browse-your-media/929266][Music Assistant Player Card - Control your players, adjust, transfer, and join queues, and browse your media! - Share your Projects! / Dashboards & Frontend - Home Assistant Community]]
CLOSED: [2026-04-14 Tue 11:48]
:PROPERTIES:
:TITLE: Music Assistant Player Card - Control your players, adjust, transfer, and join queues, and browse your media! - Share your Projects! / Dashboards & Frontend - Home Assistant Community
:URI: https://community.home-assistant.io/t/music-assistant-player-card-control-your-players-adjust-transfer-and-join-queues-and-browse-your-media/929266
:CREATED: [2026-04-14 Tue 11:11]
:ID: Music-Assistant-Player-Card-Control-your-players-2026-04-14-11-48-11
:ORG_GTD: Reference
:ARCHIVE_TIME: 2026-04-14 Tue 11:48
:ARCHIVE_FILE: /tmp/org-gtd/wip-Music-Assistant-Player-Card-Control-your-players-2026-04-14-11-48-11-k7UVfa.org
:ARCHIVE_CATEGORY: wip-Music-Assistant-Player-Card-Control-your-players-2026-04-14-11-48-11-k7UVfa
:ARCHIVE_TODO: DONE
:END:
**** DONE [[https://github.com/nimroddolev/chime_tts][nimroddolev/chime_tts: A custom Home Assistant integration to play combined audio files before and/or after text-to-speech (TTS) messages]]
CLOSED: [2026-04-14 Tue 11:49]
:PROPERTIES:
:TITLE: nimroddolev/chime_tts: A custom Home Assistant integration to play combined audio files before and/or after text-to-speech (TTS) messages
:URI: https://github.com/nimroddolev/chime_tts
:CREATED: [2026-04-14 Tue 11:11]
:ID: nimroddolev-chime-tts-A-custom-Home-Assistant-2026-04-14-11-49-05
:ORG_GTD: Reference
:ARCHIVE_TIME: 2026-04-14 Tue 11:49
:ARCHIVE_FILE: /tmp/org-gtd/wip-nimroddolev-chime-tts-A-custom-Home-Assistant-2026-04-14-11-49-05-je5UGn.org
:ARCHIVE_CATEGORY: wip-nimroddolev-chime-tts-A-custom-Home-Assistant-2026-04-14-11-49-05-je5UGn
:ARCHIVE_TODO: DONE
:END:
**** DONE [[https://github.com/Clooos/bubble-card][Clooos/Bubble-Card: Bubble Card is a minimalist card collection for Home Assistant with a nice pop-up touch.]]
CLOSED: [2026-04-14 Tue 11:49]
:PROPERTIES:
:TITLE: Clooos/Bubble-Card: Bubble Card is a minimalist card collection for Home Assistant with a nice pop-up touch.
:URI: https://github.com/Clooos/bubble-card
:CREATED: [2026-04-14 Tue 11:11]
:ID: Clooos-Bubble-Card-Bubble-Card-is-a-minimalist-2026-04-14-11-49-19
:ORG_GTD: Reference
:ARCHIVE_TIME: 2026-04-14 Tue 11:49
:ARCHIVE_FILE: /tmp/org-gtd/wip-Clooos-Bubble-Card-Bubble-Card-is-a-minimalist-2026-04-14-11-49-19-AGBrix.org
:ARCHIVE_CATEGORY: wip-Clooos-Bubble-Card-Bubble-Card-is-a-minimalist-2026-04-14-11-49-19-AGBrix
:ARCHIVE_TODO: DONE
:END:
**** DONE [[https://github.com/PRProd/HA-Firemote][PRProd/HA-Firemote: Apple TV, Amazon Fire TV, Chromecast, Homatics, NVIDIA Shield, onn., Roku, Xiaomi Mi, and Android TV remote control card for Home Assistant]]
CLOSED: [2026-04-14 Tue 11:49]
:PROPERTIES:
:TITLE: PRProd/HA-Firemote: Apple TV, Amazon Fire TV, Chromecast, Homatics, NVIDIA Shield, onn., Roku, Xiaomi Mi, and Android TV remote control card for Home Assistant
:URI: https://github.com/PRProd/HA-Firemote
:CREATED: [2026-04-14 Tue 11:12]
:ID: PRProd-HA-Firemote-Apple-TV-Amazon-Fire-TV-2026-04-14-11-49-22
:ORG_GTD: Reference
:ARCHIVE_TIME: 2026-04-14 Tue 11:49
:ARCHIVE_FILE: /tmp/org-gtd/wip-PRProd-HA-Firemote-Apple-TV-Amazon-Fire-TV-2026-04-14-11-49-22-oxZinO.org
:ARCHIVE_CATEGORY: wip-PRProd-HA-Firemote-Apple-TV-Amazon-Fire-TV-2026-04-14-11-49-22-oxZinO
:ARCHIVE_TODO: DONE
:END:
**** DONE [[https://www.mogawdat.com/][Mo Gawdat | AI + Happiness]]
CLOSED: [2026-04-14 Tue 11:49]
:PROPERTIES:
:TITLE: Mo Gawdat | AI + Happiness
:URI: https://www.mogawdat.com/
:CREATED: [2026-04-14 Tue 11:15]
:ID: Mo-Gawdat-AI-plus-Happiness-2026-04-14-11-49-27
:ORG_GTD: Reference
:ARCHIVE_TIME: 2026-04-14 Tue 11:49
:ARCHIVE_FILE: /tmp/org-gtd/wip-Mo-Gawdat-AI-plus-Happiness-2026-04-14-11-49-27-41t26y.org
:ARCHIVE_CATEGORY: wip-Mo-Gawdat-AI-plus-Happiness-2026-04-14-11-49-27-41t26y
:ARCHIVE_TODO: DONE
:END:

309
inbox.org
View File

@@ -2,3 +2,312 @@
#+begin_comment #+begin_comment
This is the inbox. Everything goes in here when you capture it. This is the inbox. Everything goes in here when you capture it.
#+end_comment #+end_comment
* [[https://x.com/michael_chomsky/status/2043369126631207096][Michael on X: "Garry is kinda correct here, but is oversimplifying memory. Harrison (the author of the original article) makes a very good point but also makes memory sound easier than it is. (before reading this article, note that I wrote down my thoughts and then passed it through Claude" / X]]
:PROPERTIES:
:TITLE: Michael on X: "Garry is kinda correct here, but is oversimplifying memory. Harrison (the author of the original article) makes a very good point but also makes memory sound easier than it is. (before reading this article, note that I wrote down my thoughts and then passed it through Claude" / X
:URI: https://x.com/michael_chomsky/status/2043369126631207096
:CREATED: [2026-04-14 Tue 11:17]
:END:
* [[https://x.com/chrysb/status/2043020014035570784][Chrys Bader on X: "Why long-term memory for LLMs remains unsolved" / X]]
:PROPERTIES:
:TITLE: Chrys Bader on X: "Why long-term memory for LLMs remains unsolved" / X
:URI: https://x.com/chrysb/status/2043020014035570784
:CREATED: [2026-04-14 Tue 11:18]
:END:
* [[https://github.com/garrytan/gbrain][garrytan/gbrain: Garry's Opinionated OpenClaw/Hermes Agent Brain]]
:PROPERTIES:
:TITLE: garrytan/gbrain: Garry's Opinionated OpenClaw/Hermes Agent Brain
:URI: https://github.com/garrytan/gbrain
:CREATED: [2026-04-14 Tue 11:18]
:END:
* [[https://github.com/karpathy/autoresearch][karpathy/autoresearch: AI agents running research on single-GPU nanochat training automatically]]
:PROPERTIES:
:TITLE: karpathy/autoresearch: AI agents running research on single-GPU nanochat training automatically
:URI: https://github.com/karpathy/autoresearch
:CREATED: [2026-04-14 Tue 11:18]
:END:
* [[https://x.com/garrytan/status/2042925773300908103][Garry Tan on X: "Thin Harness, Fat Skills" / X]]
:PROPERTIES:
:TITLE: Garry Tan on X: "Thin Harness, Fat Skills" / X
:URI: https://x.com/garrytan/status/2042925773300908103
:CREATED: [2026-04-14 Tue 11:18]
:END:
* [[https://github.com/xdevplatform/xmcp][xdevplatform/xmcp: MCP server for the X API]]
:PROPERTIES:
:TITLE: xdevplatform/xmcp: MCP server for the X API
:URI: https://github.com/xdevplatform/xmcp
:CREATED: [2026-04-14 Tue 11:18]
:END:
* [[https://x.com/WinterArc2125/status/2040828031707570233][Winter on X: "Most people dont realize this: You get 1,500 free daily requests to Gemma 4 31B on @GoogleAIStudio. Thats plenty of free inference (imo). And you can route it into @NousResearch Hermes Agent via Vercels AI Gateway: 1. Create an API key on Google AI Studio 2. Add it under" / X]]
:PROPERTIES:
:TITLE: Winter on X: "Most people dont realize this: You get 1,500 free daily requests to Gemma 4 31B on @GoogleAIStudio. Thats plenty of free inference (imo). And you can route it into @NousResearch Hermes Agent via Vercels AI Gateway: 1. Create an API key on Google AI Studio 2. Add it under" / X
:URI: https://x.com/WinterArc2125/status/2040828031707570233
:CREATED: [2026-04-14 Tue 11:19]
:END:
* [[https://github.com/elebumm/RedditVideoMakerBot][elebumm/RedditVideoMakerBot: Create Reddit Videos with just✨ one command ✨]]
:PROPERTIES:
:TITLE: elebumm/RedditVideoMakerBot: Create Reddit Videos with just✨ one command ✨
:URI: https://github.com/elebumm/RedditVideoMakerBot
:CREATED: [2026-04-14 Tue 11:19]
:END:
* [[https://x.com/PawelHuryn/status/2040519790779900075][Paweł Huryn on X: "After the llama.cpp fix, we can finally use gemma-4 with Claude Code: Step 1: - Windows: winget install llama.cpp - MacOS: brew install llama.cpp More: https://t.co/2Gq2cdl5hy Step 2: - llama-server -hf ggml-org/gemma-4-E2B-it-GGUF (https://t.co/3kxuATDZL6) OR - llama-server https://t.co/NFIrI1wXtH" / X]]
:PROPERTIES:
:TITLE: Paweł Huryn on X: "After the llama.cpp fix, we can finally use gemma-4 with Claude Code: Step 1: - Windows: winget install llama.cpp - MacOS: brew install llama.cpp More: https://t.co/2Gq2cdl5hy Step 2: - llama-server -hf ggml-org/gemma-4-E2B-it-GGUF (https://t.co/3kxuATDZL6) OR - llama-server https://t.co/NFIrI1wXtH" / X
:URI: https://x.com/PawelHuryn/status/2040519790779900075
:CREATED: [2026-04-14 Tue 11:19]
:END:
* [[https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f][llm-wiki · GitHub]]
:PROPERTIES:
:TITLE: llm-wiki · GitHub
:URI: https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f
:CREATED: [2026-04-14 Tue 11:19]
:END:
* [[https://x.com/kevingu/status/2039843234760073341][Kevin Gu on X: "AutoAgent: first open source library for self-optimizing agents" / X]]
:PROPERTIES:
:TITLE: Kevin Gu on X: "AutoAgent: first open source library for self-optimizing agents" / X
:URI: https://x.com/kevingu/status/2039843234760073341
:CREATED: [2026-04-14 Tue 11:20]
:END:
* [[https://github.com/repowise-dev/claude-code-prompts][repowise-dev/claude-code-prompts: Independently authored prompt templates for AI coding agents — system prompts, tool prompts, agent delegation, memory management, and multi-agent coordination. Informed by studying Claude Code.]]
:PROPERTIES:
:TITLE: repowise-dev/claude-code-prompts: Independently authored prompt templates for AI coding agents — system prompts, tool prompts, agent delegation, memory management, and multi-agent coordination. Informed by studying Claude Code.
:URI: https://github.com/repowise-dev/claude-code-prompts
:CREATED: [2026-04-14 Tue 11:20]
:END:
* [[https://x.com/ryancarson/status/2039786704731541903][Ryan Carson on X: "How to turn your OpenClaw into the world's best assistant" / X]]
:PROPERTIES:
:TITLE: Ryan Carson on X: "How to turn your OpenClaw into the world's best assistant" / X
:URI: https://x.com/ryancarson/status/2039786704731541903
:CREATED: [2026-04-14 Tue 11:20]
:END:
* [[https://vitalik.eth.limo/general/2026/04/02/secure_llms.html][My self-sovereign / local / private / secure LLM setup, April 2026]]
:PROPERTIES:
:TITLE: My self-sovereign / local / private / secure LLM setup, April 2026
:URI: https://vitalik.eth.limo/general/2026/04/02/secure_llms.html
:CREATED: [2026-04-14 Tue 11:20]
:END:
* [[https://x.com/TheAhmadOsman/status/2040103488714068245][Ahmad on X: "GPU Memory Math for LLMs (2026 Edition)" / X]]
:PROPERTIES:
:TITLE: Ahmad on X: "GPU Memory Math for LLMs (2026 Edition)" / X
:URI: https://x.com/TheAhmadOsman/status/2040103488714068245
:CREATED: [2026-04-14 Tue 11:20]
:END:
* [[https://x.com/gauri__gupta/status/2040251170099524025][Gauri Gupta on X: "auto-harness: Self improving agentic systems with auto-evals (open-sourced !)" / X]]
:PROPERTIES:
:TITLE: Gauri Gupta on X: "auto-harness: Self improving agentic systems with auto-evals (open-sourced !)" / X
:URI: https://x.com/gauri__gupta/status/2040251170099524025
:CREATED: [2026-04-14 Tue 11:21]
:END:
* [[https://x.com/PromptLLM/status/2040478865949139014][Prompter on X: "CURE procrastination by gamifying your life with AI (prompt included)" / X]]
:PROPERTIES:
:TITLE: Prompter on X: "CURE procrastination by gamifying your life with AI (prompt included)" / X
:URI: https://x.com/PromptLLM/status/2040478865949139014
:CREATED: [2026-04-14 Tue 11:21]
:END:
* [[https://x.com/chrysb/status/2043020014035570784][Chrys Bader on X: "Why long-term memory for LLMs remains unsolved" / X]]
:PROPERTIES:
:TITLE: Chrys Bader on X: "Why long-term memory for LLMs remains unsolved" / X
:URI: https://x.com/chrysb/status/2043020014035570784
:CREATED: [2026-04-14 Tue 11:21]
:END:
* [[https://github.com/ValueCell-ai/ClawX][ValueCell-ai/ClawX: ClawX is a desktop app that provides a graphical interface for OpenClaw AI agents. It turns CLI-based AI orchestration into a desktop experience without using the terminal. China website is https://clawx.com.cn.]]
:PROPERTIES:
:TITLE: ValueCell-ai/ClawX: ClawX is a desktop app that provides a graphical interface for OpenClaw AI agents. It turns CLI-based AI orchestration into a desktop experience without using the terminal. China website is https://clawx.com.cn.
:URI: https://github.com/ValueCell-ai/ClawX
:CREATED: [2026-04-16 Thu 16:33]
:END:
* [[https://github.com/sgoudelis/ground-station][sgoudelis/ground-station: Ground Station is all-in-one satellite monitoring suite]]
:PROPERTIES:
:TITLE: sgoudelis/ground-station: Ground Station is all-in-one satellite monitoring suite
:URI: https://github.com/sgoudelis/ground-station
:CREATED: [2026-04-17 Fri 14:52]
:END:
* [[https://platform.minimax.io/docs/guides/pricing-token-plan][Token Plan - MiniMax API Docs]]
:PROPERTIES:
:TITLE: Token Plan - MiniMax API Docs
:URI: https://platform.minimax.io/docs/guides/pricing-token-plan
:CREATED: [2026-04-17 Fri 14:52]
:END:
* [[https://github.com/siddsachar/Thoth][siddsachar/Thoth: Thoth - Personal AI Sovereignty. A local-first AI assistant with integrated tools, a personal knowledge graph, voice, vision, shell, browser automation, scheduled tasks, health tracking, and messaging channels. Run locally via Ollama or add opt-in cloud models. Your data stays on your machine.]]
:PROPERTIES:
:TITLE: siddsachar/Thoth: Thoth - Personal AI Sovereignty. A local-first AI assistant with integrated tools, a personal knowledge graph, voice, vision, shell, browser automation, scheduled tasks, health tracking, and messaging channels. Run locally via Ollama or add opt-in cloud models. Your data stays on your machine.
:URI: https://github.com/siddsachar/Thoth
:CREATED: [2026-04-17 Fri 14:52]
:END:
* [[https://www.jori.com/en/products/pacific-jr-9700][Pacific Pure | Sofas | Product | Design furniture | JORI]] :furniture:years:
:PROPERTIES:
:TITLE: Pacific Pure | Sofas | Product | Design furniture | JORI
:URI: https://www.jori.com/en/products/pacific-jr-9700
:CREATED: [2026-04-21 Tue 15:25]
:END:
* [[https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6372438][AI Agent Traps by Matija Franklin, Nenad Tomašev, Julian Jacobs, Joel Z. Leibo, Simon Osindero :: SSRN]]
:PROPERTIES:
:TITLE: AI Agent Traps by Matija Franklin, Nenad Tomašev, Julian Jacobs, Joel Z. Leibo, Simon Osindero :: SSRN
:URI: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6372438
:CREATED: [2026-04-21 Tue 15:26]
:END:
* [[https://www.storagereview.com/review/comino-grando-rtx-pro-6000-review-768gb-of-vram-in-a-liquid-cooled-4u-chassis][Comino Grando RTX PRO 6000 Review: 768GB of VRAM in a Liquid-Cooled 4U Chassis - StorageReview.com]]
:PROPERTIES:
:TITLE: Comino Grando RTX PRO 6000 Review: 768GB of VRAM in a Liquid-Cooled 4U Chassis - StorageReview.com
:URI: https://www.storagereview.com/review/comino-grando-rtx-pro-6000-review-768gb-of-vram-in-a-liquid-cooled-4u-chassis
:CREATED: [2026-04-21 Tue 15:26]
:END:
* [[https://x.com/elvissun/status/2044784140831301728/photo/1][Elvis on X: "some agentic engineering realization: stop reviewing code. start reviewing contracts. and here's what i mean. the highest leverage work right now is drawing the right boundaries in your system. i've been splitting the system into multiple sub-systems, each with clearly defined https://t.co/Hy0d9WHI1m" / X]]
:PROPERTIES:
:TITLE: Elvis on X: "some agentic engineering realization: stop reviewing code. start reviewing contracts. and here's what i mean. the highest leverage work right now is drawing the right boundaries in your system. i've been splitting the system into multiple sub-systems, each with clearly defined https://t.co/Hy0d9WHI1m" / X
:URI: https://x.com/elvissun/status/2044784140831301728/photo/1
:CREATED: [2026-04-21 Tue 15:26]
:END:
* [[https://x.com/i/status/2044307601463357791][EverMars on X: "Respect to the Man Chasing AI Immortality, Even Though He's Freeloading Off Our Platform" / X]]
:PROPERTIES:
:TITLE: EverMars on X: "Respect to the Man Chasing AI Immortality, Even Though He's Freeloading Off Our Platform" / X
:URI: https://x.com/i/status/2044307601463357791
:CREATED: [2026-04-21 Tue 15:26]
:END:
* [[https://x.com/i/status/2045289299269070978][Seth Howes on X: "Ive wanted to do this for a decade. But I never did - I refuse to give any company my DNA. It is me. So this week I sequenced my genome entirely at home. Literally on my kitchen table. I never exposed my DNA sequence to the internet. Not at any point. I used a MinION to do https://t.co/qCzXIGxWsy" / X]]
:PROPERTIES:
:TITLE: Seth Howes on X: "Ive wanted to do this for a decade. But I never did - I refuse to give any company my DNA. It is me. So this week I sequenced my genome entirely at home. Literally on my kitchen table. I never exposed my DNA sequence to the internet. Not at any point. I used a MinION to do https://t.co/qCzXIGxWsy" / X
:URI: https://x.com/i/status/2045289299269070978
:CREATED: [2026-04-21 Tue 15:27]
:END:
* [[https://arxiv.org/html/2603.21852v2][All elementary functions from a single operator]]
:PROPERTIES:
:TITLE: All elementary functions from a single operator
:URI: https://arxiv.org/html/2603.21852v2
:CREATED: [2026-04-26 Sun 11:05]
:END:
* [[https://github.com/abhigyanpatwari/GitNexus][abhigyanpatwari/GitNexus: GitNexus: The Zero-Server Code Intelligence Engine - GitNexus is a client-side knowledge graph creator that runs entirely in your browser. Drop in a GitHub repo or ZIP file, and get an interactive knowledge graph wit a built in Graph RAG Agent. Perfect for code exploration]]
:PROPERTIES:
:TITLE: abhigyanpatwari/GitNexus: GitNexus: The Zero-Server Code Intelligence Engine - GitNexus is a client-side knowledge graph creator that runs entirely in your browser. Drop in a GitHub repo or ZIP file, and get an interactive knowledge graph wit a built in Graph RAG Agent. Perfect for code exploration
:URI: https://github.com/abhigyanpatwari/GitNexus
:CREATED: [2026-04-26 Sun 11:05]
:END:
* [[https://medium.com/@fzbcwvv/an-overnight-stack-for-qwen3-6-27b-85-tps-125k-context-vision-on-one-rtx-3090-0d95c6291914][An Overnight Stack for Qwen3.627B: 85 TPS, 125K Context, Vision — on One RTX 3090 | Medium]]
:PROPERTIES:
:TITLE: An Overnight Stack for Qwen3.627B: 85 TPS, 125K Context, Vision — on One RTX 3090 | Medium
:URI: https://medium.com/@fzbcwvv/an-overnight-stack-for-qwen3-6-27b-85-tps-125k-context-vision-on-one-rtx-3090-0d95c6291914
:CREATED: [2026-04-26 Sun 11:06]
:END:
* [[https://x.com/i/status/2047124337191444844][Shiv on X: "A new way to think about composing skills to increase leverage: Skill Graphs 2.0" / X]]
:PROPERTIES:
:TITLE: Shiv on X: "A new way to think about composing skills to increase leverage: Skill Graphs 2.0" / X
:URI: https://x.com/i/status/2047124337191444844
:CREATED: [2026-04-26 Sun 16:34]
:END:
* [[https://x.com/i/status/2047558951303028855][Eric ⚡️ Building... on X: "My 4090 went from 26 -&gt; 154 tok/s Qwen 3.6 27B🤯 Same GPU. Same Q4_K_M . No FP8, no extra quant. The unlock: ik_llama.cpp + speculative decoding using Qwen3-1.7B as the draft model. 85% acceptance rate. Full config + benchmarks 👇🏻 https://t.co/NUZec2Y7J0" / X]]
:PROPERTIES:
:TITLE: Eric ⚡️ Building... on X: "My 4090 went from 26 -&gt; 154 tok/s Qwen 3.6 27B🤯 Same GPU. Same Q4_K_M . No FP8, no extra quant. The unlock: ik_llama.cpp + speculative decoding using Qwen3-1.7B as the draft model. 85% acceptance rate. Full config + benchmarks 👇🏻 https://t.co/NUZec2Y7J0" / X
:URI: https://x.com/i/status/2047558951303028855
:CREATED: [2026-04-26 Sun 16:34]
:END:
* [[https://x.com/i/status/2047033293460410638][Sudo su on X: "for anyone running along, here is the setup. weights from unsloth: https://t.co/b89HJ2JC5O launched with: ./llama-server -m Qwen3.6-27B-Q4_K_M.gguf -ngl 99 -c 262144 -np 1 -fa on --cache-type-k q4_0 --cache-type-v q4_0 same exact flags that held the 3.5 dense baseline at 35.3" / X]]
:PROPERTIES:
:TITLE: Sudo su on X: "for anyone running along, here is the setup. weights from unsloth: https://t.co/b89HJ2JC5O launched with: ./llama-server -m Qwen3.6-27B-Q4_K_M.gguf -ngl 99 -c 262144 -np 1 -fa on --cache-type-k q4_0 --cache-type-v q4_0 same exact flags that held the 3.5 dense baseline at 35.3" / X
:URI: https://x.com/i/status/2047033293460410638
:CREATED: [2026-04-26 Sun 16:34]
:END:
* [[https://x.com/i/status/2046898117241635240][Hasan Toor on X: "Goodbye Claude Code subscription fees. Someone just built a proxy that runs Claude Code completely free... and it's wild. You literally plug in a free NVIDIA API key and point Claude Code at localhost. That's it. It handles everything: - Converts Anthropic API calls to NVIDIA https://t.co/10v4KdymxH" / X]]
:PROPERTIES:
:TITLE: Hasan Toor on X: "Goodbye Claude Code subscription fees. Someone just built a proxy that runs Claude Code completely free... and it's wild. You literally plug in a free NVIDIA API key and point Claude Code at localhost. That's it. It handles everything: - Converts Anthropic API calls to NVIDIA https://t.co/10v4KdymxH" / X
:URI: https://x.com/i/status/2046898117241635240
:CREATED: [2026-04-26 Sun 16:34]
:END:
* [[https://x.com/i/status/2047295369583964385][Graeme on X: "The Local LLM Cheat Sheet for Your 64GB RAM Device We covered 16GB and 32GB already, and 64GB has been the next big request, which I can understand, because this is where things get very interesting. Here's the practical cheat sheet for a 64GB RAM machine for code, math, https://t.co/ohgkjbU0LK" / X]]
:PROPERTIES:
:TITLE: Graeme on X: "The Local LLM Cheat Sheet for Your 64GB RAM Device We covered 16GB and 32GB already, and 64GB has been the next big request, which I can understand, because this is where things get very interesting. Here's the practical cheat sheet for a 64GB RAM machine for code, math, https://t.co/ohgkjbU0LK" / X
:URI: https://x.com/i/status/2047295369583964385
:CREATED: [2026-04-26 Sun 16:34]
:END:
* [[https://github.com/codejunkie99/agentic-stack][codejunkie99/agentic-stack: One brain, many harnesses. Portable .agent/ folder (memory + skills + protocols) that plugs into Claude Code, Cursor, Windsurf, OpenCode, OpenClaw, Hermes, or DIY Python — and keeps its knowledge when you switch.]]
:PROPERTIES:
:TITLE: codejunkie99/agentic-stack: One brain, many harnesses. Portable .agent/ folder (memory + skills + protocols) that plugs into Claude Code, Cursor, Windsurf, OpenCode, OpenClaw, Hermes, or DIY Python — and keeps its knowledge when you switch.
:URI: https://github.com/codejunkie99/agentic-stack
:CREATED: [2026-04-27 Mon 09:23]
:END:
* [[https://github.com/public-apis/public-apis][public-apis/public-apis: A collective list of free APIs]]
:PROPERTIES:
:TITLE: public-apis/public-apis: A collective list of free APIs
:URI: https://github.com/public-apis/public-apis
:CREATED: [2026-04-27 Mon 09:23]
:END:
* [[https://github.com/stanford-iris-lab/meta-harness][stanford-iris-lab/meta-harness: Reference code for the Meta-Harness paper.]]
:PROPERTIES:
:TITLE: stanford-iris-lab/meta-harness: Reference code for the Meta-Harness paper.
:URI: https://github.com/stanford-iris-lab/meta-harness
:CREATED: [2026-04-27 Mon 09:23]
:END:
* [[https://github.com/thePM001/AEP-agent-element-protocol/tree/main][thePM001/AEP-agent-element-protocol: AEP (Agent Element Protocol) v2.5 | Deterministic zero-trust total control and governance protocol for AI agents. | Reduce hallucinations to zero through architecure in all constrained domains of application. | LLMs gave you the engines, AEP gives you the control for the thrusters.]]
:PROPERTIES:
:TITLE: thePM001/AEP-agent-element-protocol: AEP (Agent Element Protocol) v2.5 | Deterministic zero-trust total control and governance protocol for AI agents. | Reduce hallucinations to zero through architecure in all constrained domains of application. | LLMs gave you the engines, AEP gives you the control for the thrusters.
:URI: https://github.com/thePM001/AEP-agent-element-protocol/tree/main
:CREATED: [2026-04-27 Mon 09:24]
:END:
* [[https://x.com/i/status/2048381278953603406][GREG ISENBERG on X: "agreed that the the modern computer probably has to be reinvented 12 "tiny" startup ideas that ride that wave: 1. a "where did I put that" app. you describe what you're looking for in plain english and it searches across every app, folder, email, and slack message you've ever" / X]]
:PROPERTIES:
:TITLE: GREG ISENBERG on X: "agreed that the the modern computer probably has to be reinvented 12 "tiny" startup ideas that ride that wave: 1. a "where did I put that" app. you describe what you're looking for in plain english and it searches across every app, folder, email, and slack message you've ever" / X
:URI: https://x.com/i/status/2048381278953603406
:CREATED: [2026-04-27 Mon 09:24]
:END:
* [[https://github.com/iptv-org/awesome-iptv][iptv-org/awesome-iptv: A curated list of resources related to IPTV]]
:PROPERTIES:
:TITLE: iptv-org/awesome-iptv: A curated list of resources related to IPTV
:URI: https://github.com/iptv-org/awesome-iptv
:CREATED: [2026-04-27 Mon 09:24]
:END:
* [[https://github.com/iptv-org/iptv][iptv-org/iptv: Collection of publicly available IPTV channels from all over the world]]
:PROPERTIES:
:TITLE: iptv-org/iptv: Collection of publicly available IPTV channels from all over the world
:URI: https://github.com/iptv-org/iptv
:CREATED: [2026-04-27 Mon 09:25]
:END:
* [[https://github.com/iptv-org/epg][iptv-org/epg: Utilities for downloading the EPG (Electronic Program Guide) for thousands of TV channels from hundreds of sources.]]
:PROPERTIES:
:TITLE: iptv-org/epg: Utilities for downloading the EPG (Electronic Program Guide) for thousands of TV channels from hundreds of sources.
:URI: https://github.com/iptv-org/epg
:CREATED: [2026-04-27 Mon 09:25]
:END:

BIN
inbox/2512.24601v2.pdf Normal file

Binary file not shown.

BIN
inbox/2602.22302v1.pdf Normal file

Binary file not shown.

BIN
inbox/paper.pdf Normal file

Binary file not shown.

BIN
inbox/von_Neumann_1955.pdf Normal file

Binary file not shown.

View File

@@ -12,9 +12,9 @@
- *Solution:* The *Org-Native Skill Standard*. Skills are written entirely as `.org` files. The daemon parses the Org file at startup, extracts `#+begin_src lisp` blocks containing triggers, neuro-prompts, and symbolic verification rules, and dynamically compiles them into the live system using `eval` and `read`. - *Solution:* The *Org-Native Skill Standard*. Skills are written entirely as `.org` files. The daemon parses the Org file at startup, extracts `#+begin_src lisp` blocks containing triggers, neuro-prompts, and symbolic verification rules, and dynamically compiles them into the live system using `eval` and `read`.
- *Heuristic:* The Core is strictly the PTA loop (`core.lisp`, `neuro.lisp`, `symbolic.lisp`). ALL business logic, API connectors, and rule sets MUST live as `.org` files in the `skills/` directory. - *Heuristic:* The Core is strictly the PTA loop (`core.lisp`, `neuro.lisp`, `symbolic.lisp`). ALL business logic, API connectors, and rule sets MUST live as `.org` files in the `skills/` directory.
** [2026-03-23] Cognitive Loop Architecture (org-agent) ** [2026-03-23] Cognitive Cycle Architecture (opencortex)
- *Problem:* Monolithic PTA (Perceive-Think-Act) loops lead to "Neural Drift" where the LLM's unverified suggestions can cause illegal system states or security breaches. - *Problem:* Monolithic PTA (Perceive-Think-Act) loops lead to "Neural Drift" where the LLM's unverified suggestions can cause illegal system states or security breaches.
- *Solution:* Implement the *Four-Stage Cognitive Loop*: Perceive -> Think -> Decide -> Act. - *Solution:* Implement the *Four-Stage Cognitive Cycle*: Perceive -> Think -> Decide -> Act.
- *Heuristic:* Probabilistic Engine (Neural/LLM) is a proposal engine only. Deterministic Engine (Symbolic/Lisp) is the absolute gatekeeper. - *Heuristic:* Probabilistic Engine (Neural/LLM) is a proposal engine only. Deterministic Engine (Symbolic/Lisp) is the absolute gatekeeper.
- *Verification:* Never execute an action unless it has passed through `decide()` and been verified against the symbolic Object Store (CLOSOS). - *Verification:* Never execute an action unless it has passed through `decide()` and been verified against the symbolic Object Store (CLOSOS).

View File

@@ -21,7 +21,7 @@ Define the requirements for modular, open-source, and intelligent home hardware.
** 2. User Needs ** 2. User Needs
- *Physical Modularity:* Easy replacement and upgrade of mechanical and electrical components. - *Physical Modularity:* Easy replacement and upgrade of mechanical and electrical components.
- *Smart Interfacing:* ESP32-based control boards for connectivity. - *Smart Interfacing:* ESP32-based control boards for connectivity.
- *Multimodal Control:* Support for smartphone apps, physical modular controllers, and direct `org-agent` AI interaction. - *Multimodal Control:* Support for smartphone apps, physical modular controllers, and direct `opencortex` AI interaction.
- *Sustainability:* Design for longevity, repairability, and efficient power management (inspired by Slate principles). - *Sustainability:* Design for longevity, repairability, and efficient power management (inspired by Slate principles).
** 3. Success Criteria ** 3. Success Criteria

View File

@@ -20,7 +20,7 @@ Define the requirements for a modular, user-serviceable, and aesthetically pleas
** 2. User Needs ** 2. User Needs
- *Modularity:* Unified backplane for swappable compute, storage, and power modules. - *Modularity:* Unified backplane for swappable compute, storage, and power modules.
- *Sovereignty:* Full control over hardware and the software stack (running `org-agent`). - *Sovereignty:* Full control over hardware and the software stack (running `opencortex`).
- *Aesthetics:* Sleek "Hi-Fi" industrial design. - *Aesthetics:* Sleek "Hi-Fi" industrial design.
- *Multimodality:* Integration of SDR, AV, and specialized processors. - *Multimodality:* Integration of SDR, AV, and specialized processors.

View File

@@ -1,166 +0,0 @@
#+TITLE: AUDIT: V1.0 Comprehensive Core Skill Audit
#+AUTHOR: Gemini CLI (Agent)
#+DATE: [2026-04-09 Thu]
#+FILETAGS: :audit:kernel:psf:
#+STARTUP: overview
* Overview
This audit systematically reviews the 39 core skills of the Org-Agent for compliance with the V1.0 standards:
1. **Safety:** Prevention of code injection, proper sandboxing, and actuator safety.
2. **Merkle-Tree Integration:** Proper use of the native Lisp Merkle-Tree versioning for undo/rollback.
3. **Core Invariants:** Adherence to Sovereignty, Mastery, Zero-Bloat, Transparency, and Sustainability.
* Audit Progress [6/28]
** DONE org-skill-agent.org [X]
- COMPLIANT: Correctly defines and enforces Core Invariants.
- SAFETY: High. Implements baseline symbolic gating.
- MERKLE: N/A (Read-only/Policy only).
** DONE org-skill-llm-gateway.org [X]
- COMPLIANT: Consolidates 6 providers into a single high-integrity gate.
- SAFETY: HIGH. Fixed URL key leaks, standardized headers, and centralized credential masking.
- MERKLE: N/A (Stateless dispatch).
** DONE org-skill-credentials-vault.org [X]
- COMPLIANT: Unified high-security enclave for API keys and cookies.
- SAFETY: HIGH. Mandatory credential masking in logs and secure Object Store persistence.
- MERKLE: COMPLIANT. Setting secrets triggers Merkle snapshots.
** DONE org-skill-homoiconic-memory.org [X]
- COMPLIANT: Unified grammar, bridge, and normalization.
- SAFETY: HIGH. recursive AST walker for ID injection and structural validation.
- MERKLE: COMPLIANT. Normalization occurs during ingest/save, which are Merkle-versioned events.
** DONE org-skill-state-persistence.org [X]
- COMPLIANT: Unified local SBCL image dumps with decentralized IPFS checkpointing.
- SAFETY: HIGH. Implements safe restoration paths and credential masking.
- MERKLE: COMPLIANT. This is the primary persistence layer for the Merkle-Tree object store.
** DONE org-skill-event-orchestrator.org [X]
- COMPLIANT: Unified Cron, Hooks, and Routing into a single central control unit.
- SAFETY: HIGH. Implements error isolation for automated tasks and hooks.
- MERKLE: COMPLIANT. Registering hooks or tasks triggers Merkle snapshots.
** DONE org-skill-cron.org [X] (CONSOLIDATED -> org-skill-event-orchestrator.org)
** DONE org-skill-hook-manager.org [X] (CONSOLIDATED -> org-skill-event-orchestrator.org)
** DONE org-skill-router.org [X] (CONSOLIDATED -> org-skill-event-orchestrator.org)
** DONE org-skill-memory-archivist.org [X] (CONSOLIDATED -> org-skill-state-persistence.org)
** DONE org-skill-object-store-persistence.org [X] (CONSOLIDATED -> org-skill-state-persistence.org)
** DONE org-skill-ast-normalization.org [X] (CONSOLIDATED -> org-skill-homoiconic-memory.org)
** DONE org-skill-org-json-bridge.org [X] (CONSOLIDATED -> org-skill-homoiconic-memory.org)
** DONE org-skill-org-mode.org [X] (CONSOLIDATED -> org-skill-homoiconic-memory.org)
** DONE org-skill-auth-api-key.org [X] (CONSOLIDATED -> org-skill-credentials-vault.org)
** DONE org-skill-auth-google-oauth.org [X] (CONSOLIDATED -> org-skill-credentials-vault.org)
** DONE org-skill-provider-anthropic.org [X] (CONSOLIDATED -> org-skill-llm-gateway.org)
** DONE org-skill-provider-gemini.org [X] (CONSOLIDATED -> org-skill-llm-gateway.org)
** DONE org-skill-provider-groq.org [X] (CONSOLIDATED -> org-skill-llm-gateway.org)
** DONE org-skill-provider-ollama.org [X] (CONSOLIDATED -> org-skill-llm-gateway.org)
** DONE org-skill-provider-openai.org [X] (CONSOLIDATED -> org-skill-llm-gateway.org)
** DONE org-skill-provider-openrouter.org [X] (CONSOLIDATED -> org-skill-llm-gateway.org)
** DONE org-skill-chaos.org [ ]
- STATUS: NON-COMPLIANT (Safety/Sovereignty Violation)
- ISSUE: Lacks an "Active Production" gate to prevent accidental chaos during real work. No Merkle-Tree checkpoints before/after stress tests to allow for full-system rollback.
- SAFETY: MEDIUM (Adversarial by design, but ungated).
- MERKLE: FAILED.
** DONE org-skill-chat.org [ ]
- STATUS: NON-COMPLIANT (Safety/Technical Mastery Violation)
- ISSUE: Uses `read-from-string` on unverified LLM output, risking reader macro injection. No Merkle-Tree integration for chat history persistence or rollbacks.
- SAFETY: LOW (Vulnerable to injection).
- MERKLE: FAILED.
** DONE org-skill-consensus.org [X]
- STATUS: COMPLIANT (Consolidated -> Task Orchestrator)
- SAFETY: HIGH. Verified via parallel multi-backend consensus in neuro.lisp.
- MERKLE: COMPLIANT.
** DONE org-skill-context-manager.org [ ]
- STATUS: NON-COMPLIANT (Critical Gap)
- ISSUE: No implementation code in Phase D. The skill is only a blueprint. No Merkle-Tree integration for context stack snapshots or rollbacks.
- SAFETY: N/A (Missing).
- MERKLE: FAILED.
** DONE org-skill-delegation.org [X]
- STATUS: COMPLIANT (Consolidated -> Task Orchestrator)
- SAFETY: HIGH. Integrated consensus gate and delegation hooks in core.lisp.
- MERKLE: COMPLIANT.
** DONE org-skill-environment-config.org [ ]
- STATUS: NON-COMPLIANT (Safety/Technical Mastery Violation)
- ISSUE: No validation or authorization gating for configuration changes. Direct hash-table modification skips the new Merkle-Tree versioning system in the Object Store.
- SAFETY: MEDIUM (Risk of misconfiguration).
- MERKLE: FAILED.
** DONE org-skill-formal-verification.org [X]
- STATUS: COMPLIANT
- ISSUE: Implemented Lisp-Native Symbolic Prover for security invariants.
- SAFETY: HIGH. Implements path-confinement and no-network-exfil.
- MERKLE: COMPLIANT.
** DONE org-skill-function-calling.org [ ]
- STATUS: NON-COMPLIANT (Critical Gap)
- ISSUE: No implementation code in Phase D. The skill is only a blueprint. No Merkle-Tree integration for recording and rolling back tool-use history or state.
- SAFETY: N/A (Missing).
- MERKLE: FAILED.
** DONE org-skill-inbound-gateway.org [ ]
- STATUS: NON-COMPLIANT (Critical Gap)
- ISSUE: No implementation code in Phase D. The skill is only a blueprint. No Merkle-Tree integration for recording and rolling back inbound message history or state.
- SAFETY: N/A (Missing).
- MERKLE: FAILED.
** DONE org-skill-inbox-processor.org [ ]
- STATUS: NON-COMPLIANT (Safety/Technical Mastery Violation)
- ISSUE: Physical move logic is a "Simulation". No implementation of actual file refactoring. No Merkle-Tree integration for recording or rolling back inbox-related state changes.
- SAFETY: MEDIUM (Simulation only).
- MERKLE: FAILED.
** DONE org-skill-latent-reflection.org [ ]
- STATUS: NON-COMPLIANT (Safety/Technical Mastery Violation)
- ISSUE: No validation or authorization gating for reflected state changes. Random sampling is inefficient. No Merkle-Tree integration for recording or rolling back reflected state changes.
- SAFETY: MEDIUM (Risk of unintended modifications).
- MERKLE: FAILED.
** DONE org-skill-lisp-machine-bootstrap.org [ ]
- STATUS: NON-COMPLIANT (Critical Gap)
- ISSUE: No implementation code in Phase D. The skill is only a blueprint. No Merkle-Tree integration for recording or rolling back bootstrap-related state changes or ISA simulation history.
- SAFETY: N/A (Missing).
- MERKLE: FAILED.
** DONE org-skill-log-aggregator.org [ ]
- STATUS: NON-COMPLIANT (Critical Gap)
- ISSUE: No implementation code in Phase D. The skill is only a blueprint. No Merkle-Tree integration for recording or rolling back log-related state changes or observability history.
- SAFETY: N/A (Missing).
- MERKLE: FAILED.
** DONE org-skill-memex.org [ ]
- STATUS: NON-COMPLIANT (Critical Gap)
- ISSUE: No implementation code in Phase D. The skill is only a blueprint. No Merkle-Tree integration for recording or rolling back memex-related state changes or metadata audits.
- SAFETY: N/A (Missing).
- MERKLE: FAILED.
** DONE org-skill-model-explorer.org [ ]
- STATUS: NON-COMPLIANT (Critical Gap)
- ISSUE: No implementation code or blueprint. The skill is only a title and overview. No Merkle-Tree integration for model discovery or state changes.
- SAFETY: N/A (Missing).
- MERKLE: FAILED.
** DONE org-skill-onboarding.org [ ]
- STATUS: NON-COMPLIANT (Critical Gap)
- ISSUE: No implementation code in Phase D. The skill is only a blueprint. No Merkle-Tree integration for recording or rolling back onboarding-related state changes or environment calibration.
- SAFETY: N/A (Missing).
- MERKLE: FAILED.
** DONE org-skill-lisp-validator.org [ ]
- STATUS: NON-COMPLIANT (Safety/Technical Mastery Violation)
- ISSUE: No validation or authorization gate for dynamic symbol registration. No Merkle-Tree integration for recording or rolling back safety-related state changes or verification history.
- SAFETY: HIGH (The core of the system's safety).
- MERKLE: FAILED.
** DONE org-skill-self-fix.org [ ]
- STATUS: NON-COMPLIANT (Safety/Technical Mastery Violation)
- ISSUE: No validation or authorization gate for proposed self-fixes. Fixes are applied directly to files. No Merkle-Tree integration for recording or rolling back self-fix-related state changes or repair history.
- SAFETY: LOW (Risk of unintended/malicious modifications).
- MERKLE: FAILED.
** DONE org-skill-shell-actuator.org [ ]
- STATUS: NON-COMPLIANT (Safety/Sovereignty Violation)
- ISSUE: No validation or authorization gate for synthesized script execution. Script synthesis bypasses the shell whitelist. No Merkle-Tree integration for recording or rolling back shell-related state changes or command history.
- SAFETY: MEDIUM (Whitelisted, but script synthesis is a gap).
- MERKLE: FAILED.
** DONE org-skill-sub-agent-manager.org [ ]
- STATUS: NON-COMPLIANT (Critical Gap)
- ISSUE: No implementation code in Phase D. The skill is only a blueprint. No Merkle-Tree integration for recording or rolling back sub-agent-related state changes or concurrent thoughts.
- SAFETY: N/A (Missing).
- MERKLE: FAILED.
** DONE org-skill-task-integrity.org [ ]
- STATUS: NON-COMPLIANT (Critical Gap)
- ISSUE: No implementation code in Phase D. The skill is only a blueprint. No Merkle-Tree integration for recording or rolling back task-related state changes or transition history.
- SAFETY: N/A (Missing).
- MERKLE: FAILED.
** DONE org-skill-token-accountant.org [ ]
- STATUS: NON-COMPLIANT (Safety/Sovereignty Violation)
- ISSUE: Hot-patches the kernel's core variables (`*provider-cascade*`, `*model-selector-fn*`) directly, bypassing the skill registration system's safety. No Merkle-Tree integration for recording or rolling back provider-related state changes or pain history.
- SAFETY: LOW (Direct kernel mutation).
- MERKLE: FAILED.
* Findings Log
| Skill | Issue | Priority | Status |
|-------+-------+----------+--------|
| | | | |

View File

@@ -1,32 +0,0 @@
# Implementation Plan: Component IV - Peripheral Vision Extraction
## Objective
Implement a sophisticated "Foveal-Peripheral" context model. This ensures the agent has high-resolution focus on the current task (Foveal) while maintaining a low-resolution "skeletal" awareness of the broader Memex structure (Peripheral), optimized for token efficiency and reasoning accuracy.
## Key Files & Context
- **Target:** `projects/org-agent/literate/context.org` (Source of `src/context.lisp`)
- **Core Concept:** Deep pruning of the Org AST based on semantic distance and structural hierarchy.
## Implementation Steps
### 1. Identify Foveal Focus
- Extend the `SIGNAL` structure processing to identify a `target-id` (the current headline being operated on).
### 2. Implement Tree Pruning (`context-extract-peripheral-vision`)
- Create a recursive function that walks the Object Store starting from the root (or active projects).
- **Rule A (Foveal):** If the node matches `target-id`, include it and its immediate children in **Full Resolution** (Content + Attributes).
- **Rule B (Peripheral):** For ancestors and siblings of the target, include only **Title and ID**.
- **Rule C (Background):** For unrelated nodes, omit entirely or include only at Level 1.
### 3. AST to Org Renderer (`context-render-to-org`)
- Implement a serializer that transforms our `org-object` structures back into valid Org-mode strings.
- This allows the LLM to "see" the Memex in its native habitat.
### 4. Integrate with `context-assemble-global-awareness`
- Update this function to use the new extraction and rendering logic.
- Ensure it respects a maximum token/character budget to prevent context overflow.
## Phase E: Chaos (Verification)
- **Structural Test:** Verify that ancestors are rendered as "skeletons" (no body text).
- **Foveal Test:** Verify that the target node is rendered with its full body text.
- **Budget Test:** Verify that the output string stays within defined limits even for large Memex structures.

View File

@@ -1,37 +0,0 @@
# Implementation Plan: Reactive Signal Pipeline Refactor
## Objective
Refactor the monolithic recursive `cognitive-loop` into a functional, gate-based `reactive-signal-pipeline`. This flattens the execution stack, enables multi-backend consensus, and improves observability according to Component VII of the evolutionary roadmap.
## Key Files & Context
- **Target:** `projects/org-agent/literate/core.org` (Source of `src/core.lisp`)
- **Architectural Reference:** `projects/org-agent/literate/evolution.org`
## Implementation Steps
### 1. Define the Signal Structure
Transition from raw plists to a structured `:SIGNAL` format that tracks state as it moves through the pipeline.
- Attributes: `:status`, `:payload`, `:context`, `:depth`, `:proposals`, `:reply-stream`.
### 2. Implement the Pipeline Gates
Extract existing logic from `cognitive-loop` into discrete functional gates:
- **`perceive-gate`**: Normalizes input, updates `*object-store*`.
- **`neuro-gate`**: Invokes Probabilistic Engine. Support for future parallel backend calls.
- **`consensus-gate`**: (New) Selects the best proposal from multiple backends (initially a pass-through for the single proposal).
- **`decide-gate`**: Invokes Deterministic Engine safety checks.
- **`dispatch-gate`**: Executes tools or physical actuators.
### 3. Implement the Pipeline Orchestrator (`process-signal`)
Create a function that moves a signal through the sequence of gates.
- **Flattening Recursion:** If `dispatch-gate` results in a tool output or error, it MUST NOT call the pipeline recursively. Instead, it returns a new `:SIGNAL` with `depth + 1`, which the orchestrator then re-injects into the top of the pipe via a loop or queue.
### 4. Refactor `inject-stimulus`
Update `inject-stimulus` to initialize a Signal and hand it to the `process-signal` pipeline instead of `cognitive-loop`.
### 5. Cleanup
Remove the obsolete `cognitive-loop` function and update `literate/core.org` documentation/diagrams to reflect the new architecture.
## Verification & Testing (Phase E: Chaos)
- **Unit Tests:** Verify each gate function in isolation.
- **Pipeline Test:** Simulate a complex multi-turn interaction (e.g., User Prompt -> Tool Call -> Tool Result -> LLM Final Answer) and ensure the stack depth remains flat.
- **Immune System Test:** Verify that the depth limit (Max depth 10) still correctly terminates runaway loops.

View File

@@ -1,26 +0,0 @@
#+title: Emacs Setup Improvement & Documentation Project
#+author: Amero Garcia
#+created: [2026-03-16 Mon 13:58]
#+begin_comment
This file outlines the project to collaboratively improve and document Amr's Emacs setup, aiming to make Emacs his primary computing tool.
#+end_comment
* Emacs Setup Improvement & Documentation Project
*Goal:** To collaboratively improve and comprehensively document Amr's Emacs configuration, transitioning Emacs into his primary computing environment.
*Initial Scope:**
- Reviewing the existing Emacs Org-mode configuration file (tangled to set up Emacs).
- Identifying areas for optimization, new functionalities, and better integration with workflows.
- Documenting each significant setting, function, and package.
*Information Needed from Amr:**
- Location of the current Emacs Org-mode configuration file.
- Key pain points or areas where Emacs currently falls short as a "main computing tool."
- Specific desired functionalities or integrations (e.g., mail, calendar, task management, coding environments, note-taking, web browsing within Emacs).
- Any existing documentation or design principles for the current setup.
*Next Steps:**
1. Receive Emacs configuration file location from Amr.
2. Analyze current setup.
3. Propose documentation structure and initial improvements.

View File

@@ -1,27 +0,0 @@
#+TITLE: Amr's Modular Emacs Configuration
#+PROPERTY: header-args :tangle no ; This file is for loading other modules, not for tangling itself.
* Configuration Modules
This file loads the modular Emacs configuration files. It should be the primary way Emacs is configured, replacing or integrating with the original `~/.emacs`, `~/.emacs.d/init.el`, `~/.emacs.d/early-init.el`, and `~/.emacs.d/config.el`.
#+begin_src emacs-lisp :exports none
;; Load early-init.el first, if it exists and is separate (though it's now part of emacs-early-init.org)
;; (load-file (expand-file-name "emacs-early-init.org" (file-name-directory load-file-name)))
;; Load the core settings, including package management and essential setup.
(org-babel-load-file (expand-file-name "emacs-core.org" (file-name-directory load-file-name)))
;; Load early init settings (if separate and not fully covered by core)
(org-babel-load-file (expand-file-name "emacs-early-init.org" (file-name-directory load-file-name)))
;; Load other modules in a logical order
(org-babel-load-file (expand-file-name "emacs-org.org" (file-name-directory load-file-name)))
(org-babel-load-file (expand-file-name "emacs-gtd.org" (file-name-directory load-file-name)))
(org-babel-load-file (expand-file-name "emacs-roam.org" (file-name-directory load-file-name)))
(org-babel-load-file (expand-file-name "emacs-writing.org" (file-name-directory load-file-name)))
(org-babel-load-file (expand-file-name "emacs-media.org" (file-name-directory load-file-name)))
(org-babel-load-file (expand-file-name "emacs-shell.org" (file-name-directory load-file-name)))
(org-babel-load-file (expand-file-name "emacs-ai.org" (file-name-directory load-file-name)))
(org-babel-load-file (expand-file-name "emacs-misc.org" (file-name-directory load-file-name)))
#+end_src

View File

@@ -1,104 +0,0 @@
#+TITLE: AI Configuration
#+PROPERTY: header-args :tangle ~/.emacs.d/config.el
* AI Settings
** Ellama
#+begin_src elisp :tangle no
;; YOU DON'T NEED NONE OF THIS CODE FOR SIMPLE INSTALL
;; IT IS AN EXAMPLE OF CUSTOMIZATION.
(use-package ellama
:init
(require 'llm-openai)
;; setup key bindings
(setq ellama-keymap-prefix "C-c e")
)
#+end_src
#+begin_src elisp ~/.emacs.d/custom.el :tangle no
(setopt ellama-providers
'(
;; Ollama Provider (added here with a name)
("ollama" . (make-llm-ollama
;; Consider a dedicated embedding model if gemma isn't ideal for it.
:chat-model "gemma3:latest"
:embedding-model "gemma3:latest" ; Or e.g., "nomic-embed-text"
:default-chat-non-standard-params '(("num_ctx" . 8192))))
("openai" . (make-llm-openai
:key (auth-source-pass-get "api-key" "www/openai.com/amr@gharbeia.net")
:chat-model "gpt-4o"
:embedding-model "text-embedding-3-large"))
("groq" . (make-llm-openai-compatible
:url "https://api.groq.com/openai/v1"
:key (auth-source-pass-get "api-key" "www/console.groq.com/groq@amr.gharbeia.net")
;; Check Groq console for available models, these might change
:chat-model "llama3-70b-8192" ; Example, verify on Groq
:embedding-model "llama3-70b-8192")) ; Groq might not offer dedicated embedding models via this API
))
;; --- Set Active Providers ---
;; Choose your default provider from the list above by its name
(setopt ellama-provider "ollama") ; Or "ollama", "openai", "groq"
;; You can specify different providers for different tasks if needed
(setopt ellama-translation-provider "ollama")
(setopt ellama-naming-provider "ollama")
(setopt ellama-naming-scheme 'ellama-generate-name-by-llm)
(setq llm-debug t)
#+end_src
#+begin_src elisp
(use-package ellama
:ensure t
:bind ("C-c e" . ellama)
;; send last message in chat buffer with C-c C-c
:hook (org-ctrl-c-ctrl-c-final . ellama-chat-send-last-message)
:init (setopt ellama-auto-scroll t)
:config
;; show ellama context in header line in all buffers
(ellama-context-header-line-global-mode +1)
;; show ellama session id in header line in all buffers
(ellama-session-header-line-global-mode +1))
#+end_src
** GPTel
#+begin_src elisp :tangle no
(use-package gptel)
#+end_src
#+begin_src elisp :tangle no
(setq gptel-api-key (auth-source-pass-get "api-key" "www/console.groq.com/groq@amr.gharbeia.net"))
#+end_src
#+begin_src elisp :tangle no
(gptel-make-openai "Groq" ;Any name you want
:host "api.groq.com"
:endpoint "/openai/v1/chat/completions"
:stream t
:key (auth-source-pass-get "api-key" "www/console.groq.com/groq@amr.gharbeia.net") ;can be a function that returns the key
:models '(llama-3.1-70b-versatile
llama-3.1-8b-instant
llama3-70b-8192
llama3-8b-8192
mixtral-8x7b-32768
gemma-7b-it))
#+end_src
** Elisa
#+begin_src elisp :tangle no
(use-package elisa
:init
(setopt elisa-limit 5)
(require 'llm-ollama)
(setopt elisa-embeddings-provider (make-llm-ollama :embedding-model "nomic-embed-text"))
(setopt elisa-chat-provider (make-llm-ollama
:chat-model "sskostyaev/openchat:8k-rag"
:embedding-model "nomic-embed-text"))
)
#+end_src

View File

@@ -1,169 +0,0 @@
#+TITLE: Core Emacs Configuration
#+PROPERTY: header-args :tangle ~/.emacs.d/config.el
* Front matter
#+begin_src elisp :tangle ~/.emacs
;;; .emacs --- Global settings
;;; Commentary:
;;; Code:
;; -*- lexical-binding: t; -*-
#+end_src
#+begin_src elisp
;;; config.el --- Summary
;;; Commentary:
;;; Code:
;; -*- lexical-binding: t; -*-
#+end_src
#+begin_src elisp :tangle ~/.emacs.d/custom.el
;;; custom.el --- Summary
;;; Commentary:
;;; Code:
;; -*- lexical-binding: t; -*-
#+end_src
* Garbage collector
Increase threshold to 500 MB to ease startup
#+begin_src elisp :tangle ~/.emacs
(setq gc-cons-threshold (* 500 1024 1024))
#+end_src
Decrease threshold to 5 MB after init
#+begin_src elisp :tangle ~/.emacs
(add-hook 'after-init-hook (lambda () (setq gc-cons-threshold (* 5 1024 1024))))
#+end_src
* Straight.el and use-package
Bootstrap Straight.el and install use-package
#+begin_src elisp :tangle ~/.emacs
(setq straight-repository-branch "develop") ;; Using develop branch temporarily to fix the org-roam-dailies issue.
(eval-and-compile
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el"
(or (bound-and-true-p straight-base-dir)
user-emacs-directory)))
(bootstrap-version 7))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el" 'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
(straight-use-package 'use-package)
)
#+end_src
Integrate use-package and straight
#+begin_src elisp :tangle ~/.emacs
(setq straight-use-package-by-default t)
#+end_src
Make sure Org is installed (straight.el)
#+begin_src elisp :tangle ~/.emacs
(unless (file-directory-p "~/.emacs.d/straight/versions") (make-directory (concat user-emacs-directory "straight/versions")))
#+end_src
#+begin_src elisp :tangle ~/.emacs
(use-package org)
#+end_src
A use-package declaration for simplifying your .emacs
#+begin_src elisp
(require 'use-package)
#+end_src
* Custom file
#+begin_src elisp
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
(when (file-exists-p custom-file) (load custom-file))
#+end_src
* System information
#+begin_src elisp :tangle ~/.emacs.d/custom.el
(defvar my-laptop-p (equal (system-name) "lilitop"))
(defvar my-server-p (and (equal (system-name) "localhost") (equal user-login-name "root")))
(defvar my-phone-p (not (null (getenv "ANDROID_ROOT")))
"If non-nil, GNU Emacs is running on Termux.")
(when my-phone-p (defvar gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3"))
(global-auto-revert-mode) ; simplifies syncing
#+end_src
* Persistent history
#+begin_src elisp
(savehist-mode)
#+end_src
* Backup and versioning
#+begin_src emacs-lisp
(use-package magit
:ensure t
)
#+end_src
* Personal information
#+begin_src elisp :tangle ~/.emacs.d/custom.el
(setq user-full-name "Amr Gharbeia")
(defvar email-address "amr@gharbeia.net")
(defvar calendar-latitude 39.0)
(defvar calendar-longitude -77.1)
(defvar calendar-location-name "Washington, DC")
(defvar calendar-time-zone -300)
(defvar calendar-standard-time-zone-name "EST")
(defvar calendar-daylight-time-zone-name "EDT")
#+end_src
* Saving Emacs Sessions
Close frame when done
#+begin_src elisp
(add-hook 'server-done-hook (lambda () (delete-frame)))
#+end_src
Save desktop session
#+begin_src elisp
(desktop-save-mode t)
#+end_src
* Security
#+begin_src elisp :tangle no
(use-package password-store)
#+end_src
#+begin_src elisp
(use-package auth-source
:config (auth-source-pass-enable)
)
#+end_src
* End matter
#+begin_src elisp :tangle ~/.emacs
(provide '.emacs)
;;; .emacs ends here
#+end_src
#+begin_src elisp
(provide 'config)
;;; config.el ends here
#+end_src
#+begin_src elisp :tangle ~/.emacs.d/custom.el
(provide 'custom)
;;; custom.el ends here
#+end_src

View File

@@ -1,157 +0,0 @@
#+TITLE: GTD & Agenda Configuration
#+PROPERTY: header-args :tangle ~/.emacs.d/config.el
* Agenda
Basic agenda settings
#+begin_src elisp
(setq org-deadline-warning-days 7)
(setq org-agenda-skip-additional-timestamps-same-entry t)
(setq org-agenda-span 'fortnight)
(setq org-agenda-tags-column 'auto)
(setq org-agenda-skip-scheduled-if-deadline-is-shown t)
#+end_src
Agenda files
#+begin_src elisp
(setq org-agenda-files (list
(concat org-directory "inbox.org")
(concat org-directory "gtd.org")
)
)
#+end_src
Better agenda views
#+begin_src elisp :tangle no
(use-package org-super-agenda)
#+end_src
* To-do
Basic todo
#+begin_src elisp
(setq org-todo-keywords
'(
(sequence "TODO(t)" "NEXT(n)" "WAIT(w@/!)" "|" "DONE(d!)" "CNCL(c@)")
)
)
(setq org-todo-keyword-faces
'(
("TODO" :foreground "red" :weight bold)
("NEXT" :foreground "red" :weight bold)
("WAIT" :foreground "yellow" :weight bold)
("DONE" :foreground "green" :weight bold)
("CNCL" :foreground "blue" :weight bold)
)
)
(setq org-enforce-todo-dependencies t)
(setq org-tags-exclude-from-inheritance '("crypt" "!private"))
#+end_src
Switch entry to 'DONE' when all subentries are done
#+begin_src elisp
(defun org-summary-todo (n-done n-not-done)
"Switch entry to 'DONE' when all subentries are done, to 'TODO' otherwise.
Uses N-DONE and N-NOT-DONE"
(let (org-log-done org-log-states) ; turn off logging
(org-todo (if (= n-not-done 0) "DONE" "TODO")
)
)
)
(add-hook 'org-after-todo-statistics-hook #'org-summary-todo)
#+end_src
* Getting Things Done (GTD)
#+begin_src elisp
(use-package org-gtd
:defer t
:init (setq org-gtd-update-ack "4.0.0")
:after org
:config
(setq org-edna-use-inheritance t)
(org-edna-mode)
(setq org-gtd-keyword-mapping
'((todo . "TODO")
(next . "NEXT")
(wait . "WAIT")
(done . "DONE")
(canceled . "CNCL")))
(setq org-gtd-custom-node-paths
'(("Actionable" . '("~/memex/gtd.org" "Actions"))
("Incubate" . '("~/memex/gtd.org" "Incubate"))))
(org-gtd-mode)
:bind (
("C-c d c" . org-gtd-capture)
("C-c d e" . org-gtd-engage)
("C-c d p" . org-gtd-process-inbox)
:map org-gtd-clarify-map
("C-c c" . org-gtd-organize)
)
)
#+end_src
#+begin_src elisp
(defvar org-gtd-directory org-directory)
(defvar org-gtd-organize-hooks '(org-gtd-set-area-of-focus org-set-tags-command))
(defvar org-gtd-organize-hooks '(org-gtd-set-area-of-focus))
(defvar org-gtd-areas-of-focus '(
"Atoms"
"Bits"
"Cells"
"Flags"
"Business"
"Wealth"
"Learning"
"Skills"
"Privacy"
"Archive"
"Library"
"Writing"
"Health"
"Home"
"Family"
"Social"
"Egypt"
)
)
(defvar org-gtd-clarify-show-horizons 'right)
#+end_src
Logging
#+begin_src elisp
(setq org-log-into-drawer "LOGBOOK")
#+end_src
Clocking work in drawer
#+begin_src elisp :tangle no
(setq org-clock-into-drawer t)
#+end_src
Habits
#+begin_src elisp :tangle no
(setq org-habit-graph-column 80)
(setq org-habit-show-habits-only-for-today nil)
#+end_src
* Refile
org-refile targets
#+begin_src elisp
(setq org-refile-targets '((nil :maxlevel . 9)
(org-agenda-files :maxlevel . 9)
)
)
#+end_src
Set type of refile targets completion
#+begin_src elisp
(setq org-outline-path-complete-in-steps nil)
#+end_src
Allow refiling to new parents created on the go after confirmation
#+begin_src elisp
(setq org-refile-allow-creating-parent-nodes 'confirm)
#+end_src

View File

@@ -1,175 +0,0 @@
#+TITLE: Media and Books Configuration
#+PROPERTY: header-args :tangle ~/.emacs.d/config.el
* Read ebooks (calibredb)
#+begin_src elisp
(use-package calibredb
:defer t
:config
(setq calibredb-format-all-the-icons t)
(setq calibredb-format-icons-in-terminal t)
)
#+end_src
#+begin_src elisp
;; Forcefully reset the variable after loading calibredb
(defvar calibredb-root-dir (concat (getenv "HOME") "/library/books"))
(defvar calibredb-db-dir (expand-file-name "metadata.db" calibredb-root-dir))
; (defvar calibredb-library-alist (concat (getenv "HOME") "/library/books"))
;; (defvar calibredb-search-page-max-rows 1000)
(defvar calibredb-id-width 6)
(defvar calibredb-title-width 100)
(defvar calibredb-format-width 0)
(defvar calibredb-date-width 0)
(defvar calibredb-author-width 20)
(defvar calibredb-comment-width 0)
(defvar calibredb-tag-width 0)
#+end_src
Some keybindings
#+begin_src elisp ~/.emacs.d/custom.el
(defvar calibredb-show-mode-map
(let ((map (make-sparse-keymap)))
(define-key map "?" #'calibredb-entry-dispatch)
(define-key map "o" #'calibredb-find-file)
(define-key map "O" #'calibredb-find-file-other-frame)
(define-key map "V" #'calibredb-open-file-with-default-tool)
(define-key map "s" #'calibredb-set-metadata-dispatch)
(define-key map "e" #'calibredb-export-dispatch)
(define-key map "q" #'calibredb-entry-quit)
(define-key map "y" #'calibredb-yank-dispatch)
(define-key map "," #'calibredb-quick-look)
(define-key map "." #'calibredb-dired-open)
(define-key map "\M-/" #'calibredb-rga)
(define-key map "\M-t" #'calibredb-set-metadata--tags)
(define-key map "\M-a" #'calibredb-set-metadata--author_sort)
(define-key map "\M-A" #'calibredb-set-metadata--authors)
(define-key map "\M-T" #'calibredb-set-metadata--title)
(define-key map "\M-c" #'calibredb-set-metadata--comments)
map)
"Keymap for `calibredb-show-mode'.")
#+end_src
#+begin_src elisp
(defvar calibredb-search-mode-map
(let ((map (make-sparse-keymap)))
(define-key map [mouse-3] #'calibredb-search-mouse)
(define-key map (kbd "<RET>") #'calibredb-find-file)
(define-key map "?" #'calibredb-dispatch)
(define-key map "a" #'calibredb-add)
(define-key map "A" #'calibredb-add-dir)
(define-key map "c" #'calibredb-clone)
(define-key map "d" #'calibredb-remove)
(define-key map "D" #'calibredb-remove-marked-items)
(define-key map "j" #'calibredb-next-entry)
(define-key map "k" #'calibredb-previous-entry)
(define-key map "l" #'calibredb-virtual-library-list)
(define-key map "L" #'calibredb-library-list)
(define-key map "n" #'calibredb-virtual-library-next)
(define-key map "N" #'calibredb-library-next)
(define-key map "p" #'calibredb-virtual-library-previous)
(define-key map "P" #'calibredb-library-previous)
(define-key map "s" #'calibredb-set-metadata-dispatch)
(define-key map "S" #'calibredb-switch-library)
(define-key map "o" #'calibredb-find-file)
(define-key map "O" #'calibredb-find-file-other-frame)
(define-key map "v" #'calibredb-view)
(define-key map "V" #'calibredb-open-file-with-default-tool)
(define-key map "," #'calibredb-quick-look)
(define-key map "." #'calibredb-dired-open)
(define-key map "y" #'calibredb-yank-dispatch)
(define-key map "b" #'calibredb-catalog-bib-dispatch)
(define-key map "e" #'calibredb-export-dispatch)
(define-key map "r" #'calibredb-search-refresh-and-clear-filter)
(define-key map "R" #'calibredb-search-clear-filter)
(define-key map "q" #'calibredb-search-quit)
(define-key map "m" #'calibredb-mark-and-forward)
(define-key map "f" #'calibredb-toggle-favorite-at-point)
(define-key map "x" #'calibredb-toggle-archive-at-point)
(define-key map "h" #'calibredb-toggle-highlight-at-point)
(define-key map "u" #'calibredb-unmark-and-forward)
(define-key map "i" #'calibredb-edit-annotation)
(define-key map (kbd "<DEL>") #'calibredb-unmark-and-backward)
(define-key map (kbd "<backtab>") #'calibredb-toggle-view)
(define-key map (kbd "TAB") #'calibredb-toggle-view-at-point)
(define-key map "\M-n" #'calibredb-show-next-entry)
(define-key map "\M-p" #'calibredb-show-previous-entry)
(define-key map "/" #'calibredb-search-live-filter)
(define-key map "\M-t" #'calibredb-set-metadata--tags)
(define-key map "\M-a" #'calibredb-set-metadata--author_sort)
(define-key map "\M-A" #'calibredb-set-metadata--authors)
(define-key map "\M-T" #'calibredb-set-metadata--title)
(define-key map "\M-c" #'calibredb-set-metadata--comments)
map)
"Keymap for `calibredb-search-mode'.")
#+end_src
* Annotate PDFs and EPUBs (org-noter)
#+begin_src elisp :tangle no
(use-package org-noter)
#+end_src
#+begin_src elisp :tangle ~/.emacs.d/custom.el
(defvar org-noter-notes-search-path (list (concat org-directory "/library/books")))
(defvar org-noter-default-notes-file-names '("books.org"))
#+end_src
* Link PDFs (org-noter-pdftools)
#+begin_src elisp
(use-package org-noter-pdftools
:after org-noter
:config
;; Add a function to ensure precise note is inserted
(defun org-noter-pdftools-insert-precise-note (&optional toggle-no-questions)
(interactive "P")
(org-noter--with-valid-session
(let ((org-noter-insert-note-no-questions (if toggle-no-questions
(not org-noter-insert-note-no-questions)
org-noter-insert-note-no-questions))
(org-pdftools-use-isearch-link t)
(org-pdftools-use-freepointer-annot t))
(org-noter-insert-note (org-noter--get-precise-info)))))
;; fix https://github.com/weirdNox/org-noter/pull/93/commits/f8349ae7575e599f375de1be6be2d0d5de4e6cbf
(defun org-noter-set-start-location (&optional arg)
"When opening a session with this document, go to the current location.
With a prefix ARG, remove start location."
(interactive "P")
(org-noter--with-valid-session
(let ((inhibit-read-only t)
(ast (org-noter--parse-root))
(location (org-noter--doc-approx-location (when (called-interactively-p 'any) 'interactive))))
(with-current-buffer (org-noter--session-notes-buffer session)
(org-with-wide-buffer
(goto-char (org-element-property :begin ast))
(if arg
(org-entry-delete nil org-noter-property-note-location)
(org-entry-put nil org-noter-property-note-location
(org-noter--pretty-print-location location))))))))
(with-eval-after-load 'pdf-annot
(add-hook 'pdf-annot-activate-handler-functions #'org-noter-pdftools-jump-to-note)
)
)
#+end_src
* View EPUBs (nov.el)
#+begin_src elisp :tangle no
(use-package nov
:config
(add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode))
)
#+end_src
* Zotero (helm-bibtex)
#+begin_src elisp :tangle no
(use-package helm-bibtex)
#+end_src
#+begin_src elisp :tangle ~/.emacs.d/custom.el
(defvar bibtex-completion-bibliography '("~/bibliography/zotero.bib"))
#+end_src

View File

@@ -1,46 +0,0 @@
#+TITLE: Miscellaneous Configuration
#+PROPERTY: header-args :tangle ~/.emacs.d/config.el
* Browser (eww)
#+begin_src elisp
(use-package eww
:bind* (("M-m g x" . eww)
("M-m g :" . eww-browse-with-external-browser)
("M-m g #" . eww-list-histories)
("M-m g {" . eww-back-url)
("M-m g }" . eww-forward-url))
:config
(progn
(add-hook 'eww-mode-hook 'visual-line-mode)
)
)
#+end_src
* Manage Docker in Emacs
#+begin_src elisp
(use-package docker
:bind ("C-c d" . docker)
)
#+end_src
* Periodic table of the elements
#+begin_src elisp :tangle no
(use-package chemtable)
#+end_src
* Accounting (beancount)
#+begin_src elisp :tangle no
(use-package beancount
:straight (beancount :type git :host github :repo "beancount/beancount-mode")
:config
(add-to-list 'auto-mode-alist '("\\.beancount\\'" . beancount-mode))
(add-hook 'beancount-mode-hook #'outline-minor-mode)
(define-key beancount-mode-map (kbd "C-c C-n") #'outline-next-visible-heading)
(define-key beancount-mode-map (kbd "C-c C-p") #'outline-previous-visible-heading)
(add-hook 'beancount-mode-hook #'flymake-bean-check-enable)
)
#+end_src

View File

@@ -1,233 +0,0 @@
#+TITLE: Org Mode Configuration
#+PROPERTY: header-args :tangle ~/.emacs.d/config.el
* Org Mode
** Basic setup
#+begin_src elisp
(use-package org
:config
(defvar org-outline-path-complete-in-steps nil)
:bind (("C-c l" . org-store-link)
("C-c a" . org-agenda)
("C-c c" . org-capture)
:map org-mode-map)
)
#+end_src
#+begin_src elisp
(defvar org-directory (concat (getenv "HOME") "/memex/"))
#+end_src
** Looks
Basic
#+begin_src elisp
(defvar org-pretty-entities t) ; Improve org mode looks
(defvar org-hide-emphasis-markers t) ; Hide emphasis markup
(defvar org-num-mode nil)
(defvar org-startup-folded 'shw2levels)
#+end_src
Indentation of headers
#+begin_src elisp
(defvar org-startup-indented t) ; Indent org heirarchy
(defvar org-adapt-indentation t)
(defvar org-hide-leading-stars t) ; Minimal Outline
(defvar org-odd-levels-only nil)
#+end_src
Indentation of lists
#+begin_src elisp
(setq org-list-demote-modify-bullet t)
#+end_src
Org-modern
#+begin_src elisp
(use-package org-modern
:ensure t
:config
;; Choose some fonts
(set-face-attribute 'default nil :family "sans-serif")
(set-face-attribute 'variable-pitch nil :family "sans-serif")
(set-face-attribute 'org-modern-symbol nil :family "Iosevka")
;; Edit settings
(defvar org-auto-align-tags nil)
(defvar org-tags-column 0)
(defvar org-catch-invisible-edits 'show-and-error)
(defvar org-special-ctrl-a/e t)
(defvar org-insert-heading-respect-content t)
;; Org styling, hide markup etc.
(defvar org-hide-emphasis-markers t)
(defvar org-pretty-entities t)
;; Agenda styling
(defvar org-agenda-tags-column 0)
(defvar org-agenda-block-separator ?─)
(defvar org-agenda-time-grid
'((daily today require-timed)
(800 1000 1200 1400 1600 1800 2000)
" ┄┄┄┄┄ " "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄"))
(defvar org-agenda-current-time-string
"◀── now ─────────────────────────────────────────────────")
;; Ellipsis styling
(defvar org-ellipsis "")
(set-face-attribute 'org-ellipsis nil :inherit 'default :box nil)
(global-org-modern-mode)
)
#+end_src
Highlight Sourcecode Syntax
#+begin_src elisp
(setq org-src-fontify-natively t)
(setq org-src-tab-acts-natively t)
#+end_src
Images
#+begin_src elisp
(setq org-startup-with-inline-images t)
(setq org-image-actual-width '(300))
#+end_src
** Capture
#+begin_src elisp
(defvar org-default-notes-file (concat org-directory "inbox.org"))
#+end_src
*** Org-protocol
Linux configuration
#+begin_src bash :tangle no
[Desktop Entry]
Name=org-protocol
Comment=Intercept calls from emacsclient to trigger custom actions
Categories=Other;
Keywords=org-protocol;
Icon=emacs
Type=Application
Exec=emacsclient -- %u
Terminal=false
StartupWMClass=Emacs
MimeType=x-scheme-handler/org-protocol;
#+end_src
#+begin_src bash :tangle no
update-desktop-database ~/.local/share/applications/
#+end_src
Basic configuration
#+begin_src elisp
(require 'org-protocol)
(setq org-protocol-default-buffer-for-file-links "*scratch*") ; fixes 'no buffers remain to edit error for org-protocol capturer
#+end_src
Org-protocol templates
#+begin_src elisp :tangle ~/.emacs.d/custom.el
(defvar org-capture-templates '(
("p" "Protocol"
entry
(file "inbox.org")
"* %^{Title}\nSource: %u, %c\n #+BEGIN_QUOTE\n%i\n#+END_QUOTE\n\n\n%?"
)
("L" "Protocol Link"
entry
(file "inbox.org")
"* %? [[%:link][%:description]]\n:PROPERTIES:\n:TITLE: %:description\n:URI: %:link\n:CREATED: %U\n:END:"
:prepend nil
:empty-lines 1
:created t
:kill-buffer t
)
)
)
#+end_src
#+begin_src elisp
(setq org-protocol-default-template-key "L")
#+end_src
Convert Orgzly captures to org-protocol captures standard
#+begin_src elisp
(defun my/org-convert-orgzly-to-org-protocol ()
"Reformat Orgzly bookmark at point to org-protocol bookmark."
(interactive)
(when (org-at-heading-p)
(let ((headline (nth 4 (org-heading-components))))
;; Find and store the link. Delete the link line.
(search-forward-regexp "^https?://\\S-*" nil t)
(let ((link (match-string 0)))
(beginning-of-line)
(kill-line)
;; Delete any trailing blank spaces
(org-back-to-heading)
(end-of-line)
(when (not (org-on-heading-p))
(delete-char 1)
)
;; Set new headline
(goto-char (org-entry-beginning-position))
(org-edit-headline (format "[[%s][%s]]" link headline))
;; Set new properties
(org-set-property "TITLE" headline)
(org-set-property "URI" link)
(message "Reformatted Orgzly bookmark at point to org-protocol bookmark")
)
)
)
)
#+end_src
** Exporting
#+begin_src elisp :tangle no
(setq org-export-with-smart-quotes t)
(setq org-export-backends '(beamer html latex md))
#+end_src
Export to EPUB
#+begin_src elisp :tangle no
(use-package ox-epub)
#+end_src
** org-attach
#+begin_src elisp
(defvar org-attach-id-dir (concat org-directory "/library"))
#+end_src
** Enable shell scripting support in org-babel
#+begin_src elisp
(defvar org-babel-do-load-languages 'org-babel-load-languages '((shell . t)))
#+end_src
** Insert org-mode links from clipboard
#+begin_src elisp :tangle no
(use-package org-cliplink
:bind
(("C-x p i" . org-cliplink))
)
#+end_src
** Deft
#+begin_src elisp :tangle no
(use-package deft
:commands (deft)
:init
(defvar deft-extensions '("org"))
(defvar deft-recursive nil)
(defvar deft-use-filename-as-title t)
:config
(defvar deft-directory org-directory)
(defvar deft-recursive t)
(defvar deft-strip-summary-regexp ":PROPERTIES:\n\\(.+\n\\)+:END:\n")
(defvar deft-use-filename-as-title t)
:bind ("C-c n d" . deft)
)
#+end_src

View File

@@ -1,140 +0,0 @@
#+TITLE: Org-Roam Configuration
#+PROPERTY: header-args :tangle ~/.emacs.d/config.el
* Org-roam
** Basic org-roam setup
#+begin_src elisp
(use-package org-roam
:init (setq org-roam-v2-ack t) ;; Acknowledge V2 upgrade
:after org
:config
(org-roam-db-autosync-enable)
(require 'org-roam-dailies)
:bind (
("C-c n f" . org-roam-node-find)
("C-c n g" . org-roam-graph)
("C-c n r" . org-roam-node-random)
("C-c n h" . org-roam-node-convert-headline)
("C-c n i" . org-roam-node-insert)
("C-c n o" . org-id-get-create)
("C-c n t" . org-roam-tag-add)
("C-c n a" . org-roam-alias-add)
("C-c n l" . org-roam-buffer-display-dedicated)
)
)
#+end_src
#+begin_src elisp
(setq org-roam-directory (concat org-directory "notes"))
(setq org-roam-dailies-directory (concat org-directory "daily"))
#+end_src
#+begin_src elisp :tangle no
(use-package sqlite3)
(require 'sqlite3)
#+end_src
Include subdirectories in org-roam
#+begin_src elisp
(setq org-roam-file-exclude-regexp "^[.][.]?/")
#+end_src
** Display in org-roam-buffer
#+begin_src elisp :tangle no
(setq org-roam-mode-sections
(list #'org-roam-backlinks-section
#'org-roam-reflinks-section
#'org-roam-unlinked-references-section
)
)
#+end_src
** Filter org-roam nodes find by tag
#+begin_src elisp :tangle no
(defun my/org-roam-node-has-tag (node tag)
"Filter function to check if the given NODE has the specified TAG."
(member tag (org-roam-node-tags node))
)
(defun my/org-roam-node-find-by-tag ()
"Find and open an Org-roam node based on a specified tag."
(interactive)
(let ((tag (read-string "Enter tag: ")))
(org-roam-node-find nil nil (lambda (node) (my/org-roam-node-has-tag node tag))))
)
#+end_src
** org-roam-capture templates
#+begin_src elisp
(setq org-roam-capture-templates
'(
("L" "link" plain
(function org-roam--capture-get-point)
"%?"
:file-name "web/%<%Y-%m-%dT%H%M%S>.org"
:head "#+TITLE: ${title}\n#+CREATED: %<%Y-%m-%dT%H%M%S>"
:immediate-finish t
:unnarrowed t
)
("h" "hugo post" plain
"%?"
:target (file+head "posts/${slug}.org"
"#+TITLE: ${title}\n#+DATE: %U\n#+HUGO_BASE_DIR: ~/gharbeia.net\n#+HUGO_SECTION: ./posts\n#+HUGO_AUTO_SET_LASTMOD: t\n#+HUGO_TAGS: article\n#+HUGO_DRAFT: true\n")
:immediate-finish t
:unnarrowed t
)
("p" "person" plain
"%?"
:if-new (file+head "people/${slug}.org"
"#+TITLE: ${title}")
:immediate-finish t
:unnarrowed t
)
)
)
#+end_src
#+begin_src elisp
(setq org-roam-dailies-capture-templates
'(
("d" "daily" plain
""
:target ("file+heaed %<%Y-%m-%d>.org" "#+title: %<%Y-%m-%d>\n\n")
:immediate-finish t
)
)
)
#+end_src
** Move org header to org-roam-daily
#+begin_src elisp :tangle no
(defun my/org-move-entry-to-daily-notes ()
"Move the current org-mode headline to the daily notes file based on its :CREATED: property."
(interactive)
(let*
(
(created-prop (org-entry-get nil "CREATED"))
(created-date (when created-prop
(org-parse-time-string created-prop)))
(year (nth 5 created-date)) ; Extract year (6th element)
(month (nth 4 created-date)) ; Extract month (5th element)
(day (nth 3 created-date)) ; Extract day (4th element)
(target-date (format "%04d-%02d-%02d" year month day)) ; Format date string
(target-file (org-roam-dailies-goto target-date))
)
(when target-file
(org-cut-subtree)
(find-file target-file)
(goto-char (point-max))
(unless (bolp) (newline))
(org-paste-subtree)
)
)
)
#+end_src

View File

@@ -1,73 +0,0 @@
#+TITLE: Shell Configuration
#+PROPERTY: header-args :tangle ~/.emacs.d/config.el
* Shell
** Bash completion
#+begin_src elisp
(use-package bash-completion
:config
(require 'bash-completion)
(bash-completion-setup)
)
#+end_src
#+begin_src elisp
(defvar shell-dynamic-complete-functions t)
#+end_src
** Eshell
Add programmable bash completion to Emacs shell-mode
#+begin_src elisp :tangle no
(require 'bash-completion)
(add-hook 'eshell-mode-hook
(lambda ()
(add-hook 'completion-at-point-functions
'bash-completion-capf-nonexclusive nil t
)
)
)
#+end_src
Use colors in eshell
#+begin_src elisp :tangle no
(use-package xterm-color
:commands (xterm-color-filter)
)
(use-package eshell
:after xterm-color
:config
(define-key eshell-hist-mode-map (kbd "M-r") #'consult-history)
(add-hook 'eshell-mode-hook
(lambda ()
(setenv "TERM" "xterm-256color")))
(add-hook 'eshell-before-prompt-hook (setq xterm-color-preserve-properties t))
(add-to-list 'eshell-preoutput-filter-functions 'xterm-color-filter)
(setq eshell-output-filter-functions
(remove 'eshell-handle-ansi-color eshell-output-filter-functions)
)
)
#+end_src
Eshell completion
#+begin_src elisp :tangle no
(add-hook 'eshell-mode-hook
(lambda ()
(add-hook 'completion-at-point-functions
'bash-completion-capf-nonexclusive nil t)))
#+end_src
Emulate A Terminal (EAT)
#+begin_src elisp :tangle no
(use-package eat
:config
;; For `eat-eshell-mode'.
(add-hook 'eshell-load-hook #'eat-eshell-mode)
;; For `eat-eshell-visual-command-mode'.
(add-hook 'eshell-load-hook #'eat-eshell-visual-command-mode)
)
#+end_src

View File

@@ -1,255 +0,0 @@
#+TITLE: Reading and Writing Configuration
#+PROPERTY: header-args :tangle ~/.emacs.d/config.el
* Text and Case
** Convert DOuble capitals to single capitals
#+begin_src elisp :tangle no
(defun my/dcaps-to-scaps ()
"Convert word in DOuble CApitals to Single Capitals."
(interactive)
(and (= ?w (char-syntax (char-before)))
(save-excursion
(and (if (called-interactively-p)
(skip-syntax-backward "w")
(= -3 (skip-syntax-backward "w"))
)
(let (case-fold-search)
(looking-at "\\b[[:upper:]]\\{2\\}[[:lower:]]")
)
(capitalize-word 1)
)
)
)
)
#+end_src
Then, lets define a minor mode for it to be activated.
#+begin_src elisp :tangle no
(define-minor-mode my-dubcaps-mode
"Toggle 'my-dubcaps-mode' and convert words in DOuble CApitals to Single Capitals as you type."
:init-value nil
:lighter (" DC")
(if my-dubcaps-mode
(add-hook 'post-self-insert-hook #'my/dcaps-to-scaps nil 'local)
(remove-hook 'post-self-insert-hook #'my/dcaps-to-scaps 'local)))
#+end_src
Finally, lets add a hook so that it is on for all the text files Emacs opens.
#+begin_src elisp :tangle no
(add-hook 'text-mode-hook #'my-dubcaps-mode)
#+end_src
Also, since we add a minor mode string (it might be useful sometimes), currently I prefer to diminish it.
#+begin_src elisp :tangle no
(defun my/diminish-dubcaps ()
(interactive)
(diminish 'my-dubcaps-mode ""))
(add-hook 'my-dubcaps-mode-hook 'my/diminish-dubcaps)
#+end_src
* Reading and Writing
** Move correctly over camelCased words
#+begin_src elisp
(subword-mode)
#+end_src
** Understand the more common sentence with double space
#+begin_src elisp
(setq sentence-end-double-space nil)
#+end_src
** Join lines into paragraph
#+begin_src elisp
(defun my/fill-or-unfill-paragraph (&optional unfill region)
"Fill paragraph (or REGION). With the prefix argument UNFILL, fill it instead."
(interactive (progn
(barf-if-buffer-read-only)
(list (if current-prefix-arg 'fill) t)))
(let ((fill-column (if unfill fill-column (point-max))))
(fill-paragraph nil region)))
(bind-key "M-q" 'my/fill-or-unfill-paragraph)
#+end_src
#+begin_src elisp
(defun my/fill-or-unfill-all-paragraphs (&optional unfill)
"Fill or unfill all paragraphs in the current buffer.
With the prefix argument UNFILL, fill them instead."
(interactive (list (if current-prefix-arg 'fill)))
(let ((fill-column (if unfill fill-column (point-max))))
(save-excursion
(goto-char (point-min))
(while (not (eobp))
(fill-paragraph nil t)
(forward-paragraph)))))
(bind-key "M-Q" 'my/fill-or-unfill-all-paragraphs)
#+end_src
#+begin_src elisp
(remove-hook 'text-mode-hook #'turn-on-auto-fill)
(add-hook 'text-mode-hook 'turn-on-visual-line-mode)
#+end_src
** Expand some words with auto-correct
#+begin_src elisp :tangle no
(setq save-abbrevs 'silently)
(setq-default abbrev-mode t)
#+end_src
** ediff
#+begin_src elisp :tangle no
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
(setq ediff-split-window-function 'split-window-horizontally)
#+end_src
** tramp
#+begin_src elisp :tangle no
(setq tramp-default-method "ssh"
tramp-backup-directory-alist backup-directory-alist
tramp-ssh-controlmaster-options "ssh")
#+end_src
** Clean up space
#+begin_src elisp :tangle no
(bind-key "M-SPC" 'cycle-spacing)
#+end_src
** Transform <a href> links into org links
#+begin_src elisp :tangle no
(defun my/transform-html-links-to-org ()
"Transform all HTML <a> links in the current buffer into 'org-mode' links."
(interactive)
(goto-char (point-min))
(while (re-search-forward "<a href=\"\\(.*?\\)\">\\(.*?\\)</a>" nil t)
(replace-match (org-make-link-string (match-string 1) (match-string 2)))))
#+end_src
** Count words per minute
#+begin_src elisp :tangle no
(require 'org-clock)
(defun my/org-entry-wpm ()
(interactive)
(save-restriction
(save-excursion
(org-narrow-to-subtree)
(goto-char (point-min))
(let* ((words (count-words-region (point-min) (point-max)))
(minutes (org-clock-sum-current-item))
(wpm (/ words minutes)))
(message "WPM: %d (words: %d, minutes: %d)" wpm words minutes)
(kill-new (number-to-string wpm))
)
)
)
)
#+end_src
** Enable dict mode
#+begin_src elisp :tangle no
(setq dictionary-server "automatic")
#+end_src
** Pick out passive voice and weasel words
#+begin_src elisp :tangle no
(use-package writegood-mode
:diminish writegood-mode
:config
(progn (add-hook 'text-mode-hook 'writegood-mode))
)
#+end_src
** Org-babel docker
#+begin_src elisp :tangle no
(use-package ob-docker-build
:straight (ob-docker-build :type git :host github :repo "ifitzpat/ob-docker-build")
:defer t
:config
(add-to-list 'org-babel-load-languages '(docker-build . t))
(org-babel-do-load-languages 'org-babel-load-languages org-babel-load-languages)
)
#+end_src
* Spelling and syntax
** Spell checking
This requires installation of hunspell
#+begin_src bash :tangle no
sudo apt install hunspell
#+end_src
#+begin_src elisp
(use-package flyspell
:config (setq ispell-program-name "hunspell"
ispell-default-dictionary "en_US"
)
:diminish (flyspell-mode . "φ")
:hook (text-mode . flyspell-mode)
:bind (
("M-<f7>" . flyspell-buffer)
("<f7>" . flyspell-word)
("C-;" . flyspell-auto-correct-previous-word)
)
)
#+end_src
** Flyspell correct
#+begin_src elisp :tangle no
(use-package flyspell-correct
:after flyspell
:bind (:map flyspell-mode-map ("C-;" . flyspell-correct-wrapper))
)
#+end_src
** Flycheck
Needs external checkers installed
#+begin_src elisp
(use-package flycheck
:init (global-flycheck-mode)
:diminish (flycheck-mode . "")
:config
(add-hook 'after-init-hook #'global-flycheck-mode)
(setq flycheck-emacs-lisp-load-path 'inherit)
(setq flycheck-emacs-lisp-load-path (concat user-emacs-directory "straight/build"))
)
#+end_src
** Flycheck bash
#+begin_src bash :tangle no
sudo apt install devscripts
#+end_src
#+begin_src elisp :tangle no
(use-package flycheck-checkbashisms
:config
(flycheck-checkbashisms-setup)
)
#+end_src
** Yaml
#+begin_src elisp :tangle no
(use-package yaml-mode
:config
(add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode))
(add-to-list 'auto-mode-alist '("\\.yaml\\'" . yaml-mode))
)
#+end_src
** Docker
#+begin_src elisp :tangle no
(use-package docker-compose-mode)
#+end_src

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,10 @@
(let ((config-dir "~/memex/system/")) (let ((config-dir "~/memex/projects/dotemacs/modules/"))
;; Load the core settings, including package management and essential setup. ;; Load the core settings, including package management and essential setup.
(org-babel-load-file (expand-file-name "emacs-core.org" config-dir)) (org-babel-load-file (expand-file-name "emacs-core.org" config-dir))
;; Load UI and theme settings
(org-babel-load-file (expand-file-name "emacs-ui.org" config-dir))
;; Load early init settings (if separate and not fully covered by core) ;; Load early init settings (if separate and not fully covered by core)
;; (org-babel-load-file (expand-file-name "emacs-early-init.org" config-dir)) ;; (org-babel-load-file (expand-file-name "emacs-early-init.org" config-dir))

View File

@@ -6,10 +6,13 @@
This file loads the modular Emacs configuration files. It should be the primary way Emacs is configured, replacing or integrating with the original `~/.emacs`, `~/.emacs.d/init.el`, `~/.emacs.d/early-init.el`, and `~/.emacs.d/config.el`. This file loads the modular Emacs configuration files. It should be the primary way Emacs is configured, replacing or integrating with the original `~/.emacs`, `~/.emacs.d/init.el`, `~/.emacs.d/early-init.el`, and `~/.emacs.d/config.el`.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(let ((config-dir "~/memex/system/")) (let ((config-dir "~/memex/projects/dotemacs/modules/"))
;; Load the core settings, including package management and essential setup. ;; Load the core settings, including package management and essential setup.
(org-babel-load-file (expand-file-name "emacs-core.org" config-dir)) (org-babel-load-file (expand-file-name "emacs-core.org" config-dir))
;; Load UI and theme settings
(org-babel-load-file (expand-file-name "emacs-ui.org" config-dir))
;; Load early init settings (if separate and not fully covered by core) ;; Load early init settings (if separate and not fully covered by core)
;; (org-babel-load-file (expand-file-name "emacs-early-init.org" config-dir)) ;; (org-babel-load-file (expand-file-name "emacs-early-init.org" config-dir))

View File

@@ -79,13 +79,13 @@
:embedding-model "nomic-embed-text")) :embedding-model "nomic-embed-text"))
) )
(use-package org-agent (use-package opencortex
:straight nil :straight nil
:load-path "~/.local/share/org-agent/src" :load-path "~/.local/share/opencortex/src"
:commands (org-agent-connect org-agent-disconnect) :commands (opencortex-connect opencortex-disconnect)
:init :init
(setq org-agent-host "127.0.0.1") (setq opencortex-host "127.0.0.1")
(setq org-agent-port 9105) (setq opencortex-port 9105)
(setq org-agent-executable-path "~/.local/share/org-agent/bin/org-agent-server") (setq opencortex-executable-path "~/.local/share/opencortex/bin/opencortex-server")
:config :config
(message "org-agent: Local brain configured at %s" org-agent-executable-path)) (message "opencortex: Local brain configured at %s" opencortex-executable-path))

View File

@@ -1,21 +1,120 @@
#+TITLE: Emacs AI Configuration #+TITLE: AI Configuration
#+property: header-args :tangle ~/.emacs.d/modules/ai.el #+PROPERTY: header-args :tangle yes
* AI Settings
** Ellama
#+begin_src elisp :tangle yes
;; YOU DON'T NEED NONE OF THIS CODE FOR SIMPLE INSTALL
;; IT IS AN EXAMPLE OF CUSTOMIZATION.
(use-package ellama
:init
(require 'llm-openai)
;; setup key bindings
(setq ellama-keymap-prefix "C-c e")
)
#+end_src
#+begin_src elisp :tangle yes
(setopt ellama-providers
'(
;; Ollama Provider (added here with a name)
("ollama" . (make-llm-ollama
;; Consider a dedicated embedding model if gemma isn't ideal for it.
:chat-model "gemma3:latest"
:embedding-model "gemma3:latest" ; Or e.g., "nomic-embed-text"
:default-chat-non-standard-params '(("num_ctx" . 8192))))
("openai" . (make-llm-openai
:key (auth-source-pass-get "api-key" "www/openai.com/amr@gharbeia.net")
:chat-model "gpt-4o"
:embedding-model "text-embedding-3-large"))
("groq" . (make-llm-openai-compatible
:url "https://api.groq.com/openai/v1"
:key (auth-source-pass-get "api-key" "www/console.groq.com/groq@amr.gharbeia.net")
;; Check Groq console for available models, these might change
:chat-model "llama3-70b-8192" ; Example, verify on Groq
:embedding-model "llama3-70b-8192")) ; Groq might not offer dedicated embedding models via this API
))
;; --- Set Active Providers ---
;; Choose your default provider from the list above by its name
(setopt ellama-provider "ollama") ; Or "ollama", "openai", "groq"
;; You can specify different providers for different tasks if needed
(setopt ellama-translation-provider "ollama")
(setopt ellama-naming-provider "ollama")
(setopt ellama-naming-scheme 'ellama-generate-name-by-llm)
(setq llm-debug t)
#+end_src
* ellama
#+begin_src elisp #+begin_src elisp
(use-package ellama (use-package ellama
:ensure t :ensure t
:bind ("C-c e" . ellama) :bind ("C-c e" . ellama)
;; send last message in chat buffer with C-c C-c
:hook (org-ctrl-c-ctrl-c-final . ellama-chat-send-last-message) :hook (org-ctrl-c-ctrl-c-final . ellama-chat-send-last-message)
:init (setopt ellama-auto-scroll t) :init (setopt ellama-auto-scroll t)
:config :config
;; show ellama context in header line in all buffers
(ellama-context-header-line-global-mode +1) (ellama-context-header-line-global-mode +1)
(ellama-session-header-line-global-mode +1) ;; show ellama session id in header line in all buffers
(ellama-session-header-line-global-mode +1))
#+end_src
** GPTel
#+begin_src elisp :tangle yes
(use-package gptel)
#+end_src
#+begin_src elisp :tangle yes
(setq gptel-api-key (auth-source-pass-get "api-key" "www/console.groq.com/groq@amr.gharbeia.net"))
#+end_src
#+begin_src elisp :tangle yes
(gptel-make-openai "Groq" ;Any name you want
:host "api.groq.com"
:endpoint "/openai/v1/chat/completions"
:stream t
:key (auth-source-pass-get "api-key" "www/console.groq.com/groq@amr.gharbeia.net") ;can be a function that returns the key
:models '(llama-3.1-70b-versatile
llama-3.1-8b-instant
llama3-70b-8192
llama3-8b-8192
mixtral-8x7b-32768
gemma-7b-it))
#+end_src
** Elisa
#+begin_src elisp :tangle yes
(use-package elisa
:defer t
:init
(setopt elisa-limit 5)
(require 'llm-ollama)
(setopt elisa-embeddings-provider (make-llm-ollama :embedding-model "nomic-embed-text"))
(setopt elisa-chat-provider (make-llm-ollama
:chat-model "sskostyaev/openchat:8k-rag"
:embedding-model "nomic-embed-text"))
) )
#+end_src #+end_src
* Providers ** OpenCortex (Local Foundry)
#+begin_src elisp
(setq llm-debug t) #+begin_src elisp :tangle yes
;; Note: API keys should be handled via auth-source as seen in original config (use-package opencortex
:straight nil
:load-path "~/.local/share/opencortex/src"
:commands (opencortex-connect opencortex-disconnect)
:init
(setq opencortex-host "127.0.0.1")
(setq opencortex-port 9105)
(setq opencortex-executable-path "~/.local/share/opencortex/bin/opencortex-server")
:config
(message "opencortex: Local brain configured at %s" opencortex-executable-path))
#+end_src #+end_src

View File

@@ -16,6 +16,36 @@
(unless (file-directory-p (expand-file-name "~/.emacs.d/straight/versions")) (make-directory (expand-file-name "~/.emacs.d/straight/versions") t)) (unless (file-directory-p (expand-file-name "~/.emacs.d/straight/versions")) (make-directory (expand-file-name "~/.emacs.d/straight/versions") t))
(use-package org) (use-package org)
(use-package ef-themes
:config
;; If you like two specific themes and want to switch between them, you
;; can specify them in `ef-themes-to-toggle' and then invoke the command
;; `ef-themes-toggle'. All the themes are included in the variable
;; `ef-themes-collection'.
(setq ef-themes-to-toggle '(ef-summer ef-winter))
(setq ef-themes-headings ; read the manual's entry or the doc string
'((0 variable-pitch light 1.9)
(1 variable-pitch light 1.8)
(2 variable-pitch regular 1.7)
(3 variable-pitch regular 1.6)
(4 variable-pitch regular 1.5)
(5 variable-pitch 1.4) ; absence of weight means `bold'
(6 variable-pitch 1.3)
(7 variable-pitch 1.2)
(t variable-pitch 1.1)))
;; They are nil by default...
(setq ef-themes-mixed-fonts t)
(setq ef-themes-variable-pitch-ui t)
;; Disable all other themes to avoid awkward blending:
(mapc #'disable-theme custom-enabled-themes)
;; Load the theme of choice:
(load-theme 'ef-winter :no-confirm)
)
(setq custom-file (expand-file-name "custom.el" user-emacs-directory)) (setq custom-file (expand-file-name "custom.el" user-emacs-directory))
(when (file-exists-p custom-file) (load custom-file)) (when (file-exists-p custom-file) (load custom-file))
@@ -49,7 +79,7 @@
(add-hook 'server-done-hook (lambda () (delete-frame))) (add-hook 'server-done-hook (lambda () (delete-frame)))
(desktop-save-mode t) ;; (desktop-save-mode t)
(use-package password-store) (use-package password-store)

View File

@@ -1,16 +1,18 @@
#+TITLE: Emacs Core Configuration #+TITLE: Core Emacs Configuration
#+property: header-args :tangle ~/.emacs.d/modules/core.el #+PROPERTY: header-args :tangle yes
* early-init.el * Initialization Bootstrap
For straight.el to pick up before package.el
#+begin_src elisp :tangle ~/.emacs.d/early-init.el This section tangles directly to ~/.emacs to bootstrap the entire system.
(setq package-enable-at-startup nil)
#+end_src
* Straight.el Bootstrap
#+begin_src elisp :tangle ~/.emacs #+begin_src elisp :tangle ~/.emacs
;;; .emacs --- Global settings -*- lexical-binding: t; -*-
(setq gc-cons-threshold (* 500 1024 1024))
(add-hook 'after-init-hook (lambda () (setq gc-cons-threshold (* 5 1024 1024))))
(setq straight-repository-branch "develop") (setq straight-repository-branch "develop")
(eval-and-compile (eval-and-compile
(defvar bootstrap-version) (defvar bootstrap-version)
(let ((bootstrap-file (let ((bootstrap-file
@@ -26,30 +28,172 @@ For straight.el to pick up before package.el
(load bootstrap-file nil 'nomessage)) (load bootstrap-file nil 'nomessage))
(straight-use-package 'use-package) (straight-use-package 'use-package)
) (straight-use-package 'org))
(setq straight-use-package-by-default t) (setq straight-use-package-by-default t)
(require 'ob-tangle)
;; Load the modular configuration starting from dotemacs.org
(org-babel-load-file (expand-file-name "~/memex/projects/dotemacs/dotemacs.org"))
(provide '.emacs)
#+end_src #+end_src
* Server and Performance * Front matter
#+begin_src elisp :tangle ~/.emacs.d/early-init.el
(require 'server)
(unless (server-running-p) (server-start))
(defvar server-max-buffers 100)
#+end_src
#+begin_src elisp
;;; emacs-core.el --- Summary
;;; Commentary:
;;; Code:
;; -*- lexical-binding: t; -*-
#+end_src
* Garbage collector
Increase threshold to 500 MB to ease startup
#+begin_src elisp #+begin_src elisp
(setq gc-cons-threshold (* 500 1024 1024)) (setq gc-cons-threshold (* 500 1024 1024))
#+end_src
Decrease threshold to 5 MB after init
#+begin_src elisp
(add-hook 'after-init-hook (lambda () (setq gc-cons-threshold (* 5 1024 1024)))) (add-hook 'after-init-hook (lambda () (setq gc-cons-threshold (* 5 1024 1024))))
#+end_src #+end_src
* System Information * Straight.el and use-package
#+begin_src elisp :tangle ~/.emacs.d/custom.el
Integrate use-package and straight
#+begin_src elisp
(setq straight-use-package-by-default t)
(require 'use-package)
(straight-use-package 'diminish)
(require 'diminish)
#+end_src
Make sure Org is installed (straight.el)
#+begin_src elisp
(unless (file-directory-p (expand-file-name "~/.emacs.d/straight/versions")) (make-directory (expand-file-name "~/.emacs.d/straight/versions") t))
(use-package org)
#+end_src
* UI and Themes
#+begin_src elisp
(use-package ef-themes
:config
;; If you like two specific themes and want to switch between them, you
;; can specify them in `ef-themes-to-toggle' and then invoke the command
;; `ef-themes-toggle'. All the themes are included in the variable
;; `ef-themes-collection'.
(setq ef-themes-to-toggle '(ef-summer ef-winter))
(setq ef-themes-headings ; read the manual's entry or the doc string
'((0 variable-pitch light 1.9)
(1 variable-pitch light 1.8)
(2 variable-pitch regular 1.7)
(3 variable-pitch regular 1.6)
(4 variable-pitch regular 1.5)
(5 variable-pitch 1.4) ; absence of weight means `bold'
(6 variable-pitch 1.3)
(7 variable-pitch 1.2)
(t variable-pitch 1.1)))
;; They are nil by default...
(setq ef-themes-mixed-fonts t)
(setq ef-themes-variable-pitch-ui t)
;; Disable all other themes to avoid awkward blending:
(mapc #'disable-theme custom-enabled-themes)
;; Load the theme of choice:
(load-theme 'ef-winter :no-confirm)
)
#+end_src
* Custom file
#+begin_src elisp
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
(when (file-exists-p custom-file) (load custom-file))
#+end_src
* System information
#+begin_src elisp
(defvar my-laptop-p (equal (system-name) "lilitop")) (defvar my-laptop-p (equal (system-name) "lilitop"))
(defvar my-server-p (and (equal (system-name) "localhost") (equal user-login-name "root"))) (defvar my-server-p (and (equal (system-name) "localhost") (equal user-login-name "root")))
(defvar my-phone-p (not (null (getenv "ANDROID_ROOT"))) (defvar my-phone-p (not (null (getenv "ANDROID_ROOT")))
"If non-nil, GNU Emacs is running on Termux.") "If non-nil, GNU Emacs is running on Termux.")
(when my-phone-p (defvar gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")) (when my-phone-p (defvar gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3"))
(global-auto-revert-mode) (global-auto-revert-mode) ; simplifies syncing
(savehist-mode) #+end_src
(desktop-save-mode t)
* Persistent history
#+begin_src elisp
(savehist-mode)
#+end_src
* Disable Syntax Checkers (Diagnostic)
#+begin_src elisp
(when (fboundp 'flycheck-mode)
(setq flycheck-global-modes nil)
(global-flycheck-mode -1))
(when (fboundp 'flymake-mode)
(setq help-at-pt-display-when-idle t)
;; Disable flymake in all buffers
(add-hook 'find-file-hook (lambda () (flymake-mode -1))))
#+end_src
* Backup and versioning
#+begin_src emacs-lisp
(use-package magit)
#+end_src
* Personal information
#+begin_src elisp
(setq user-full-name "Amr Gharbeia")
(defvar email-address "amr@gharbeia.net")
(defvar calendar-latitude 39.0)
(defvar calendar-longitude -77.1)
(defvar calendar-location-name "Washington, DC")
(defvar calendar-time-zone -300)
(defvar calendar-standard-time-zone-name "EST")
(defvar calendar-daylight-time-zone-name "EDT")
#+end_src
* Saving Emacs Sessions
Close frame when done
#+begin_src elisp
(add-hook 'server-done-hook (lambda () (delete-frame)))
#+end_src
Save desktop session
#+begin_src elisp
;; (desktop-save-mode t)
#+end_src
* Security
#+begin_src elisp
(use-package password-store)
#+end_src
#+begin_src elisp
(use-package auth-source
:config (auth-source-pass-enable)
)
#+end_src
* End matter
#+begin_src elisp
(provide 'emacs-core)
;;; emacs-core.el ends here
#+end_src #+end_src

View File

@@ -1,30 +1,112 @@
#+TITLE: Emacs GTD Configuration #+TITLE: GTD & Agenda Configuration
#+property: header-args :tangle ~/.emacs.d/modules/gtd.el #+PROPERTY: header-args :tangle yes
* org-gtd * Agenda
Basic agenda settings
#+begin_src elisp #+begin_src elisp
(use-package org-gtd (setq org-deadline-warning-days 7)
:defer t (setq org-agenda-skip-additional-timestamps-same-entry t)
:init (setq org-gtd-update-ack "3.0.0") (setq org-agenda-span 'fortnight)
:after org (setq org-agenda-tags-column 'auto)
:config (setq org-agenda-skip-scheduled-if-deadline-is-shown t)
(setq org-edna-use-inheritance t)
(org-edna-mode)
:bind (
("C-c d c" . org-gtd-capture)
("C-c d e" . org-gtd-engage)
("C-c d p" . org-gtd-process-inbox)
:map org-gtd-clarify-map
("C-c c" . org-gtd-organize)
)
)
#+end_src #+end_src
* GTD Directory and Areas Agenda files
#+begin_src elisp #+begin_src elisp
(defvar org-gtd-directory org-directory) (setq org-agenda-files (list
(defvar org-gtd-organize-hooks '(org-gtd-set-area-of-focus)) (concat org-directory "/inbox.org")
(defvar org-gtd-areas-of-focus '( (concat org-directory "/gtd.org")
(concat org-directory "/org-gtd-tasks.org")
)
)
#+end_src
Better agenda views
#+begin_src elisp :tangle yes
(use-package org-super-agenda)
#+end_src
* To-do
Basic todo
#+begin_src elisp
(setq org-todo-keywords
'(
(sequence "TODO(t)" "NEXT(n)" "WAIT(w@/!)" "|" "DONE(d!)" "CNCL(c@)")
)
)
(setq org-todo-keyword-faces
'(
("TODO" :foreground "red" :weight bold)
("NEXT" :foreground "red" :weight bold)
("WAIT" :foreground "yellow" :weight bold)
("DONE" :foreground "green" :weight bold)
("CNCL" :foreground "blue" :weight bold)
)
)
(setq org-enforce-todo-dependencies t)
(setq org-tags-exclude-from-inheritance '("crypt" "!private"))
#+end_src
Switch entry to 'DONE' when all subentries are done
#+begin_src elisp
(defun org-summary-todo (n-done n-not-done)
"Switch entry to 'DONE' when all subentries are done, to 'TODO' otherwise.
Uses N-DONE and N-NOT-DONE"
(let (org-log-done org-log-states) ; turn off logging
(org-todo (if (= n-not-done 0) "DONE" "TODO")
)
)
)
;; (add-hook 'org-after-todo-statistics-hook #'org-summary-todo)
#+end_src
* Getting Things Done (GTD)
#+begin_src elisp
(use-package f)
(use-package dash)
(use-package s)
(use-package org-edna
:config
(setq org-edna-use-inheritance t)
(org-edna-mode))
(use-package org-gtd
:straight (org-gtd :type git :host github :repo "Trevoke/org-gtd.el")
:demand t
:init (setq org-gtd-update-ack "4.0.0")
:config
(setq org-gtd-keyword-mapping
'((todo . "TODO")
(next . "NEXT")
(wait . "WAIT")
(done . "DONE")
(canceled . "CNCL")))
(setq org-gtd-custom-node-paths
(list (list "Actionable" (expand-file-name "~/memex/gtd.org") "Actions")
(list "Legacy" (expand-file-name "~/memex/org-gtd-tasks.org") "Actions")
(list "Projects" (expand-file-name "~/memex/gtd.org") "Projects")
(list "Incubate" (expand-file-name "~/memex/gtd.org") "Incubate")))
(org-gtd-mode)
)
(global-set-key (kbd "C-c d c") #'org-gtd-capture)
(global-set-key (kbd "C-c d e") #'org-gtd-engage)
(global-set-key (kbd "C-c d p") #'org-gtd-process-inbox)
(with-eval-after-load 'org-gtd
(define-key org-gtd-clarify-map (kbd "C-c c") #'org-gtd-organize))
#+end_src
#+begin_src elisp
(setq org-gtd-directory org-directory)
(setq org-gtd-organize-hooks '(org-gtd-set-area-of-focus))
(setq org-gtd-areas-of-focus '(
"Atoms" "Atoms"
"Bits" "Bits"
"Cells" "Cells"
@@ -44,5 +126,41 @@
"Egypt" "Egypt"
) )
) )
(defvar org-gtd-clarify-show-horizons 'right) (setq org-gtd-clarify-show-horizons 'right)
#+end_src
Logging
#+begin_src elisp
(setq org-log-into-drawer "LOGBOOK")
#+end_src
Clocking work in drawer
#+begin_src elisp :tangle yes
(setq org-clock-into-drawer t)
#+end_src
Habits
#+begin_src elisp :tangle yes
(setq org-habit-graph-column 80)
(setq org-habit-show-habits-only-for-today nil)
#+end_src
* Refile
org-refile targets
#+begin_src elisp
(setq org-refile-targets '((nil :maxlevel . 9)
(org-agenda-files :maxlevel . 9)
)
)
#+end_src
Set type of refile targets completion
#+begin_src elisp
(setq org-outline-path-complete-in-steps nil)
#+end_src
Allow refiling to new parents created on the go after confirmation
#+begin_src elisp
(setq org-refile-allow-creating-parent-nodes 'confirm)
#+end_src #+end_src

View File

@@ -21,6 +21,9 @@
(setq org-noter-notes-search-path (list (expand-file-name "~/memex/library/books"))) (setq org-noter-notes-search-path (list (expand-file-name "~/memex/library/books")))
(setq org-noter-default-notes-file-names '("books.org"))) (setq org-noter-default-notes-file-names '("books.org")))
(setq org-noter-notes-search-path (list (concat org-directory "/library/books")))
(setq org-noter-default-notes-file-names '("books.org"))
(use-package org-noter-pdftools (use-package org-noter-pdftools
:after org-noter :after org-noter
:config :config
@@ -62,3 +65,5 @@ With a prefix ARG, remove start location."
) )
(use-package helm-bibtex) (use-package helm-bibtex)
(setq bibtex-completion-bibliography '("~/bibliography/zotero.bib"))

View File

@@ -1,39 +1,101 @@
#+TITLE: Emacs Media and E-books Configuration #+TITLE: Media and Books Configuration
#+property: header-args :tangle ~/.emacs.d/modules/media.el #+PROPERTY: header-args :tangle yes
* Read ebooks (calibredb)
* calibredb
#+begin_src elisp #+begin_src elisp
(use-package calibredb (use-package calibredb
:defer t :defer t
:config :config
(setq calibredb-format-all-the-icons t) (setq calibredb-format-all-the-icons t)
(setq calibredb-format-icons-in-terminal t) (setq calibredb-format-icons-in-terminal t))
) #+end_src
(defvar calibredb-root-dir (concat (getenv "HOME") "/library/books")) #+begin_src elisp
(defvar calibredb-root-dir (expand-file-name "~/memex/library/books"))
(defvar calibredb-db-dir (expand-file-name "metadata.db" calibredb-root-dir)) (defvar calibredb-db-dir (expand-file-name "metadata.db" calibredb-root-dir))
(defvar calibredb-id-width 6) (defvar calibredb-id-width 6)
(defvar calibredb-title-width 100) (defvar calibredb-title-width 100)
(defvar calibredb-author-width 20)
#+end_src #+end_src
* nov.el (EPUB Viewer) * PDF Tools
#+begin_src elisp #+begin_src elisp
(use-package pdf-tools
:mode ("\\.pdf\\'" . pdf-view-mode)
:config
(pdf-tools-install :no-query)
(setq-default pdf-view-display-size 'fit-page)
(setq pdf-annot-activate-created-annotations t))
#+end_src
* Annotate PDFs and EPUBs (org-noter)
#+begin_src elisp
(use-package org-noter
:config
(setq org-noter-notes-search-path (list (expand-file-name "~/memex/library/books")))
(setq org-noter-default-notes-file-names '("books.org")))
#+end_src
#+begin_src elisp :tangle yes
(setq org-noter-notes-search-path (list (concat org-directory "/library/books")))
(setq org-noter-default-notes-file-names '("books.org"))
#+end_src
* Link PDFs (org-noter-pdftools)
#+begin_src elisp
(use-package org-noter-pdftools
:after org-noter
:config
;; Add a function to ensure precise note is inserted
(defun org-noter-pdftools-insert-precise-note (&optional toggle-no-questions)
(interactive "P")
(org-noter--with-valid-session
(let ((org-noter-insert-note-no-questions (if toggle-no-questions
(not org-noter-insert-note-no-questions)
org-noter-insert-note-no-questions))
(org-pdftools-use-isearch-link t)
(org-pdftools-use-freepointer-annot t))
(org-noter-insert-note (org-noter--get-precise-info)))))
;; fix https://github.com/weirdNox/org-noter/pull/93/commits/f8349ae7575e599f375de1be6be2d0d5de4e6cbf
(defun org-noter-set-start-location (&optional arg)
"When opening a session with this document, go to the current location.
With a prefix ARG, remove start location."
(interactive "P")
(org-noter--with-valid-session
(let ((inhibit-read-only t)
(ast (org-noter--parse-root))
(location (org-noter--doc-approx-location (when (called-interactively-p 'any) 'interactive))))
(with-current-buffer (org-noter--session-notes-buffer session)
(org-with-wide-buffer
(goto-char (org-element-property :begin ast))
(if arg
(org-entry-delete nil org-noter-property-note-location)
(org-entry-put nil org-noter-property-note-location
(org-noter--pretty-print-location location))))))))
(with-eval-after-load 'pdf-annot
(add-hook 'pdf-annot-activate-handler-functions #'org-noter-pdftools-jump-to-note)
)
)
#+end_src
* View EPUBs (nov.el)
#+begin_src elisp :tangle yes
(use-package nov (use-package nov
:config :config
(add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode)) (add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode))
) )
#+end_src #+end_src
* org-noter and PDF Tools * Zotero (helm-bibtex)
#+begin_src elisp #+begin_src elisp :tangle yes
(use-package org-noter) (use-package helm-bibtex)
#+end_src
(use-package org-noter-pdftools
:after org-noter #+begin_src elisp :tangle yes
:config (setq bibtex-completion-bibliography '("~/bibliography/zotero.bib"))
(with-eval-after-load 'pdf-annot
(add-hook 'pdf-annot-activate-handler-functions #'org-noter-pdftools-jump-to-note)
)
)
#+end_src #+end_src

View File

@@ -68,6 +68,24 @@
(require 'org-protocol) (require 'org-protocol)
(setq org-protocol-default-buffer-for-file-links "*scratch*") ; fixes 'no buffers remain to edit error for org-protocol capturer (setq org-protocol-default-buffer-for-file-links "*scratch*") ; fixes 'no buffers remain to edit error for org-protocol capturer
(setq org-capture-templates '(
("p" "Protocol"
entry
(file "inbox.org")
"* %^{Title}\nSource: %u, %c\n #+BEGIN_QUOTE\n%i\n#+END_QUOTE\n\n\n%?"
)
("L" "Protocol Link"
entry
(file "inbox.org")
"* %? [[%:link][%:description]]\n:PROPERTIES:\n:TITLE: %:description\n:URI: %:link\n:CREATED: %U\n:END:"
:prepend nil
:empty-lines 1
:created t
:kill-buffer t
)
)
)
(setq org-protocol-default-template-key "L") (setq org-protocol-default-template-key "L")
(defun my/org-convert-orgzly-to-org-protocol () (defun my/org-convert-orgzly-to-org-protocol ()

View File

@@ -1,7 +1,10 @@
#+TITLE: Emacs Org-mode Configuration #+TITLE: Org Mode Configuration
#+property: header-args :tangle ~/.emacs.d/modules/org.el #+PROPERTY: header-args :tangle yes
* Org Mode
** Basic setup
* Core Org Setup
#+begin_src elisp #+begin_src elisp
(use-package org (use-package org
:config :config
@@ -11,41 +14,130 @@
("C-c c" . org-capture) ("C-c c" . org-capture)
:map org-mode-map) :map org-mode-map)
) )
(defvar org-directory (concat (getenv "HOME") "/org/"))
#+end_src #+end_src
* Agenda
#+begin_src elisp #+begin_src elisp
(setq org-deadline-warning-days 7) (setq org-directory (expand-file-name "~/memex/"))
(setq org-agenda-skip-additional-timestamps-same-entry t) #+end_src
(setq org-agenda-span 'fortnight)
(setq org-agenda-tags-column 'auto) ** Looks
(setq org-agenda-skip-scheduled-if-deadline-is-shown t)
(setq org-agenda-files (list Basic
(concat org-directory "/0_inbox/inbox.org") #+begin_src elisp
(concat org-directory "/0_inbox/org-gtd-tasks.org") (defvar org-pretty-entities t) ; Improve org mode looks
) (defvar org-hide-emphasis-markers t) ; Hide emphasis markup
(defvar org-num-mode nil)
(defvar org-startup-folded 'shw2levels)
#+end_src
Indentation of headers
#+begin_src elisp
(defvar org-startup-indented t) ; Indent org heirarchy
(defvar org-adapt-indentation t)
(defvar org-hide-leading-stars t) ; Minimal Outline
(defvar org-odd-levels-only nil)
#+end_src
Indentation of lists
#+begin_src elisp
(setq org-list-demote-modify-bullet t)
#+end_src
Org-modern
#+begin_src elisp
(use-package org-modern
:ensure t
:config
;; Choose some fonts
(set-face-attribute 'default nil :family "sans-serif")
(set-face-attribute 'variable-pitch nil :family "sans-serif")
(set-face-attribute 'org-modern-symbol nil :family "Iosevka")
;; Edit settings
(defvar org-auto-align-tags nil)
(defvar org-tags-column 0)
(defvar org-catch-invisible-edits 'show-and-error)
(defvar org-special-ctrl-a/e t)
(defvar org-insert-heading-respect-content t)
;; Org styling, hide markup etc.
(defvar org-hide-emphasis-markers t)
(defvar org-pretty-entities t)
;; Agenda styling
(defvar org-agenda-tags-column 0)
(defvar org-agenda-block-separator ?─)
(defvar org-agenda-time-grid
'((daily today require-timed)
(800 1000 1200 1400 1600 1800 2000)
" ┄┄┄┄┄ " "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄"))
(defvar org-agenda-current-time-string
"◀── now ─────────────────────────────────────────────────")
;; Ellipsis styling
(defvar org-ellipsis "")
(set-face-attribute 'org-ellipsis nil :inherit 'default :box nil)
(global-org-modern-mode)
) )
#+end_src #+end_src
* Capture and Protocol Highlight Sourcecode Syntax
#+begin_src elisp
(setq org-src-fontify-natively t)
(setq org-src-tab-acts-natively t)
#+end_src
Images
#+begin_src elisp
(setq org-startup-with-inline-images t)
(setq org-image-actual-width '(300))
#+end_src
** Capture
#+begin_src elisp
(defvar org-default-notes-file (concat org-directory "inbox.org"))
#+end_src
*** Org-protocol
Linux configuration
#+begin_src bash :tangle yes
[Desktop Entry]
Name=org-protocol
Comment=Intercept calls from emacsclient to trigger custom actions
Categories=Other;
Keywords=org-protocol;
Icon=emacs
Type=Application
Exec=emacsclient -- %u
Terminal=false
StartupWMClass=Emacs
MimeType=x-scheme-handler/org-protocol;
#+end_src
#+begin_src bash :tangle yes
update-desktop-database ~/.local/share/applications/
#+end_src
Basic configuration
#+begin_src elisp #+begin_src elisp
(require 'org-protocol) (require 'org-protocol)
(setq org-protocol-default-buffer-for-file-links "*scratch*") (setq org-protocol-default-buffer-for-file-links "*scratch*") ; fixes 'no buffers remain to edit error for org-protocol capturer
(defvar org-default-notes-file (concat org-directory "/0_inbox/inbox.org"))
(setq org-protocol-default-template-key "L")
#+end_src #+end_src
#+begin_src elisp :tangle ~/.emacs.d/custom.el Org-protocol templates
(defvar org-capture-templates '( #+begin_src elisp :tangle yes
(setq org-capture-templates '(
("p" "Protocol" ("p" "Protocol"
entry entry
(file "0_inbox/inbox.org") (file "inbox.org")
"* %^{Title}\nSource: %u, %c\n #+BEGIN_QUOTE\n%i\n#+END_QUOTE\n\n\n%?" "* %^{Title}\nSource: %u, %c\n #+BEGIN_QUOTE\n%i\n#+END_QUOTE\n\n\n%?"
) )
("L" "Protocol Link" ("L" "Protocol Link"
entry entry
(file "0_inbox/inbox.org") (file "inbox.org")
"* %? [[%:link][%:description]]\n:PROPERTIES:\n:TITLE: %:description\n:URI: %:link\n:CREATED: %U\n:END:" "* %? [[%:link][%:description]]\n:PROPERTIES:\n:TITLE: %:description\n:URI: %:link\n:CREATED: %U\n:END:"
:prepend nil :prepend nil
:empty-lines 1 :empty-lines 1
@@ -56,14 +148,86 @@
) )
#+end_src #+end_src
* TODO Settings
#+begin_src elisp #+begin_src elisp
(setq org-todo-keywords (setq org-protocol-default-template-key "L")
'( #+end_src
(sequence "TODO(t)" "NEXT(n)" "|" "DONE(d!)")
(sequence "WAIT(w@/!)" "|" "CNCL(c@)") Convert Orgzly captures to org-protocol captures standard
) #+begin_src elisp
) (defun my/org-convert-orgzly-to-org-protocol ()
(setq org-enforce-todo-dependencies t) "Reformat Orgzly bookmark at point to org-protocol bookmark."
(setq org-log-into-drawer "LOGBOOK") (interactive)
(when (org-at-heading-p)
(let ((headline (nth 4 (org-heading-components))))
;; Find and store the link. Delete the link line.
(search-forward-regexp "^https?://\\S-*" nil t)
(let ((link (match-string 0)))
(beginning-of-line)
(kill-line)
;; Delete any trailing blank spaces
(org-back-to-heading)
(end-of-line)
(when (not (org-on-heading-p))
(delete-char 1)
)
;; Set new headline
(goto-char (org-entry-beginning-position))
(org-edit-headline (format "[[%s][%s]]" link headline))
;; Set new properties
(org-set-property "TITLE" headline)
(org-set-property "URI" link)
(message "Reformatted Orgzly bookmark at point to org-protocol bookmark")
)
)
)
)
#+end_src
** Exporting
#+begin_src elisp :tangle yes
(setq org-export-with-smart-quotes t)
(setq org-export-backends '(beamer html latex md))
#+end_src
Export to EPUB
#+begin_src elisp :tangle yes
(use-package ox-epub)
#+end_src
** org-attach
#+begin_src elisp
(setq org-attach-id-dir (concat org-directory "/library"))
#+end_src
** Enable shell scripting support in org-babel
#+begin_src elisp
(defvar org-babel-do-load-languages 'org-babel-load-languages '((shell . t)))
#+end_src
** Insert org-mode links from clipboard
#+begin_src elisp :tangle yes
(use-package org-cliplink
:bind
(("C-x p i" . org-cliplink))
)
#+end_src
** Deft
#+begin_src elisp :tangle yes
(use-package deft
:commands (deft)
:init
(defvar deft-extensions '("org"))
(defvar deft-recursive nil)
(defvar deft-use-filename-as-title t)
:config
(defvar deft-directory org-directory)
(defvar deft-recursive t)
(defvar deft-strip-summary-regexp ":PROPERTIES:\n\\(.+\n\\)+:END:\n")
(defvar deft-use-filename-as-title t)
:bind ("C-c n d" . deft)
)
#+end_src #+end_src

View File

@@ -1,20 +1,17 @@
#+TITLE: Emacs Org-roam Configuration #+TITLE: Org-Roam Configuration
#+property: header-args :tangle ~/.emacs.d/modules/roam.el #+PROPERTY: header-args :tangle yes
* Org-roam
** Basic org-roam setup
* org-roam Setup
#+begin_src elisp #+begin_src elisp
(use-package org-roam (use-package org-roam
:init (setq org-roam-v2-ack t) :init (setq org-roam-v2-ack t) ;; Acknowledge V2 upgrade
:after org :after org
:config :config
(org-roam-db-autosync-enable) (org-roam-db-autosync-enable)
(require 'org-roam-dailies) (require 'org-roam-dailies)
(setq org-roam-mode-sections
(list #'org-roam-backlinks-section
#'org-roam-reflinks-section
#'org-roam-unlinked-references-section
)
)
:bind ( :bind (
("C-c n f" . org-roam-node-find) ("C-c n f" . org-roam-node-find)
("C-c n g" . org-roam-graph) ("C-c n g" . org-roam-graph)
@@ -29,14 +26,48 @@
) )
#+end_src #+end_src
* Directories
#+begin_src elisp #+begin_src elisp
(setq org-roam-directory (concat org-directory "/1_thinking")) (setq org-roam-directory (expand-file-name (concat org-directory "notes")))
(setq org-roam-dailies-directory (concat org-directory "/0_inbox/daily")) (setq org-roam-dailies-directory (expand-file-name (concat org-directory "daily")))
#+end_src
#+begin_src elisp :tangle yes
(use-package sqlite3)
(require 'sqlite3)
#+end_src
Include subdirectories in org-roam
#+begin_src elisp
(setq org-roam-file-exclude-regexp "^[.][.]?/") (setq org-roam-file-exclude-regexp "^[.][.]?/")
#+end_src #+end_src
* Capture Templates ** Display in org-roam-buffer
#+begin_src elisp :tangle yes
(setq org-roam-mode-sections
(list #'org-roam-backlinks-section
#'org-roam-reflinks-section
#'org-roam-unlinked-references-section
)
)
#+end_src
** Filter org-roam nodes find by tag
#+begin_src elisp :tangle yes
(defun my/org-roam-node-has-tag (node tag)
"Filter function to check if the given NODE has the specified TAG."
(member tag (org-roam-node-tags node))
)
(defun my/org-roam-node-find-by-tag ()
"Find and open an Org-roam node based on a specified tag."
(interactive)
(let ((tag (read-string "Enter tag: ")))
(org-roam-node-find nil nil (lambda (node) (my/org-roam-node-has-tag node tag))))
)
#+end_src
** org-roam-capture templates
#+begin_src elisp #+begin_src elisp
(setq org-roam-capture-templates (setq org-roam-capture-templates
'( '(
@@ -48,6 +79,7 @@
:immediate-finish t :immediate-finish t
:unnarrowed t :unnarrowed t
) )
("h" "hugo post" plain ("h" "hugo post" plain
"%?" "%?"
:target (file+head "posts/${slug}.org" :target (file+head "posts/${slug}.org"
@@ -55,6 +87,7 @@
:immediate-finish t :immediate-finish t
:unnarrowed t :unnarrowed t
) )
("p" "person" plain ("p" "person" plain
"%?" "%?"
:if-new (file+head "people/${slug}.org" :if-new (file+head "people/${slug}.org"
@@ -64,7 +97,9 @@
) )
) )
) )
#+end_src
#+begin_src elisp
(setq org-roam-dailies-capture-templates (setq org-roam-dailies-capture-templates
'( '(
("d" "daily" plain ("d" "daily" plain
@@ -75,3 +110,31 @@
) )
) )
#+end_src #+end_src
** Move org header to org-roam-daily
#+begin_src elisp :tangle yes
(defun my/org-move-entry-to-daily-notes ()
"Move the current org-mode headline to the daily notes file based on its :CREATED: property."
(interactive)
(let*
(
(created-prop (org-entry-get nil "CREATED"))
(created-date (when created-prop
(org-parse-time-string created-prop)))
(year (nth 5 created-date)) ; Extract year (6th element)
(month (nth 4 created-date)) ; Extract month (5th element)
(day (nth 3 created-date)) ; Extract day (4th element)
(target-date (format "%04d-%02d-%02d" year month day)) ; Format date string
(target-file (org-roam-dailies-goto target-date))
)
(when target-file
(org-cut-subtree)
(find-file target-file)
(goto-char (point-max))
(unless (bolp) (newline))
(org-paste-subtree)
)
)
)
#+end_src

View File

@@ -1,18 +1,86 @@
#+TITLE: Emacs Shell Configuration #+TITLE: Shell Configuration
#+property: header-args :tangle ~/.emacs.d/modules/shell.el #+PROPERTY: header-args :tangle yes
* Shell
** Bash completion
* Bash Completion
#+begin_src elisp #+begin_src elisp
(use-package bash-completion (use-package bash-completion
:config :config
(require 'bash-completion) (require 'bash-completion)
(bash-completion-setup) (bash-completion-setup)
) )
#+end_src
#+begin_src elisp
(defvar shell-dynamic-complete-functions t) (defvar shell-dynamic-complete-functions t)
#+end_src #+end_src
* Frame Management ** Eshell
#+begin_src elisp
(add-hook 'server-done-hook (lambda () (delete-frame))) Add programmable bash completion to Emacs shell-mode
#+begin_src elisp :tangle yes
(require 'bash-completion)
(add-hook 'eshell-mode-hook
(lambda ()
(add-hook 'completion-at-point-functions
'bash-completion-capf-nonexclusive nil t
)
)
)
#+end_src
Use colors in eshell
#+begin_src elisp :tangle yes
(use-package xterm-color
:commands (xterm-color-filter)
)
(use-package eshell
:after xterm-color
:config
(define-key eshell-hist-mode-map (kbd "M-r") #'consult-history)
(add-hook 'eshell-mode-hook
(lambda ()
(setenv "TERM" "xterm-256color")))
(add-hook 'eshell-before-prompt-hook (setq xterm-color-preserve-properties t))
(add-to-list 'eshell-preoutput-filter-functions 'xterm-color-filter)
(setq eshell-output-filter-functions
(remove 'eshell-handle-ansi-color eshell-output-filter-functions)
)
)
#+end_src
Eshell completion
#+begin_src elisp :tangle yes
(add-hook 'eshell-mode-hook
(lambda ()
(add-hook 'completion-at-point-functions
'bash-completion-capf-nonexclusive nil t)))
#+end_src
Emulate A Terminal (EAT)
#+begin_src elisp :tangle yes
(use-package eat
:config
;; For `eat-eshell-mode'.
(add-hook 'eshell-load-hook #'eat-eshell-mode)
;; For `eat-eshell-visual-command-mode'.
(add-hook 'eshell-load-hook #'eat-eshell-visual-command-mode)
)
#+end_src
* Server Actuation (Bash Integration)
Ensure that emacsclient always opens in a GUI frame by default when called from the shell.
#+begin_src bash :tangle ~/.bash_aliases
# Use emacsclient to open files in the GUI, starting daemon if needed
alias em="emacsclient -c -a ''"
# Set emacsclient as the default editor
export EDITOR="emacsclient -c -a ''"
export VISUAL="emacsclient -c -a ''"
#+end_src #+end_src

View File

@@ -0,0 +1,16 @@
(when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
(when (fboundp 'menu-bar-mode) (menu-bar-mode -1))
(when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
(setq inhibit-startup-screen t)
(setq initial-scratch-message nil)
(set-face-attribute 'default nil :family "sans-serif" :height 120)
(set-face-attribute 'variable-pitch nil :family "sans-serif")
(use-package org-modern
:ensure t
:config
(set-face-attribute 'org-modern-symbol nil :family "Iosevka")
(global-org-modern-mode)
)

View File

@@ -1,59 +1,32 @@
#+TITLE: Emacs UI Configuration #+TITLE: Emacs UI Configuration
#+property: header-args :tangle ~/.emacs.d/modules/ui.el #+PROPERTY: header-args :tangle yes
* Appearance * Appearance
Basic UI settings for a cleaner look.
#+begin_src elisp #+begin_src elisp
(defvar org-pretty-entities t) ; Improve org mode looks (when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
(defvar org-hide-emphasis-markers t) ; Hide emphasis markup (when (fboundp 'menu-bar-mode) (menu-bar-mode -1))
(defvar org-num-mode nil) (when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
(defvar org-startup-folded 'shw2levels)
(defvar org-startup-indented t) ; Indent org heirarchy (setq inhibit-startup-screen t)
(defvar org-adapt-indentation t) (setq initial-scratch-message nil)
(defvar org-hide-leading-stars t) ; Minimal Outline
(defvar org-odd-levels-only nil)
#+end_src #+end_src
* Org-modern * Fonts
#+begin_src elisp
(set-face-attribute 'default nil :family "sans-serif" :height 120)
(set-face-attribute 'variable-pitch nil :family "sans-serif")
#+end_src
* Org-modern (UI elements)
#+begin_src elisp #+begin_src elisp
(use-package org-modern (use-package org-modern
:ensure t :ensure t
:config :config
;; Choose some fonts
(set-face-attribute 'default nil :family "sans-serif")
(set-face-attribute 'variable-pitch nil :family "sans-serif")
(set-face-attribute 'org-modern-symbol nil :family "Iosevka") (set-face-attribute 'org-modern-symbol nil :family "Iosevka")
;; Edit settings
(defvar org-auto-align-tags nil)
(defvar org-tags-column 0)
(defvar org-catch-invisible-edits 'show-and-error)
(defvar org-special-ctrl-a/e t)
(defvar org-insert-heading-respect-content t)
;; Org styling, hide markup etc.
(defvar org-hide-emphasis-markers t)
(defvar org-pretty-entities t)
;; Agenda styling
(defvar org-agenda-tags-column 0)
(defvar org-agenda-block-separator ?─)
(defvar org-agenda-time-grid
'((daily today require-timed)
(800 1000 1200 1400 1600 1800 2000)
" ┄┄┄┄┄ " "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄"))
(defvar org-agenda-current-time-string
"◀── now ─────────────────────────────────────────────────")
;; Ellipsis styling
(defvar org-ellipsis "")
(set-face-attribute 'org-ellipsis nil :inherit 'default :box nil)
(global-org-modern-mode) (global-org-modern-mode)
) )
#+end_src #+end_src
* Syntax Highlighting
#+begin_src elisp
(setq org-src-fontify-natively t)
(setq org-src-tab-acts-natively t)
#+end_src

View File

@@ -1,7 +1,195 @@
#+TITLE: Emacs Writing Configuration #+TITLE: Reading and Writing Configuration
#+property: header-args :tangle ~/.emacs.d/modules/writing.el #+PROPERTY: header-args :tangle yes
* Text and Case
** Convert DOuble capitals to single capitals
#+begin_src elisp :tangle yes
(defun my/dcaps-to-scaps ()
"Convert word in DOuble CApitals to Single Capitals."
(interactive)
(and (= ?w (char-syntax (char-before)))
(save-excursion
(and (if (called-interactively-p)
(skip-syntax-backward "w")
(= -3 (skip-syntax-backward "w"))
)
(let (case-fold-search)
(looking-at "\\b[[:upper:]]\\{2\\}[[:lower:]]")
)
(capitalize-word 1)
)
)
)
)
#+end_src
Then, lets define a minor mode for it to be activated.
#+begin_src elisp :tangle yes
(define-minor-mode my-dubcaps-mode
"Toggle 'my-dubcaps-mode' and convert words in DOuble CApitals to Single Capitals as you type."
:init-value nil
:lighter (" DC")
(if my-dubcaps-mode
(add-hook 'post-self-insert-hook #'my/dcaps-to-scaps nil 'local)
(remove-hook 'post-self-insert-hook #'my/dcaps-to-scaps 'local)))
#+end_src
Finally, lets add a hook so that it is on for all the text files Emacs opens.
#+begin_src elisp :tangle yes
(add-hook 'text-mode-hook #'my-dubcaps-mode)
#+end_src
Also, since we add a minor mode string (it might be useful sometimes), currently I prefer to diminish it.
#+begin_src elisp :tangle yes
(defun my/diminish-dubcaps ()
(interactive)
(diminish 'my-dubcaps-mode ""))
(add-hook 'my-dubcaps-mode-hook 'my/diminish-dubcaps)
#+end_src
* Reading and Writing
** Move correctly over camelCased words
#+begin_src elisp
(subword-mode)
#+end_src
** Understand the more common sentence with double space
#+begin_src elisp
(setq sentence-end-double-space nil)
#+end_src
** Join lines into paragraph
#+begin_src elisp
(defun my/fill-or-unfill-paragraph (&optional unfill region)
"Fill paragraph (or REGION). With the prefix argument UNFILL, fill it instead."
(interactive (progn
(barf-if-buffer-read-only)
(list (if current-prefix-arg 'fill) t)))
(let ((fill-column (if unfill fill-column (point-max))))
(fill-paragraph nil region)))
(bind-key "M-q" 'my/fill-or-unfill-paragraph)
#+end_src
#+begin_src elisp
(defun my/fill-or-unfill-all-paragraphs (&optional unfill)
"Fill or unfill all paragraphs in the current buffer.
With the prefix argument UNFILL, fill them instead."
(interactive (list (if current-prefix-arg 'fill)))
(let ((fill-column (if unfill fill-column (point-max))))
(save-excursion
(goto-char (point-min))
(while (not (eobp))
(fill-paragraph nil t)
(forward-paragraph)))))
(bind-key "M-Q" 'my/fill-or-unfill-all-paragraphs)
#+end_src
#+begin_src elisp
(remove-hook 'text-mode-hook #'turn-on-auto-fill)
(add-hook 'text-mode-hook 'turn-on-visual-line-mode)
#+end_src
** Expand some words with auto-correct
#+begin_src elisp :tangle yes
(setq save-abbrevs 'silently)
(setq-default abbrev-mode t)
#+end_src
** ediff
#+begin_src elisp :tangle yes
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
(setq ediff-split-window-function 'split-window-horizontally)
#+end_src
** tramp
#+begin_src elisp :tangle yes
(setq tramp-default-method "ssh"
tramp-backup-directory-alist backup-directory-alist
tramp-ssh-controlmaster-options "ssh")
#+end_src
** Clean up space
#+begin_src elisp :tangle yes
(bind-key "M-SPC" 'cycle-spacing)
#+end_src
** Transform <a href> links into org links
#+begin_src elisp :tangle yes
(defun my/transform-html-links-to-org ()
"Transform all HTML <a> links in the current buffer into 'org-mode' links."
(interactive)
(goto-char (point-min))
(while (re-search-forward "<a href=\"\\(.*?\\)\">\\(.*?\\)</a>" nil t)
(replace-match (org-make-link-string (match-string 1) (match-string 2)))))
#+end_src
** Count words per minute
#+begin_src elisp :tangle yes
(require 'org-clock)
(defun my/org-entry-wpm ()
(interactive)
(save-restriction
(save-excursion
(org-narrow-to-subtree)
(goto-char (point-min))
(let* ((words (count-words-region (point-min) (point-max)))
(minutes (org-clock-sum-current-item))
(wpm (/ words minutes)))
(message "WPM: %d (words: %d, minutes: %d)" wpm words minutes)
(kill-new (number-to-string wpm))
)
)
)
)
#+end_src
** Enable dict mode
#+begin_src elisp :tangle yes
(setq dictionary-server "automatic")
#+end_src
** Pick out passive voice and weasel words
#+begin_src elisp :tangle yes
(use-package writegood-mode
:diminish writegood-mode
:config
(progn (add-hook 'text-mode-hook 'writegood-mode))
)
#+end_src
** Org-babel docker
#+begin_src elisp :tangle yes
(use-package ob-docker-build
:straight (ob-docker-build :type git :host github :repo "ifitzpat/ob-docker-build")
:defer t
:config
(add-to-list 'org-babel-load-languages '(docker-build . t))
(org-babel-do-load-languages 'org-babel-load-languages org-babel-load-languages)
)
#+end_src
* Spelling and syntax
** Spell checking
This requires installation of hunspell
#+begin_src bash :tangle yes
sudo apt install hunspell
#+end_src
* Spell Checking
#+begin_src elisp #+begin_src elisp
(use-package flyspell (use-package flyspell
:config (setq ispell-program-name "hunspell" :config (setq ispell-program-name "hunspell"
@@ -17,32 +205,50 @@
) )
#+end_src #+end_src
* Syntax Checking ** Flyspell correct
#+begin_src elisp #+begin_src elisp :tangle yes
(use-package flycheck (use-package flyspell-correct
:init (global-flycheck-mode) :after flyspell
:diminish (flycheck-mode . "") :bind (:map flyspell-mode-map ("C-;" . flyspell-correct-wrapper))
:config
(add-hook 'after-init-hook #'global-flycheck-mode)
(setq flycheck-emacs-lisp-load-path 'inherit)
(setq flycheck-emacs-lisp-load-path (concat user-emacs-directory "straight/build"))
) )
#+end_src #+end_src
* Text Manipulation ** Flycheck
Needs external checkers installed
#+begin_src elisp #+begin_src elisp
(subword-mode) (use-package flycheck
(setq sentence-end-double-space nil) :defer t
:diminish (flycheck-mode . "")
:config
(setq flycheck-emacs-lisp-load-path 'inherit)
(setq flycheck-emacs-lisp-load-path (concat user-emacs-directory "straight/build")))
(defun my/fill-or-unfill-paragraph (&optional unfill region) #+end_src
"Fill paragraph (or REGION). With the prefix argument UNFILL, fill it instead."
(interactive (progn ** Flycheck bash
(barf-if-buffer-read-only) #+begin_src bash :tangle yes
(list (if current-prefix-arg 'fill) t))) sudo apt install devscripts
(let ((fill-column (if unfill fill-column (point-max)))) #+end_src
(fill-paragraph nil region)))
#+begin_src elisp :tangle yes
(bind-key "M-q" 'my/fill-or-unfill-paragraph) (use-package flycheck-checkbashisms
:config
(add-hook 'text-mode-hook 'turn-on-visual-line-mode) (flycheck-checkbashisms-setup)
)
#+end_src
** Yaml
#+begin_src elisp :tangle yes
(use-package yaml-mode
:config
(add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode))
(add-to-list 'auto-mode-alist '("\\.yaml\\'" . yaml-mode))
)
#+end_src
** Docker
#+begin_src elisp :tangle yes
(use-package docker-compose-mode)
#+end_src #+end_src

View File

@@ -0,0 +1,90 @@
#+TITLE: Qubes NPU Setup - sys-ai
#+AUTHOR: Amr
#+CREATED: [2026-04-24 Fri]
#+BEGIN_COMMENT
Documentation for setting up sys-ai Qube with AMD Ryzen AI NPU for llama.cpp.
#+END_COMMENT
* Hardware
- *Laptop:* Framework Laptop 13 (AMD)
- *CPU:* AMD Ryzen AI 5 340 (6 cores, no SMT)
- *NPU:* AMD XDNA2 (Strix Point) - c2:00.1 / dom0:00_08.2-00_00.1
- *RAM:* 96GB total
* Current Progress
** DONE [X] Create sys-ai AppVM (HVM, 64GB, 2 vCPUs)
#+begin_src bash
# Run in dom0
qvm-create --label purple --property netvm=sys-firewall --property memory=65536 --property vcpus=2 --property virt_mode=HVM sys-ai
#+end_src
** DONE [X] Attach NPU PCI device to sys-ai
#+begin_src bash
# Run in dom0
qvm-pci attach -o no-strict-reset=true sys-ai dom0:00_08.2-00_00.1 --persistent
#+end_src
** TODO [ ] Fix repository configuration in sys-ai
*Status:* Package repositories missing in fedora-43-ai template. Fedora 43 uses DNF5 with different repo paths.
*Next Step:* Qubes OS templates typically get packages installed via `qubes-vm-update` or dom0 commands. Try the Qubes way to install packages.
** TODO [ ] Verify NPU is accessible inside sys-ai
#+begin_src bash
# Install pciutils
sudo dnf install pciutils
# Check NPU is visible
lspci | grep -i neural
#+end_src
** TODO [ ] Install AMD NPU drivers in sys-ai
#+begin_src bash
# Enable Copr repository
sudo dnf copr enable xanderlent/amd-npu-driver
# Install drivers
sudo dnf install xrt xdna-driver tcsh
# Setup environment
source /usr/xrt/setup.sh
# Verify NPU detection
xrt-smi examine
#+end_src
** TODO [ ] Build llama.cpp with AMD XDNA2 NPU backend
#+begin_src bash
# Install build dependencies
sudo dnf install cmake gcc-c++ python3.11 git
# Clone NPU fork
git clone https://github.com/BrandedTamarasu-glitch/OllamaAMDNPU.git
cd OllamaAMDNPU
# Build with NPU backend
cmake -B build -DGGML_XDNA=ON -DGGML_BACKEND_DL=ON -DBUILD_SHARED_LIBS=ON
cmake --build build --parallel
#+end_src
** TODO [ ] Download model and test inference
#+begin_src bash
# Download GGUF model (Qwen3 1B or 3B quantized)
# ... model download command ...
# Run with NPU offload
./build/bin/llama-cli -m model.gguf -p "Hello" -n 256 --npu-split 1
#+end_src
* Next Step
Run the repository fix commands from the "Fix repository" step above.

View File

@@ -36,5 +36,5 @@ See the actionable tasks for this project in [[file:../../gtd.org::*Lisp Machine
* Links * Links
- [[file:../org-agent/][Orchestration: org-agent Microkernel]] - [[file:../opencortex/][Orchestration: opencortex Microkernel]]
- [[file:../agora/][Social Layer: Agora Protocol]] - [[file:../agora/][Social Layer: Agora Protocol]]

1
projects/opencortex Submodule

Submodule projects/opencortex added at a717ab1d3a

1757
quicklisp.lisp Normal file

File diff suppressed because it is too large Load Diff

View File

Before

Width:  |  Height:  |  Size: 122 KiB

After

Width:  |  Height:  |  Size: 122 KiB

View File

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 123 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

0
skills.org Normal file
View File

View File

@@ -1,355 +0,0 @@
#+TITLE: LLM Fleet Dashboard
#+author: Sol (Agent)
* Model Fleet
| Provider | Model ID | Context |
|------------+---------------------------------------------------------------+---------|
| OpenRouter | google/gemma-4-26b-a4b-it | 262144 |
| OpenRouter | google/gemma-4-31b-it | 262144 |
| OpenRouter | qwen/qwen3.6-plus:free | 1000000 |
| OpenRouter | z-ai/glm-5v-turbo | 202752 |
| OpenRouter | arcee-ai/trinity-large-thinking | 262144 |
| OpenRouter | x-ai/grok-4.20-multi-agent | 2000000 |
| OpenRouter | x-ai/grok-4.20 | 2000000 |
| OpenRouter | google/lyria-3-pro-preview | 1048576 |
| OpenRouter | google/lyria-3-clip-preview | 1048576 |
| OpenRouter | kwaipilot/kat-coder-pro-v2 | 256000 |
| OpenRouter | rekaai/reka-edge | 16384 |
| OpenRouter | xiaomi/mimo-v2-omni | 262144 |
| OpenRouter | xiaomi/mimo-v2-pro | 1048576 |
| OpenRouter | minimax/minimax-m2.7 | 204800 |
| OpenRouter | openai/gpt-5.4-nano | 400000 |
| OpenRouter | openai/gpt-5.4-mini | 400000 |
| OpenRouter | mistralai/mistral-small-2603 | 262144 |
| OpenRouter | z-ai/glm-5-turbo | 202752 |
| OpenRouter | nvidia/nemotron-3-super-120b-a12b:free | 262144 |
| OpenRouter | nvidia/nemotron-3-super-120b-a12b | 262144 |
| OpenRouter | bytedance-seed/seed-2.0-lite | 262144 |
| OpenRouter | qwen/qwen3.5-9b | 256000 |
| OpenRouter | openai/gpt-5.4-pro | 1050000 |
| OpenRouter | openai/gpt-5.4 | 1050000 |
| OpenRouter | inception/mercury-2 | 128000 |
| OpenRouter | openai/gpt-5.3-chat | 128000 |
| OpenRouter | google/gemini-3.1-flash-lite-preview | 1048576 |
| OpenRouter | bytedance-seed/seed-2.0-mini | 262144 |
| OpenRouter | google/gemini-3.1-flash-image-preview | 65536 |
| OpenRouter | qwen/qwen3.5-35b-a3b | 262144 |
| OpenRouter | qwen/qwen3.5-27b | 262144 |
| OpenRouter | qwen/qwen3.5-122b-a10b | 262144 |
| OpenRouter | qwen/qwen3.5-flash-02-23 | 1000000 |
| OpenRouter | liquid/lfm-2-24b-a2b | 32768 |
| OpenRouter | google/gemini-3.1-pro-preview-customtools | 1048576 |
| OpenRouter | openai/gpt-5.3-codex | 400000 |
| OpenRouter | aion-labs/aion-2.0 | 131072 |
| OpenRouter | google/gemini-3.1-pro-preview | 1048576 |
| OpenRouter | anthropic/claude-sonnet-4.6 | 1000000 |
| OpenRouter | qwen/qwen3.5-plus-02-15 | 1000000 |
| OpenRouter | qwen/qwen3.5-397b-a17b | 262144 |
| OpenRouter | minimax/minimax-m2.5:free | 196608 |
| OpenRouter | minimax/minimax-m2.5 | 196608 |
| OpenRouter | z-ai/glm-5 | 80000 |
| OpenRouter | qwen/qwen3-max-thinking | 262144 |
| OpenRouter | anthropic/claude-opus-4.6 | 1000000 |
| OpenRouter | qwen/qwen3-coder-next | 262144 |
| OpenRouter | openrouter/free | 200000 |
| OpenRouter | stepfun/step-3.5-flash:free | 256000 |
| OpenRouter | stepfun/step-3.5-flash | 262144 |
| OpenRouter | arcee-ai/trinity-large-preview:free | 131000 |
| OpenRouter | moonshotai/kimi-k2.5 | 262144 |
| OpenRouter | upstage/solar-pro-3 | 128000 |
| OpenRouter | minimax/minimax-m2-her | 65536 |
| OpenRouter | writer/palmyra-x5 | 1040000 |
| OpenRouter | liquid/lfm-2.5-1.2b-thinking:free | 32768 |
| OpenRouter | liquid/lfm-2.5-1.2b-instruct:free | 32768 |
| OpenRouter | openai/gpt-audio | 128000 |
| OpenRouter | openai/gpt-audio-mini | 128000 |
| OpenRouter | z-ai/glm-4.7-flash | 202752 |
| OpenRouter | openai/gpt-5.2-codex | 400000 |
| OpenRouter | allenai/olmo-3.1-32b-instruct | 65536 |
| OpenRouter | bytedance-seed/seed-1.6-flash | 262144 |
| OpenRouter | bytedance-seed/seed-1.6 | 262144 |
| OpenRouter | minimax/minimax-m2.1 | 196608 |
| OpenRouter | z-ai/glm-4.7 | 202752 |
| OpenRouter | google/gemini-3-flash-preview | 1048576 |
| OpenRouter | mistralai/mistral-small-creative | 32768 |
| OpenRouter | xiaomi/mimo-v2-flash | 262144 |
| OpenRouter | nvidia/nemotron-3-nano-30b-a3b:free | 256000 |
| OpenRouter | nvidia/nemotron-3-nano-30b-a3b | 262144 |
| OpenRouter | openai/gpt-5.2-chat | 128000 |
| OpenRouter | openai/gpt-5.2-pro | 400000 |
| OpenRouter | openai/gpt-5.2 | 400000 |
| OpenRouter | mistralai/devstral-2512 | 262144 |
| OpenRouter | relace/relace-search | 256000 |
| OpenRouter | z-ai/glm-4.6v | 131072 |
| OpenRouter | nex-agi/deepseek-v3.1-nex-n1 | 131072 |
| OpenRouter | essentialai/rnj-1-instruct | 32768 |
| OpenRouter | openrouter/bodybuilder | 128000 |
| OpenRouter | openai/gpt-5.1-codex-max | 400000 |
| OpenRouter | amazon/nova-2-lite-v1 | 1000000 |
| OpenRouter | mistralai/ministral-14b-2512 | 262144 |
| OpenRouter | mistralai/ministral-8b-2512 | 262144 |
| OpenRouter | mistralai/ministral-3b-2512 | 131072 |
| OpenRouter | mistralai/mistral-large-2512 | 262144 |
| OpenRouter | arcee-ai/trinity-mini:free | 131072 |
| OpenRouter | arcee-ai/trinity-mini | 131072 |
| OpenRouter | deepseek/deepseek-v3.2-speciale | 163840 |
| OpenRouter | deepseek/deepseek-v3.2 | 163840 |
| OpenRouter | prime-intellect/intellect-3 | 131072 |
| OpenRouter | anthropic/claude-opus-4.5 | 200000 |
| OpenRouter | allenai/olmo-3-32b-think | 65536 |
| OpenRouter | google/gemini-3-pro-image-preview | 65536 |
| OpenRouter | x-ai/grok-4.1-fast | 2000000 |
| OpenRouter | deepcogito/cogito-v2.1-671b | 128000 |
| OpenRouter | openai/gpt-5.1 | 400000 |
| OpenRouter | openai/gpt-5.1-chat | 128000 |
| OpenRouter | openai/gpt-5.1-codex | 400000 |
| OpenRouter | openai/gpt-5.1-codex-mini | 400000 |
| OpenRouter | moonshotai/kimi-k2-thinking | 131072 |
| OpenRouter | amazon/nova-premier-v1 | 1000000 |
| OpenRouter | perplexity/sonar-pro-search | 200000 |
| OpenRouter | mistralai/voxtral-small-24b-2507 | 32000 |
| OpenRouter | openai/gpt-oss-safeguard-20b | 131072 |
| OpenRouter | nvidia/nemotron-nano-12b-v2-vl:free | 128000 |
| OpenRouter | nvidia/nemotron-nano-12b-v2-vl | 131072 |
| OpenRouter | minimax/minimax-m2 | 196608 |
| OpenRouter | qwen/qwen3-vl-32b-instruct | 131072 |
| OpenRouter | ibm-granite/granite-4.0-h-micro | 131000 |
| OpenRouter | openai/gpt-5-image-mini | 400000 |
| OpenRouter | anthropic/claude-haiku-4.5 | 200000 |
| OpenRouter | qwen/qwen3-vl-8b-thinking | 131072 |
| OpenRouter | qwen/qwen3-vl-8b-instruct | 131072 |
| OpenRouter | openai/gpt-5-image | 400000 |
| OpenRouter | openai/o3-deep-research | 200000 |
| OpenRouter | openai/o4-mini-deep-research | 200000 |
| OpenRouter | nvidia/llama-3.3-nemotron-super-49b-v1.5 | 131072 |
| OpenRouter | baidu/ernie-4.5-21b-a3b-thinking | 131072 |
| OpenRouter | google/gemini-2.5-flash-image | 32768 |
| OpenRouter | qwen/qwen3-vl-30b-a3b-thinking | 131072 |
| OpenRouter | qwen/qwen3-vl-30b-a3b-instruct | 131072 |
| OpenRouter | openai/gpt-5-pro | 400000 |
| OpenRouter | z-ai/glm-4.6 | 204800 |
| OpenRouter | anthropic/claude-sonnet-4.5 | 1000000 |
| OpenRouter | deepseek/deepseek-v3.2-exp | 163840 |
| OpenRouter | thedrummer/cydonia-24b-v4.1 | 131072 |
| OpenRouter | relace/relace-apply-3 | 256000 |
| OpenRouter | google/gemini-2.5-flash-lite-preview-09-2025 | 1048576 |
| OpenRouter | qwen/qwen3-vl-235b-a22b-thinking | 131072 |
| OpenRouter | qwen/qwen3-vl-235b-a22b-instruct | 262144 |
| OpenRouter | qwen/qwen3-max | 262144 |
| OpenRouter | qwen/qwen3-coder-plus | 1000000 |
| OpenRouter | openai/gpt-5-codex | 400000 |
| OpenRouter | deepseek/deepseek-v3.1-terminus | 163840 |
| OpenRouter | x-ai/grok-4-fast | 2000000 |
| OpenRouter | alibaba/tongyi-deepresearch-30b-a3b | 131072 |
| OpenRouter | qwen/qwen3-coder-flash | 1000000 |
| OpenRouter | qwen/qwen3-next-80b-a3b-thinking | 131072 |
| OpenRouter | qwen/qwen3-next-80b-a3b-instruct:free | 262144 |
| OpenRouter | qwen/qwen3-next-80b-a3b-instruct | 262144 |
| OpenRouter | meituan/longcat-flash-chat | 131072 |
| OpenRouter | qwen/qwen-plus-2025-07-28:thinking | 1000000 |
| OpenRouter | qwen/qwen-plus-2025-07-28 | 1000000 |
| OpenRouter | nvidia/nemotron-nano-9b-v2:free | 128000 |
| OpenRouter | nvidia/nemotron-nano-9b-v2 | 131072 |
| OpenRouter | moonshotai/kimi-k2-0905 | 131072 |
| OpenRouter | qwen/qwen3-30b-a3b-thinking-2507 | 131072 |
| OpenRouter | x-ai/grok-code-fast-1 | 256000 |
| OpenRouter | nousresearch/hermes-4-70b | 131072 |
| OpenRouter | nousresearch/hermes-4-405b | 131072 |
| OpenRouter | deepseek/deepseek-chat-v3.1 | 32768 |
| OpenRouter | openai/gpt-4o-audio-preview | 128000 |
| OpenRouter | mistralai/mistral-medium-3.1 | 131072 |
| OpenRouter | baidu/ernie-4.5-21b-a3b | 120000 |
| OpenRouter | baidu/ernie-4.5-vl-28b-a3b | 30000 |
| OpenRouter | z-ai/glm-4.5v | 65536 |
| OpenRouter | ai21/jamba-large-1.7 | 256000 |
| OpenRouter | openai/gpt-5-chat | 128000 |
| OpenRouter | openai/gpt-5 | 400000 |
| OpenRouter | openai/gpt-5-mini | 400000 |
| OpenRouter | openai/gpt-5-nano | 400000 |
| OpenRouter | openai/gpt-oss-120b:free | 131072 |
| OpenRouter | openai/gpt-oss-120b | 131072 |
| OpenRouter | openai/gpt-oss-20b:free | 131072 |
| OpenRouter | openai/gpt-oss-20b | 131072 |
| OpenRouter | anthropic/claude-opus-4.1 | 200000 |
| OpenRouter | mistralai/codestral-2508 | 256000 |
| OpenRouter | qwen/qwen3-coder-30b-a3b-instruct | 160000 |
| OpenRouter | qwen/qwen3-30b-a3b-instruct-2507 | 262144 |
| OpenRouter | z-ai/glm-4.5 | 131072 |
| OpenRouter | z-ai/glm-4.5-air:free | 131072 |
| OpenRouter | z-ai/glm-4.5-air | 131072 |
| OpenRouter | qwen/qwen3-235b-a22b-thinking-2507 | 131072 |
| OpenRouter | z-ai/glm-4-32b | 128000 |
| OpenRouter | qwen/qwen3-coder:free | 262000 |
| OpenRouter | qwen/qwen3-coder | 262144 |
| OpenRouter | bytedance/ui-tars-1.5-7b | 128000 |
| OpenRouter | google/gemini-2.5-flash-lite | 1048576 |
| OpenRouter | qwen/qwen3-235b-a22b-2507 | 262144 |
| OpenRouter | switchpoint/router | 131072 |
| OpenRouter | moonshotai/kimi-k2 | 131072 |
| OpenRouter | mistralai/devstral-medium | 131072 |
| OpenRouter | mistralai/devstral-small | 131072 |
| OpenRouter | cognitivecomputations/dolphin-mistral-24b-venice-edition:free | 32768 |
| OpenRouter | x-ai/grok-4 | 256000 |
| OpenRouter | google/gemma-3n-e2b-it:free | 8192 |
| OpenRouter | tencent/hunyuan-a13b-instruct | 131072 |
| OpenRouter | tngtech/deepseek-r1t2-chimera | 163840 |
| OpenRouter | morph/morph-v3-large | 262144 |
| OpenRouter | morph/morph-v3-fast | 81920 |
| OpenRouter | baidu/ernie-4.5-vl-424b-a47b | 123000 |
| OpenRouter | baidu/ernie-4.5-300b-a47b | 123000 |
| OpenRouter | inception/mercury | 128000 |
| OpenRouter | mistralai/mistral-small-3.2-24b-instruct | 128000 |
| OpenRouter | minimax/minimax-m1 | 1000000 |
| OpenRouter | google/gemini-2.5-flash | 1048576 |
| OpenRouter | google/gemini-2.5-pro | 1048576 |
| OpenRouter | openai/o3-pro | 200000 |
| OpenRouter | x-ai/grok-3-mini | 131072 |
| OpenRouter | x-ai/grok-3 | 131072 |
| OpenRouter | google/gemini-2.5-pro-preview | 1048576 |
| OpenRouter | deepseek/deepseek-r1-0528 | 163840 |
| OpenRouter | anthropic/claude-opus-4 | 200000 |
| OpenRouter | anthropic/claude-sonnet-4 | 200000 |
| OpenRouter | google/gemma-3n-e4b-it:free | 8192 |
| OpenRouter | google/gemma-3n-e4b-it | 32768 |
| OpenRouter | mistralai/mistral-medium-3 | 131072 |
| OpenRouter | google/gemini-2.5-pro-preview-05-06 | 1048576 |
| OpenRouter | arcee-ai/spotlight | 131072 |
| OpenRouter | arcee-ai/maestro-reasoning | 131072 |
| OpenRouter | arcee-ai/virtuoso-large | 131072 |
| OpenRouter | arcee-ai/coder-large | 32768 |
| OpenRouter | inception/mercury-coder | 128000 |
| OpenRouter | meta-llama/llama-guard-4-12b | 163840 |
| OpenRouter | qwen/qwen3-30b-a3b | 40960 |
| OpenRouter | qwen/qwen3-8b | 40960 |
| OpenRouter | qwen/qwen3-14b | 40960 |
| OpenRouter | qwen/qwen3-32b | 40960 |
| OpenRouter | qwen/qwen3-235b-a22b | 131072 |
| OpenRouter | openai/o4-mini-high | 200000 |
| OpenRouter | openai/o3 | 200000 |
| OpenRouter | openai/o4-mini | 200000 |
| OpenRouter | qwen/qwen2.5-coder-7b-instruct | 32768 |
| OpenRouter | openai/gpt-4.1 | 1047576 |
| OpenRouter | openai/gpt-4.1-mini | 1047576 |
| OpenRouter | openai/gpt-4.1-nano | 1047576 |
| OpenRouter | eleutherai/llemma_7b | 4096 |
| OpenRouter | alfredpros/codellama-7b-instruct-solidity | 4096 |
| OpenRouter | x-ai/grok-3-mini-beta | 131072 |
| OpenRouter | x-ai/grok-3-beta | 131072 |
| OpenRouter | nvidia/llama-3.1-nemotron-ultra-253b-v1 | 131072 |
| OpenRouter | meta-llama/llama-4-maverick | 1048576 |
| OpenRouter | meta-llama/llama-4-scout | 327680 |
| OpenRouter | qwen/qwen2.5-vl-32b-instruct | 128000 |
| OpenRouter | deepseek/deepseek-chat-v3-0324 | 163840 |
| OpenRouter | openai/o1-pro | 200000 |
| OpenRouter | mistralai/mistral-small-3.1-24b-instruct | 131072 |
| OpenRouter | allenai/olmo-2-0325-32b-instruct | 128000 |
| OpenRouter | google/gemma-3-4b-it:free | 32768 |
| OpenRouter | google/gemma-3-4b-it | 131072 |
| OpenRouter | google/gemma-3-12b-it:free | 32768 |
| OpenRouter | google/gemma-3-12b-it | 131072 |
| OpenRouter | cohere/command-a | 256000 |
| OpenRouter | openai/gpt-4o-mini-search-preview | 128000 |
| OpenRouter | openai/gpt-4o-search-preview | 128000 |
| OpenRouter | rekaai/reka-flash-3 | 65536 |
| OpenRouter | google/gemma-3-27b-it:free | 131072 |
| OpenRouter | google/gemma-3-27b-it | 131072 |
| OpenRouter | thedrummer/skyfall-36b-v2 | 32768 |
| OpenRouter | perplexity/sonar-reasoning-pro | 128000 |
| OpenRouter | perplexity/sonar-pro | 200000 |
| OpenRouter | perplexity/sonar-deep-research | 128000 |
| OpenRouter | qwen/qwq-32b | 131072 |
| OpenRouter | google/gemini-2.0-flash-lite-001 | 1048576 |
| OpenRouter | anthropic/claude-3.7-sonnet | 200000 |
| OpenRouter | anthropic/claude-3.7-sonnet:thinking | 200000 |
| OpenRouter | mistralai/mistral-saba | 32768 |
| OpenRouter | meta-llama/llama-guard-3-8b | 131072 |
| OpenRouter | openai/o3-mini-high | 200000 |
| OpenRouter | google/gemini-2.0-flash-001 | 1048576 |
| OpenRouter | qwen/qwen-vl-plus | 131072 |
| OpenRouter | aion-labs/aion-1.0 | 131072 |
| OpenRouter | aion-labs/aion-1.0-mini | 131072 |
| OpenRouter | aion-labs/aion-rp-llama-3.1-8b | 32768 |
| OpenRouter | qwen/qwen-vl-max | 131072 |
| OpenRouter | qwen/qwen-turbo | 131072 |
| OpenRouter | qwen/qwen2.5-vl-72b-instruct | 32768 |
| OpenRouter | qwen/qwen-plus | 1000000 |
| OpenRouter | qwen/qwen-max | 32768 |
| OpenRouter | openai/o3-mini | 200000 |
| OpenRouter | mistralai/mistral-small-24b-instruct-2501 | 32768 |
| OpenRouter | deepseek/deepseek-r1-distill-qwen-32b | 32768 |
| OpenRouter | perplexity/sonar | 127072 |
| OpenRouter | deepseek/deepseek-r1-distill-llama-70b | 131072 |
| OpenRouter | deepseek/deepseek-r1 | 64000 |
| OpenRouter | minimax/minimax-01 | 1000192 |
| OpenRouter | microsoft/phi-4 | 16384 |
| OpenRouter | sao10k/l3.1-70b-hanami-x1 | 16000 |
| OpenRouter | deepseek/deepseek-chat | 163840 |
| OpenRouter | sao10k/l3.3-euryale-70b | 131072 |
| OpenRouter | openai/o1 | 200000 |
| OpenRouter | cohere/command-r7b-12-2024 | 128000 |
| OpenRouter | meta-llama/llama-3.3-70b-instruct:free | 65536 |
| OpenRouter | meta-llama/llama-3.3-70b-instruct | 131072 |
| OpenRouter | amazon/nova-lite-v1 | 300000 |
| OpenRouter | amazon/nova-micro-v1 | 128000 |
| OpenRouter | amazon/nova-pro-v1 | 300000 |
| OpenRouter | openai/gpt-4o-2024-11-20 | 128000 |
| OpenRouter | mistralai/mistral-large-2411 | 131072 |
| OpenRouter | mistralai/mistral-large-2407 | 131072 |
| OpenRouter | mistralai/pixtral-large-2411 | 131072 |
| OpenRouter | qwen/qwen-2.5-coder-32b-instruct | 32768 |
| OpenRouter | thedrummer/unslopnemo-12b | 32768 |
| OpenRouter | anthropic/claude-3.5-haiku | 200000 |
| OpenRouter | anthracite-org/magnum-v4-72b | 16384 |
| OpenRouter | qwen/qwen-2.5-7b-instruct | 32768 |
| OpenRouter | nvidia/llama-3.1-nemotron-70b-instruct | 131072 |
| OpenRouter | inflection/inflection-3-pi | 8000 |
| OpenRouter | inflection/inflection-3-productivity | 8000 |
| OpenRouter | thedrummer/rocinante-12b | 32768 |
| OpenRouter | meta-llama/llama-3.2-3b-instruct:free | 131072 |
| OpenRouter | meta-llama/llama-3.2-3b-instruct | 80000 |
| OpenRouter | meta-llama/llama-3.2-1b-instruct | 60000 |
| OpenRouter | meta-llama/llama-3.2-11b-vision-instruct | 131072 |
| OpenRouter | qwen/qwen-2.5-72b-instruct | 32768 |
| OpenRouter | cohere/command-r-08-2024 | 128000 |
| OpenRouter | cohere/command-r-plus-08-2024 | 128000 |
| OpenRouter | sao10k/l3.1-euryale-70b | 131072 |
| OpenRouter | nousresearch/hermes-3-llama-3.1-70b | 131072 |
| OpenRouter | nousresearch/hermes-3-llama-3.1-405b:free | 131072 |
| OpenRouter | nousresearch/hermes-3-llama-3.1-405b | 131072 |
| OpenRouter | sao10k/l3-lunaris-8b | 8192 |
| OpenRouter | openai/gpt-4o-2024-08-06 | 128000 |
| OpenRouter | meta-llama/llama-3.1-8b-instruct | 16384 |
| OpenRouter | meta-llama/llama-3.1-70b-instruct | 131072 |
| OpenRouter | mistralai/mistral-nemo | 131072 |
| OpenRouter | openai/gpt-4o-mini-2024-07-18 | 128000 |
| OpenRouter | openai/gpt-4o-mini | 128000 |
| OpenRouter | google/gemma-2-27b-it | 8192 |
| OpenRouter | google/gemma-2-9b-it | 8192 |
| OpenRouter | sao10k/l3-euryale-70b | 8192 |
| OpenRouter | nousresearch/hermes-2-pro-llama-3-8b | 8192 |
| OpenRouter | openai/gpt-4o | 128000 |
| OpenRouter | openai/gpt-4o:extended | 128000 |
| OpenRouter | openai/gpt-4o-2024-05-13 | 128000 |
| OpenRouter | meta-llama/llama-3-8b-instruct | 8192 |
| OpenRouter | meta-llama/llama-3-70b-instruct | 8192 |
| OpenRouter | mistralai/mixtral-8x22b-instruct | 65536 |
| OpenRouter | microsoft/wizardlm-2-8x22b | 65535 |
| OpenRouter | openai/gpt-4-turbo | 128000 |
| OpenRouter | anthropic/claude-3-haiku | 200000 |
| OpenRouter | mistralai/mistral-large | 128000 |
| OpenRouter | openai/gpt-3.5-turbo-0613 | 4095 |
| OpenRouter | openai/gpt-4-turbo-preview | 128000 |
| OpenRouter | mistralai/mixtral-8x7b-instruct | 32768 |
| OpenRouter | alpindale/goliath-120b | 6144 |
| OpenRouter | openrouter/auto | 2000000 |
| OpenRouter | openai/gpt-4-1106-preview | 128000 |
| OpenRouter | mistralai/mistral-7b-instruct-v0.1 | 2824 |
| OpenRouter | openai/gpt-3.5-turbo-instruct | 4095 |
| OpenRouter | openai/gpt-3.5-turbo-16k | 16385 |
| OpenRouter | mancer/weaver | 8000 |
| OpenRouter | undi95/remm-slerp-l2-13b | 6144 |
| OpenRouter | gryphe/mythomax-l2-13b | 4096 |
| OpenRouter | openai/gpt-4-0314 | 8191 |
| OpenRouter | openai/gpt-3.5-turbo | 16385 |
| OpenRouter | openai/gpt-4 | 8191 |

View File

@@ -1 +0,0 @@
user@amr.3392:1775060113

View File

@@ -2124,42 +2124,42 @@ On package.el, it is a manual install so far
(use-package chemtable) (use-package chemtable)
#+end_src #+end_src
** Org-agent ** OpenCortex
#+begin_src elisp #+begin_src elisp
;; 1. Manually add the path to your load-path ;; 1. Manually add the path to your load-path
(add-to-list 'load-path "~/memex/projects/org-agent/src") (add-to-list 'load-path "~/memex/projects/opencortex/src")
;; 2. Explicitly load the file ;; 2. Explicitly load the file
(require 'org-agent) (require 'opencortex)
;; 3. Configure the variables AFTER the package is loaded ;; 3. Configure the variables AFTER the package is loaded
(setq org-agent-host "10.10.10.201") (setq opencortex-host "10.10.10.201")
(setq org-agent-port 9105) (setq opencortex-port 9105)
(setq org-agent-executable-path nil) (setq opencortex-executable-path nil)
;; 4. (Optional) Re-enable use-package features if you prefer ;; 4. (Optional) Re-enable use-package features if you prefer
(use-package org-agent (use-package opencortex
:straight nil :straight nil
:commands (org-agent-connect org-agent-disconnect)) :commands (opencortex-connect opencortex-disconnect))
(message "org-agent: Actuator manually verified at %s" org-agent-host) (message "opencortex: Actuator manually verified at %s" opencortex-host)
;; (use-package org-agent ;; (use-package opencortex
;; :straight nil ;; :straight nil
;; :load-path "~/memex/projects/org-agent/src" ;; Adjust this to your local clone path ;; :load-path "~/memex/projects/opencortex/src" ;; Adjust this to your local clone path
;; :commands (org-agent-connect org-agent-disconnect) ;; :commands (opencortex-connect opencortex-disconnect)
;; :init ;; :init
;; Remote connection settings ;; Remote connection settings
;; (setq org-agent-host "10.10.10.43") ;; Your Docker server's IP ;; (setq opencortex-host "10.10.10.43") ;; Your Docker server's IP
;; (setq org-agent-port 9105) ;; Must match ORG_AGENT_DAEMON_PORT in .env ;; (setq opencortex-port 9105) ;; Must match ORG_AGENT_DAEMON_PORT in .env
;; Optimization: Automatically connect when entering Org-mode (optional) ;; Optimization: Automatically connect when entering Org-mode (optional)
;; :hook (org-mode . org-agent-connect) ;; :hook (org-mode . opencortex-connect)
;; :config ;; :config
;; Ensure Emacs is acting as a proper sensor ;; Ensure Emacs is acting as a proper sensor
;; (message "org-agent: Actuator configured for remote brain at %s" ;; (message "opencortex: Actuator configured for remote brain at %s"
;; (org-agent-host)) ;; (opencortex-host))
;; ) ;; )
#+end_src #+end_src

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -1,120 +0,0 @@
#+TITLE: AI Configuration
#+PROPERTY: header-args :tangle yes
* AI Settings
** Ellama
#+begin_src elisp :tangle yes
;; YOU DON'T NEED NONE OF THIS CODE FOR SIMPLE INSTALL
;; IT IS AN EXAMPLE OF CUSTOMIZATION.
(use-package ellama
:init
(require 'llm-openai)
;; setup key bindings
(setq ellama-keymap-prefix "C-c e")
)
#+end_src
#+begin_src elisp ~/.emacs.d/custom.el :tangle yes
(setopt ellama-providers
'(
;; Ollama Provider (added here with a name)
("ollama" . (make-llm-ollama
;; Consider a dedicated embedding model if gemma isn't ideal for it.
:chat-model "gemma3:latest"
:embedding-model "gemma3:latest" ; Or e.g., "nomic-embed-text"
:default-chat-non-standard-params '(("num_ctx" . 8192))))
("openai" . (make-llm-openai
:key (auth-source-pass-get "api-key" "www/openai.com/amr@gharbeia.net")
:chat-model "gpt-4o"
:embedding-model "text-embedding-3-large"))
("groq" . (make-llm-openai-compatible
:url "https://api.groq.com/openai/v1"
:key (auth-source-pass-get "api-key" "www/console.groq.com/groq@amr.gharbeia.net")
;; Check Groq console for available models, these might change
:chat-model "llama3-70b-8192" ; Example, verify on Groq
:embedding-model "llama3-70b-8192")) ; Groq might not offer dedicated embedding models via this API
))
;; --- Set Active Providers ---
;; Choose your default provider from the list above by its name
(setopt ellama-provider "ollama") ; Or "ollama", "openai", "groq"
;; You can specify different providers for different tasks if needed
(setopt ellama-translation-provider "ollama")
(setopt ellama-naming-provider "ollama")
(setopt ellama-naming-scheme 'ellama-generate-name-by-llm)
(setq llm-debug t)
#+end_src
#+begin_src elisp
(use-package ellama
:ensure t
:bind ("C-c e" . ellama)
;; send last message in chat buffer with C-c C-c
:hook (org-ctrl-c-ctrl-c-final . ellama-chat-send-last-message)
:init (setopt ellama-auto-scroll t)
:config
;; show ellama context in header line in all buffers
(ellama-context-header-line-global-mode +1)
;; show ellama session id in header line in all buffers
(ellama-session-header-line-global-mode +1))
#+end_src
** GPTel
#+begin_src elisp :tangle yes
(use-package gptel)
#+end_src
#+begin_src elisp :tangle yes
(setq gptel-api-key (auth-source-pass-get "api-key" "www/console.groq.com/groq@amr.gharbeia.net"))
#+end_src
#+begin_src elisp :tangle yes
(gptel-make-openai "Groq" ;Any name you want
:host "api.groq.com"
:endpoint "/openai/v1/chat/completions"
:stream t
:key (auth-source-pass-get "api-key" "www/console.groq.com/groq@amr.gharbeia.net") ;can be a function that returns the key
:models '(llama-3.1-70b-versatile
llama-3.1-8b-instant
llama3-70b-8192
llama3-8b-8192
mixtral-8x7b-32768
gemma-7b-it))
#+end_src
** Elisa
#+begin_src elisp :tangle yes
(use-package elisa
:defer t
:init
(setopt elisa-limit 5)
(require 'llm-ollama)
(setopt elisa-embeddings-provider (make-llm-ollama :embedding-model "nomic-embed-text"))
(setopt elisa-chat-provider (make-llm-ollama
:chat-model "sskostyaev/openchat:8k-rag"
:embedding-model "nomic-embed-text"))
)
#+end_src
** Org-agent (Local Foundry)
#+begin_src elisp :tangle yes
(use-package org-agent
:straight nil
:load-path "~/.local/share/org-agent/src"
:commands (org-agent-connect org-agent-disconnect)
:init
(setq org-agent-host "127.0.0.1")
(setq org-agent-port 9105)
(setq org-agent-executable-path "~/.local/share/org-agent/bin/org-agent-server")
:config
(message "org-agent: Local brain configured at %s" org-agent-executable-path))
#+end_src

View File

@@ -1,165 +0,0 @@
#+TITLE: Core Emacs Configuration
#+PROPERTY: header-args :tangle yes
* Initialization Bootstrap
This section tangles directly to ~/.emacs to bootstrap the entire system.
#+begin_src elisp :tangle ~/.emacs
;;; .emacs --- Global settings -*- lexical-binding: t; -*-
(setq gc-cons-threshold (* 500 1024 1024))
(add-hook 'after-init-hook (lambda () (setq gc-cons-threshold (* 5 1024 1024))))
(setq straight-repository-branch "develop")
(eval-and-compile
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el"
(or (bound-and-true-p straight-base-dir)
user-emacs-directory)))
(bootstrap-version 7))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el" 'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
(straight-use-package 'use-package)
(straight-use-package 'org))
(setq straight-use-package-by-default t)
(require 'ob-tangle)
;; Load the modular configuration starting from dotemacs.org
(org-babel-load-file (expand-file-name "~/memex/system/dotemacs.org"))
(provide '.emacs)
#+end_src
* Front matter
#+begin_src elisp
;;; emacs-core.el --- Summary
;;; Commentary:
;;; Code:
;; -*- lexical-binding: t; -*-
#+end_src
* Garbage collector
Increase threshold to 500 MB to ease startup
#+begin_src elisp
(setq gc-cons-threshold (* 500 1024 1024))
#+end_src
Decrease threshold to 5 MB after init
#+begin_src elisp
(add-hook 'after-init-hook (lambda () (setq gc-cons-threshold (* 5 1024 1024))))
#+end_src
* Straight.el and use-package
Integrate use-package and straight
#+begin_src elisp
(setq straight-use-package-by-default t)
(require 'use-package)
(straight-use-package 'diminish)
(require 'diminish)
#+end_src
Make sure Org is installed (straight.el)
#+begin_src elisp
(unless (file-directory-p (expand-file-name "~/.emacs.d/straight/versions")) (make-directory (expand-file-name "~/.emacs.d/straight/versions") t))
(use-package org)
#+end_src
* Custom file
#+begin_src elisp
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
(when (file-exists-p custom-file) (load custom-file))
#+end_src
* System information
#+begin_src elisp
(defvar my-laptop-p (equal (system-name) "lilitop"))
(defvar my-server-p (and (equal (system-name) "localhost") (equal user-login-name "root")))
(defvar my-phone-p (not (null (getenv "ANDROID_ROOT")))
"If non-nil, GNU Emacs is running on Termux.")
(when my-phone-p (defvar gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3"))
(global-auto-revert-mode) ; simplifies syncing
#+end_src
* Persistent history
#+begin_src elisp
(savehist-mode)
#+end_src
* Disable Syntax Checkers (Diagnostic)
#+begin_src elisp
(when (fboundp 'flycheck-mode)
(setq flycheck-global-modes nil)
(global-flycheck-mode -1))
(when (fboundp 'flymake-mode)
(setq help-at-pt-display-when-idle t)
;; Disable flymake in all buffers
(add-hook 'find-file-hook (lambda () (flymake-mode -1))))
#+end_src
* Backup and versioning
#+begin_src emacs-lisp
(use-package magit)
#+end_src
* Personal information
#+begin_src elisp
(setq user-full-name "Amr Gharbeia")
(defvar email-address "amr@gharbeia.net")
(defvar calendar-latitude 39.0)
(defvar calendar-longitude -77.1)
(defvar calendar-location-name "Washington, DC")
(defvar calendar-time-zone -300)
(defvar calendar-standard-time-zone-name "EST")
(defvar calendar-daylight-time-zone-name "EDT")
#+end_src
* Saving Emacs Sessions
Close frame when done
#+begin_src elisp
(add-hook 'server-done-hook (lambda () (delete-frame)))
#+end_src
Save desktop session
#+begin_src elisp
(desktop-save-mode t)
#+end_src
* Security
#+begin_src elisp
(use-package password-store)
#+end_src
#+begin_src elisp
(use-package auth-source
:config (auth-source-pass-enable)
)
#+end_src
* End matter
#+begin_src elisp
(provide 'emacs-core)
;;; emacs-core.el ends here
#+end_src

View File

@@ -1,18 +0,0 @@
#+TITLE: Early Init Configuration
#+PROPERTY: header-args :tangle ~/.emacs.d/early-init.el
* early-init.el
For straight.el to pick up before package.el
#+begin_src elisp
(setq package-enable-at-startup nil)
#+end_src
* Run Emacs as a server
#+begin_src elisp
(require 'server)
(unless (server-running-p) (server-start))
(defvar server-max-buffers 100)
#+end_src

View File

@@ -1,166 +0,0 @@
#+TITLE: GTD & Agenda Configuration
#+PROPERTY: header-args :tangle yes
* Agenda
Basic agenda settings
#+begin_src elisp
(setq org-deadline-warning-days 7)
(setq org-agenda-skip-additional-timestamps-same-entry t)
(setq org-agenda-span 'fortnight)
(setq org-agenda-tags-column 'auto)
(setq org-agenda-skip-scheduled-if-deadline-is-shown t)
#+end_src
Agenda files
#+begin_src elisp
(setq org-agenda-files (list
(concat org-directory "/inbox.org")
(concat org-directory "/gtd.org")
(concat org-directory "/org-gtd-tasks.org")
)
)
#+end_src
Better agenda views
#+begin_src elisp :tangle yes
(use-package org-super-agenda)
#+end_src
* To-do
Basic todo
#+begin_src elisp
(setq org-todo-keywords
'(
(sequence "TODO(t)" "NEXT(n)" "WAIT(w@/!)" "|" "DONE(d!)" "CNCL(c@)")
)
)
(setq org-todo-keyword-faces
'(
("TODO" :foreground "red" :weight bold)
("NEXT" :foreground "red" :weight bold)
("WAIT" :foreground "yellow" :weight bold)
("DONE" :foreground "green" :weight bold)
("CNCL" :foreground "blue" :weight bold)
)
)
(setq org-enforce-todo-dependencies t)
(setq org-tags-exclude-from-inheritance '("crypt" "!private"))
#+end_src
Switch entry to 'DONE' when all subentries are done
#+begin_src elisp
(defun org-summary-todo (n-done n-not-done)
"Switch entry to 'DONE' when all subentries are done, to 'TODO' otherwise.
Uses N-DONE and N-NOT-DONE"
(let (org-log-done org-log-states) ; turn off logging
(org-todo (if (= n-not-done 0) "DONE" "TODO")
)
)
)
;; (add-hook 'org-after-todo-statistics-hook #'org-summary-todo)
#+end_src
* Getting Things Done (GTD)
#+begin_src elisp
(use-package f)
(use-package dash)
(use-package s)
(use-package org-edna
:config
(setq org-edna-use-inheritance t)
(org-edna-mode))
(use-package org-gtd
:straight (org-gtd :type git :host github :repo "Trevoke/org-gtd.el")
:demand t
:init (setq org-gtd-update-ack "4.0.0")
:config
(setq org-gtd-keyword-mapping
'((todo . "TODO")
(next . "NEXT")
(wait . "WAIT")
(done . "DONE")
(canceled . "CNCL")))
(setq org-gtd-custom-node-paths
(list (list "Actionable" (expand-file-name "~/memex/gtd.org") "Actions")
(list "Legacy" (expand-file-name "~/memex/org-gtd-tasks.org") "Actions")
(list "Projects" (expand-file-name "~/memex/gtd.org") "Projects")
(list "Incubate" (expand-file-name "~/memex/gtd.org") "Incubate")))
(org-gtd-mode)
)
(global-set-key (kbd "C-c d c") #'org-gtd-capture)
(global-set-key (kbd "C-c d e") #'org-gtd-engage)
(global-set-key (kbd "C-c d p") #'org-gtd-process-inbox)
(with-eval-after-load 'org-gtd
(define-key org-gtd-clarify-map (kbd "C-c c") #'org-gtd-organize))
#+end_src
#+begin_src elisp
(setq org-gtd-directory org-directory)
(setq org-gtd-organize-hooks '(org-gtd-set-area-of-focus))
(setq org-gtd-areas-of-focus '(
"Atoms"
"Bits"
"Cells"
"Flags"
"Business"
"Wealth"
"Learning"
"Skills"
"Privacy"
"Archive"
"Library"
"Writing"
"Health"
"Home"
"Family"
"Social"
"Egypt"
)
)
(setq org-gtd-clarify-show-horizons 'right)
#+end_src
Logging
#+begin_src elisp
(setq org-log-into-drawer "LOGBOOK")
#+end_src
Clocking work in drawer
#+begin_src elisp :tangle yes
(setq org-clock-into-drawer t)
#+end_src
Habits
#+begin_src elisp :tangle yes
(setq org-habit-graph-column 80)
(setq org-habit-show-habits-only-for-today nil)
#+end_src
* Refile
org-refile targets
#+begin_src elisp
(setq org-refile-targets '((nil :maxlevel . 9)
(org-agenda-files :maxlevel . 9)
)
)
#+end_src
Set type of refile targets completion
#+begin_src elisp
(setq org-outline-path-complete-in-steps nil)
#+end_src
Allow refiling to new parents created on the go after confirmation
#+begin_src elisp
(setq org-refile-allow-creating-parent-nodes 'confirm)
#+end_src

View File

@@ -1,101 +0,0 @@
#+TITLE: Media and Books Configuration
#+PROPERTY: header-args :tangle yes
* Read ebooks (calibredb)
#+begin_src elisp
(use-package calibredb
:defer t
:config
(setq calibredb-format-all-the-icons t)
(setq calibredb-format-icons-in-terminal t))
#+end_src
#+begin_src elisp
(defvar calibredb-root-dir (expand-file-name "~/memex/library/books"))
(defvar calibredb-db-dir (expand-file-name "metadata.db" calibredb-root-dir))
(defvar calibredb-id-width 6)
(defvar calibredb-title-width 100)
#+end_src
* PDF Tools
#+begin_src elisp
(use-package pdf-tools
:mode ("\\.pdf\\'" . pdf-view-mode)
:config
(pdf-tools-install :no-query)
(setq-default pdf-view-display-size 'fit-page)
(setq pdf-annot-activate-created-annotations t))
#+end_src
* Annotate PDFs and EPUBs (org-noter)
#+begin_src elisp
(use-package org-noter
:config
(setq org-noter-notes-search-path (list (expand-file-name "~/memex/library/books")))
(setq org-noter-default-notes-file-names '("books.org")))
#+end_src
#+begin_src elisp :tangle ~/.emacs.d/custom.el
(defvar org-noter-notes-search-path (list (concat org-directory "/library/books")))
(defvar org-noter-default-notes-file-names '("books.org"))
#+end_src
* Link PDFs (org-noter-pdftools)
#+begin_src elisp
(use-package org-noter-pdftools
:after org-noter
:config
;; Add a function to ensure precise note is inserted
(defun org-noter-pdftools-insert-precise-note (&optional toggle-no-questions)
(interactive "P")
(org-noter--with-valid-session
(let ((org-noter-insert-note-no-questions (if toggle-no-questions
(not org-noter-insert-note-no-questions)
org-noter-insert-note-no-questions))
(org-pdftools-use-isearch-link t)
(org-pdftools-use-freepointer-annot t))
(org-noter-insert-note (org-noter--get-precise-info)))))
;; fix https://github.com/weirdNox/org-noter/pull/93/commits/f8349ae7575e599f375de1be6be2d0d5de4e6cbf
(defun org-noter-set-start-location (&optional arg)
"When opening a session with this document, go to the current location.
With a prefix ARG, remove start location."
(interactive "P")
(org-noter--with-valid-session
(let ((inhibit-read-only t)
(ast (org-noter--parse-root))
(location (org-noter--doc-approx-location (when (called-interactively-p 'any) 'interactive))))
(with-current-buffer (org-noter--session-notes-buffer session)
(org-with-wide-buffer
(goto-char (org-element-property :begin ast))
(if arg
(org-entry-delete nil org-noter-property-note-location)
(org-entry-put nil org-noter-property-note-location
(org-noter--pretty-print-location location))))))))
(with-eval-after-load 'pdf-annot
(add-hook 'pdf-annot-activate-handler-functions #'org-noter-pdftools-jump-to-note)
)
)
#+end_src
* View EPUBs (nov.el)
#+begin_src elisp :tangle yes
(use-package nov
:config
(add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode))
)
#+end_src
* Zotero (helm-bibtex)
#+begin_src elisp :tangle yes
(use-package helm-bibtex)
#+end_src
#+begin_src elisp :tangle ~/.emacs.d/custom.el
(defvar bibtex-completion-bibliography '("~/bibliography/zotero.bib"))
#+end_src

View File

@@ -1,233 +0,0 @@
#+TITLE: Org Mode Configuration
#+PROPERTY: header-args :tangle yes
* Org Mode
** Basic setup
#+begin_src elisp
(use-package org
:config
(defvar org-outline-path-complete-in-steps nil)
:bind (("C-c l" . org-store-link)
("C-c a" . org-agenda)
("C-c c" . org-capture)
:map org-mode-map)
)
#+end_src
#+begin_src elisp
(setq org-directory (expand-file-name "~/memex/"))
#+end_src
** Looks
Basic
#+begin_src elisp
(defvar org-pretty-entities t) ; Improve org mode looks
(defvar org-hide-emphasis-markers t) ; Hide emphasis markup
(defvar org-num-mode nil)
(defvar org-startup-folded 'shw2levels)
#+end_src
Indentation of headers
#+begin_src elisp
(defvar org-startup-indented t) ; Indent org heirarchy
(defvar org-adapt-indentation t)
(defvar org-hide-leading-stars t) ; Minimal Outline
(defvar org-odd-levels-only nil)
#+end_src
Indentation of lists
#+begin_src elisp
(setq org-list-demote-modify-bullet t)
#+end_src
Org-modern
#+begin_src elisp
(use-package org-modern
:ensure t
:config
;; Choose some fonts
(set-face-attribute 'default nil :family "sans-serif")
(set-face-attribute 'variable-pitch nil :family "sans-serif")
(set-face-attribute 'org-modern-symbol nil :family "Iosevka")
;; Edit settings
(defvar org-auto-align-tags nil)
(defvar org-tags-column 0)
(defvar org-catch-invisible-edits 'show-and-error)
(defvar org-special-ctrl-a/e t)
(defvar org-insert-heading-respect-content t)
;; Org styling, hide markup etc.
(defvar org-hide-emphasis-markers t)
(defvar org-pretty-entities t)
;; Agenda styling
(defvar org-agenda-tags-column 0)
(defvar org-agenda-block-separator ?─)
(defvar org-agenda-time-grid
'((daily today require-timed)
(800 1000 1200 1400 1600 1800 2000)
" ┄┄┄┄┄ " "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄"))
(defvar org-agenda-current-time-string
"◀── now ─────────────────────────────────────────────────")
;; Ellipsis styling
(defvar org-ellipsis "")
(set-face-attribute 'org-ellipsis nil :inherit 'default :box nil)
(global-org-modern-mode)
)
#+end_src
Highlight Sourcecode Syntax
#+begin_src elisp
(setq org-src-fontify-natively t)
(setq org-src-tab-acts-natively t)
#+end_src
Images
#+begin_src elisp
(setq org-startup-with-inline-images t)
(setq org-image-actual-width '(300))
#+end_src
** Capture
#+begin_src elisp
(defvar org-default-notes-file (concat org-directory "inbox.org"))
#+end_src
*** Org-protocol
Linux configuration
#+begin_src bash :tangle yes
[Desktop Entry]
Name=org-protocol
Comment=Intercept calls from emacsclient to trigger custom actions
Categories=Other;
Keywords=org-protocol;
Icon=emacs
Type=Application
Exec=emacsclient -- %u
Terminal=false
StartupWMClass=Emacs
MimeType=x-scheme-handler/org-protocol;
#+end_src
#+begin_src bash :tangle yes
update-desktop-database ~/.local/share/applications/
#+end_src
Basic configuration
#+begin_src elisp
(require 'org-protocol)
(setq org-protocol-default-buffer-for-file-links "*scratch*") ; fixes 'no buffers remain to edit error for org-protocol capturer
#+end_src
Org-protocol templates
#+begin_src elisp :tangle ~/.emacs.d/custom.el
(defvar org-capture-templates '(
("p" "Protocol"
entry
(file "inbox.org")
"* %^{Title}\nSource: %u, %c\n #+BEGIN_QUOTE\n%i\n#+END_QUOTE\n\n\n%?"
)
("L" "Protocol Link"
entry
(file "inbox.org")
"* %? [[%:link][%:description]]\n:PROPERTIES:\n:TITLE: %:description\n:URI: %:link\n:CREATED: %U\n:END:"
:prepend nil
:empty-lines 1
:created t
:kill-buffer t
)
)
)
#+end_src
#+begin_src elisp
(setq org-protocol-default-template-key "L")
#+end_src
Convert Orgzly captures to org-protocol captures standard
#+begin_src elisp
(defun my/org-convert-orgzly-to-org-protocol ()
"Reformat Orgzly bookmark at point to org-protocol bookmark."
(interactive)
(when (org-at-heading-p)
(let ((headline (nth 4 (org-heading-components))))
;; Find and store the link. Delete the link line.
(search-forward-regexp "^https?://\\S-*" nil t)
(let ((link (match-string 0)))
(beginning-of-line)
(kill-line)
;; Delete any trailing blank spaces
(org-back-to-heading)
(end-of-line)
(when (not (org-on-heading-p))
(delete-char 1)
)
;; Set new headline
(goto-char (org-entry-beginning-position))
(org-edit-headline (format "[[%s][%s]]" link headline))
;; Set new properties
(org-set-property "TITLE" headline)
(org-set-property "URI" link)
(message "Reformatted Orgzly bookmark at point to org-protocol bookmark")
)
)
)
)
#+end_src
** Exporting
#+begin_src elisp :tangle yes
(setq org-export-with-smart-quotes t)
(setq org-export-backends '(beamer html latex md))
#+end_src
Export to EPUB
#+begin_src elisp :tangle yes
(use-package ox-epub)
#+end_src
** org-attach
#+begin_src elisp
(setq org-attach-id-dir (concat org-directory "/library"))
#+end_src
** Enable shell scripting support in org-babel
#+begin_src elisp
(defvar org-babel-do-load-languages 'org-babel-load-languages '((shell . t)))
#+end_src
** Insert org-mode links from clipboard
#+begin_src elisp :tangle yes
(use-package org-cliplink
:bind
(("C-x p i" . org-cliplink))
)
#+end_src
** Deft
#+begin_src elisp :tangle yes
(use-package deft
:commands (deft)
:init
(defvar deft-extensions '("org"))
(defvar deft-recursive nil)
(defvar deft-use-filename-as-title t)
:config
(defvar deft-directory org-directory)
(defvar deft-recursive t)
(defvar deft-strip-summary-regexp ":PROPERTIES:\n\\(.+\n\\)+:END:\n")
(defvar deft-use-filename-as-title t)
:bind ("C-c n d" . deft)
)
#+end_src

View File

@@ -1,140 +0,0 @@
#+TITLE: Org-Roam Configuration
#+PROPERTY: header-args :tangle yes
* Org-roam
** Basic org-roam setup
#+begin_src elisp
(use-package org-roam
:init (setq org-roam-v2-ack t) ;; Acknowledge V2 upgrade
:after org
:config
(org-roam-db-autosync-enable)
(require 'org-roam-dailies)
:bind (
("C-c n f" . org-roam-node-find)
("C-c n g" . org-roam-graph)
("C-c n r" . org-roam-node-random)
("C-c n h" . org-roam-node-convert-headline)
("C-c n i" . org-roam-node-insert)
("C-c n o" . org-id-get-create)
("C-c n t" . org-roam-tag-add)
("C-c n a" . org-roam-alias-add)
("C-c n l" . org-roam-buffer-display-dedicated)
)
)
#+end_src
#+begin_src elisp
(setq org-roam-directory (expand-file-name (concat org-directory "notes")))
(setq org-roam-dailies-directory (expand-file-name (concat org-directory "daily")))
#+end_src
#+begin_src elisp :tangle yes
(use-package sqlite3)
(require 'sqlite3)
#+end_src
Include subdirectories in org-roam
#+begin_src elisp
(setq org-roam-file-exclude-regexp "^[.][.]?/")
#+end_src
** Display in org-roam-buffer
#+begin_src elisp :tangle yes
(setq org-roam-mode-sections
(list #'org-roam-backlinks-section
#'org-roam-reflinks-section
#'org-roam-unlinked-references-section
)
)
#+end_src
** Filter org-roam nodes find by tag
#+begin_src elisp :tangle yes
(defun my/org-roam-node-has-tag (node tag)
"Filter function to check if the given NODE has the specified TAG."
(member tag (org-roam-node-tags node))
)
(defun my/org-roam-node-find-by-tag ()
"Find and open an Org-roam node based on a specified tag."
(interactive)
(let ((tag (read-string "Enter tag: ")))
(org-roam-node-find nil nil (lambda (node) (my/org-roam-node-has-tag node tag))))
)
#+end_src
** org-roam-capture templates
#+begin_src elisp
(setq org-roam-capture-templates
'(
("L" "link" plain
(function org-roam--capture-get-point)
"%?"
:file-name "web/%<%Y-%m-%dT%H%M%S>.org"
:head "#+TITLE: ${title}\n#+CREATED: %<%Y-%m-%dT%H%M%S>"
:immediate-finish t
:unnarrowed t
)
("h" "hugo post" plain
"%?"
:target (file+head "posts/${slug}.org"
"#+TITLE: ${title}\n#+DATE: %U\n#+HUGO_BASE_DIR: ~/gharbeia.net\n#+HUGO_SECTION: ./posts\n#+HUGO_AUTO_SET_LASTMOD: t\n#+HUGO_TAGS: article\n#+HUGO_DRAFT: true\n")
:immediate-finish t
:unnarrowed t
)
("p" "person" plain
"%?"
:if-new (file+head "people/${slug}.org"
"#+TITLE: ${title}")
:immediate-finish t
:unnarrowed t
)
)
)
#+end_src
#+begin_src elisp
(setq org-roam-dailies-capture-templates
'(
("d" "daily" plain
""
:target ("file+heaed %<%Y-%m-%d>.org" "#+title: %<%Y-%m-%d>\n\n")
:immediate-finish t
)
)
)
#+end_src
** Move org header to org-roam-daily
#+begin_src elisp :tangle yes
(defun my/org-move-entry-to-daily-notes ()
"Move the current org-mode headline to the daily notes file based on its :CREATED: property."
(interactive)
(let*
(
(created-prop (org-entry-get nil "CREATED"))
(created-date (when created-prop
(org-parse-time-string created-prop)))
(year (nth 5 created-date)) ; Extract year (6th element)
(month (nth 4 created-date)) ; Extract month (5th element)
(day (nth 3 created-date)) ; Extract day (4th element)
(target-date (format "%04d-%02d-%02d" year month day)) ; Format date string
(target-file (org-roam-dailies-goto target-date))
)
(when target-file
(org-cut-subtree)
(find-file target-file)
(goto-char (point-max))
(unless (bolp) (newline))
(org-paste-subtree)
)
)
)
#+end_src

View File

@@ -1,73 +0,0 @@
#+TITLE: Shell Configuration
#+PROPERTY: header-args :tangle yes
* Shell
** Bash completion
#+begin_src elisp
(use-package bash-completion
:config
(require 'bash-completion)
(bash-completion-setup)
)
#+end_src
#+begin_src elisp
(defvar shell-dynamic-complete-functions t)
#+end_src
** Eshell
Add programmable bash completion to Emacs shell-mode
#+begin_src elisp :tangle yes
(require 'bash-completion)
(add-hook 'eshell-mode-hook
(lambda ()
(add-hook 'completion-at-point-functions
'bash-completion-capf-nonexclusive nil t
)
)
)
#+end_src
Use colors in eshell
#+begin_src elisp :tangle yes
(use-package xterm-color
:commands (xterm-color-filter)
)
(use-package eshell
:after xterm-color
:config
(define-key eshell-hist-mode-map (kbd "M-r") #'consult-history)
(add-hook 'eshell-mode-hook
(lambda ()
(setenv "TERM" "xterm-256color")))
(add-hook 'eshell-before-prompt-hook (setq xterm-color-preserve-properties t))
(add-to-list 'eshell-preoutput-filter-functions 'xterm-color-filter)
(setq eshell-output-filter-functions
(remove 'eshell-handle-ansi-color eshell-output-filter-functions)
)
)
#+end_src
Eshell completion
#+begin_src elisp :tangle yes
(add-hook 'eshell-mode-hook
(lambda ()
(add-hook 'completion-at-point-functions
'bash-completion-capf-nonexclusive nil t)))
#+end_src
Emulate A Terminal (EAT)
#+begin_src elisp :tangle yes
(use-package eat
:config
;; For `eat-eshell-mode'.
(add-hook 'eshell-load-hook #'eat-eshell-mode)
;; For `eat-eshell-visual-command-mode'.
(add-hook 'eshell-load-hook #'eat-eshell-visual-command-mode)
)
#+end_src

View File

@@ -1,254 +0,0 @@
#+TITLE: Reading and Writing Configuration
#+PROPERTY: header-args :tangle yes
* Text and Case
** Convert DOuble capitals to single capitals
#+begin_src elisp :tangle yes
(defun my/dcaps-to-scaps ()
"Convert word in DOuble CApitals to Single Capitals."
(interactive)
(and (= ?w (char-syntax (char-before)))
(save-excursion
(and (if (called-interactively-p)
(skip-syntax-backward "w")
(= -3 (skip-syntax-backward "w"))
)
(let (case-fold-search)
(looking-at "\\b[[:upper:]]\\{2\\}[[:lower:]]")
)
(capitalize-word 1)
)
)
)
)
#+end_src
Then, lets define a minor mode for it to be activated.
#+begin_src elisp :tangle yes
(define-minor-mode my-dubcaps-mode
"Toggle 'my-dubcaps-mode' and convert words in DOuble CApitals to Single Capitals as you type."
:init-value nil
:lighter (" DC")
(if my-dubcaps-mode
(add-hook 'post-self-insert-hook #'my/dcaps-to-scaps nil 'local)
(remove-hook 'post-self-insert-hook #'my/dcaps-to-scaps 'local)))
#+end_src
Finally, lets add a hook so that it is on for all the text files Emacs opens.
#+begin_src elisp :tangle yes
(add-hook 'text-mode-hook #'my-dubcaps-mode)
#+end_src
Also, since we add a minor mode string (it might be useful sometimes), currently I prefer to diminish it.
#+begin_src elisp :tangle yes
(defun my/diminish-dubcaps ()
(interactive)
(diminish 'my-dubcaps-mode ""))
(add-hook 'my-dubcaps-mode-hook 'my/diminish-dubcaps)
#+end_src
* Reading and Writing
** Move correctly over camelCased words
#+begin_src elisp
(subword-mode)
#+end_src
** Understand the more common sentence with double space
#+begin_src elisp
(setq sentence-end-double-space nil)
#+end_src
** Join lines into paragraph
#+begin_src elisp
(defun my/fill-or-unfill-paragraph (&optional unfill region)
"Fill paragraph (or REGION). With the prefix argument UNFILL, fill it instead."
(interactive (progn
(barf-if-buffer-read-only)
(list (if current-prefix-arg 'fill) t)))
(let ((fill-column (if unfill fill-column (point-max))))
(fill-paragraph nil region)))
(bind-key "M-q" 'my/fill-or-unfill-paragraph)
#+end_src
#+begin_src elisp
(defun my/fill-or-unfill-all-paragraphs (&optional unfill)
"Fill or unfill all paragraphs in the current buffer.
With the prefix argument UNFILL, fill them instead."
(interactive (list (if current-prefix-arg 'fill)))
(let ((fill-column (if unfill fill-column (point-max))))
(save-excursion
(goto-char (point-min))
(while (not (eobp))
(fill-paragraph nil t)
(forward-paragraph)))))
(bind-key "M-Q" 'my/fill-or-unfill-all-paragraphs)
#+end_src
#+begin_src elisp
(remove-hook 'text-mode-hook #'turn-on-auto-fill)
(add-hook 'text-mode-hook 'turn-on-visual-line-mode)
#+end_src
** Expand some words with auto-correct
#+begin_src elisp :tangle yes
(setq save-abbrevs 'silently)
(setq-default abbrev-mode t)
#+end_src
** ediff
#+begin_src elisp :tangle yes
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
(setq ediff-split-window-function 'split-window-horizontally)
#+end_src
** tramp
#+begin_src elisp :tangle yes
(setq tramp-default-method "ssh"
tramp-backup-directory-alist backup-directory-alist
tramp-ssh-controlmaster-options "ssh")
#+end_src
** Clean up space
#+begin_src elisp :tangle yes
(bind-key "M-SPC" 'cycle-spacing)
#+end_src
** Transform <a href> links into org links
#+begin_src elisp :tangle yes
(defun my/transform-html-links-to-org ()
"Transform all HTML <a> links in the current buffer into 'org-mode' links."
(interactive)
(goto-char (point-min))
(while (re-search-forward "<a href=\"\\(.*?\\)\">\\(.*?\\)</a>" nil t)
(replace-match (org-make-link-string (match-string 1) (match-string 2)))))
#+end_src
** Count words per minute
#+begin_src elisp :tangle yes
(require 'org-clock)
(defun my/org-entry-wpm ()
(interactive)
(save-restriction
(save-excursion
(org-narrow-to-subtree)
(goto-char (point-min))
(let* ((words (count-words-region (point-min) (point-max)))
(minutes (org-clock-sum-current-item))
(wpm (/ words minutes)))
(message "WPM: %d (words: %d, minutes: %d)" wpm words minutes)
(kill-new (number-to-string wpm))
)
)
)
)
#+end_src
** Enable dict mode
#+begin_src elisp :tangle yes
(setq dictionary-server "automatic")
#+end_src
** Pick out passive voice and weasel words
#+begin_src elisp :tangle yes
(use-package writegood-mode
:diminish writegood-mode
:config
(progn (add-hook 'text-mode-hook 'writegood-mode))
)
#+end_src
** Org-babel docker
#+begin_src elisp :tangle yes
(use-package ob-docker-build
:straight (ob-docker-build :type git :host github :repo "ifitzpat/ob-docker-build")
:defer t
:config
(add-to-list 'org-babel-load-languages '(docker-build . t))
(org-babel-do-load-languages 'org-babel-load-languages org-babel-load-languages)
)
#+end_src
* Spelling and syntax
** Spell checking
This requires installation of hunspell
#+begin_src bash :tangle yes
sudo apt install hunspell
#+end_src
#+begin_src elisp
(use-package flyspell
:config (setq ispell-program-name "hunspell"
ispell-default-dictionary "en_US"
)
:diminish (flyspell-mode . "φ")
:hook (text-mode . flyspell-mode)
:bind (
("M-<f7>" . flyspell-buffer)
("<f7>" . flyspell-word)
("C-;" . flyspell-auto-correct-previous-word)
)
)
#+end_src
** Flyspell correct
#+begin_src elisp :tangle yes
(use-package flyspell-correct
:after flyspell
:bind (:map flyspell-mode-map ("C-;" . flyspell-correct-wrapper))
)
#+end_src
** Flycheck
Needs external checkers installed
#+begin_src elisp
(use-package flycheck
:defer t
:diminish (flycheck-mode . "")
:config
(setq flycheck-emacs-lisp-load-path 'inherit)
(setq flycheck-emacs-lisp-load-path (concat user-emacs-directory "straight/build")))
#+end_src
** Flycheck bash
#+begin_src bash :tangle yes
sudo apt install devscripts
#+end_src
#+begin_src elisp :tangle yes
(use-package flycheck-checkbashisms
:config
(flycheck-checkbashisms-setup)
)
#+end_src
** Yaml
#+begin_src elisp :tangle yes
(use-package yaml-mode
:config
(add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode))
(add-to-list 'auto-mode-alist '("\\.yaml\\'" . yaml-mode))
)
#+end_src
** Docker
#+begin_src elisp :tangle yes
(use-package docker-compose-mode)
#+end_src

View File

@@ -46,7 +46,7 @@ notes/org-skill-memex.org|2026-03-31T13:03:26-04:00|2026-04-07T13:42:42-04:00
notes/org-skill-model-explorer.org|2026-03-30T21:16:05-04:00|2026-04-07T13:42:42-04:00 notes/org-skill-model-explorer.org|2026-03-30T21:16:05-04:00|2026-04-07T13:42:42-04:00
notes/org-skill-object-store-persistence.org|2026-03-31T18:28:47-04:00|2026-04-07T13:42:42-04:00 notes/org-skill-object-store-persistence.org|2026-03-31T18:28:47-04:00|2026-04-07T13:42:42-04:00
notes/org-skill-onboarding.org|2026-03-31T18:13:26-04:00|2026-04-07T13:42:42-04:00 notes/org-skill-onboarding.org|2026-03-31T18:13:26-04:00|2026-04-07T13:42:42-04:00
notes/org-skill-org-agent.org|2026-04-07T12:57:15-04:00|2026-04-07T13:42:42-04:00 notes/org-skill-opencortex.org|2026-04-07T12:57:15-04:00|2026-04-07T13:42:42-04:00
notes/org-skill-org-delivery.org|2026-03-30T21:16:05-04:00|2026-04-07T13:42:42-04:00 notes/org-skill-org-delivery.org|2026-03-30T21:16:05-04:00|2026-04-07T13:42:42-04:00
notes/org-skill-org-gtd-archive-roam-daily.org|2026-03-31T16:14:37-04:00|2026-04-07T13:42:42-04:00 notes/org-skill-org-gtd-archive-roam-daily.org|2026-03-31T16:14:37-04:00|2026-04-07T13:42:42-04:00
notes/org-skill-org-json-bridge.org|2026-03-31T16:14:37-04:00|2026-04-07T13:42:42-04:00 notes/org-skill-org-json-bridge.org|2026-03-31T16:14:37-04:00|2026-04-07T13:42:42-04:00

View File

@@ -1,6 +1,6 @@
(require 'org) (require 'org)
(defun org-agent-inject-metadata (file created edited) (defun opencortex-inject-metadata (file created edited)
(with-current-buffer (find-file-noselect file) (with-current-buffer (find-file-noselect file)
(org-with-wide-buffer (org-with-wide-buffer
(goto-char (point-min)) (goto-char (point-min))
@@ -9,12 +9,12 @@
(org-id-get-create) ; Ensure drawer exists (org-id-get-create) ; Ensure drawer exists
(setq props (org-get-property-block)))) (setq props (org-get-property-block))))
(org-set-property "CREATED" (org-agent-format-iso created)) (org-set-property "CREATED" (opencortex-format-iso created))
(org-set-property "EDITED" (org-agent-format-iso edited)) (org-set-property "EDITED" (opencortex-format-iso edited))
(save-buffer) (save-buffer)
(kill-buffer)))) (kill-buffer))))
(defun org-agent-format-iso (iso-date) (defun opencortex-format-iso (iso-date)
"Convert 2026-04-07T10:00:00+00:00 to [2026-04-07 Tue 10:00]" "Convert 2026-04-07T10:00:00+00:00 to [2026-04-07 Tue 10:00]"
(let ((time (parse-time-string iso-date))) (let ((time (parse-time-string iso-date)))
(format-time-string "[%Y-%m-%d %a %H:%M]" (apply #'encode-time time)))) (format-time-string "[%Y-%m-%d %a %H:%M]" (apply #'encode-time time))))
@@ -26,4 +26,4 @@
(dolist (line lines) (dolist (line lines)
(let ((parts (split-string line "|"))) (let ((parts (split-string line "|")))
(when (= (length parts) 3) (when (= (length parts) 3)
(org-agent-inject-metadata (nth 0 parts) (nth 1 parts) (nth 2 parts)))))) (opencortex-inject-metadata (nth 0 parts) (nth 1 parts) (nth 2 parts))))))

View File

@@ -2,7 +2,7 @@
(ql:quickload :usocket :silent t) (ql:quickload :usocket :silent t)
(defun send-to-swank (form-string) (defun send-to-swank (form-string)
(let* ((msg (format nil "(:emacs-rex (swank:interactive-eval ~s) :org-agent t 1)" form-string)) (let* ((msg (format nil "(:emacs-rex (swank:interactive-eval ~s) :opencortex t 1)" form-string))
(len (format nil "~6,'0x" (length msg))) (len (format nil "~6,'0x" (length msg)))
(socket (usocket:socket-connect "127.0.0.1" 4005)) (socket (usocket:socket-connect "127.0.0.1" 4005))
(stream (usocket:socket-stream socket))) (stream (usocket:socket-stream socket)))

File diff suppressed because one or more lines are too long

View File

@@ -1,16 +0,0 @@
(let ((config-dir "~/memex/system/"))
;; Load the core settings, including package management and essential setup.
(org-babel-load-file (expand-file-name "emacs-core.org" config-dir))
;; Load early init settings (if separate and not fully covered by core)
(org-babel-load-file (expand-file-name "emacs-early-init.org" config-dir))
;; Load other modules in a logical order
(org-babel-load-file (expand-file-name "emacs-org.org" config-dir))
(org-babel-load-file (expand-file-name "emacs-gtd.org" config-dir))
(org-babel-load-file (expand-file-name "emacs-roam.org" config-dir))
(org-babel-load-file (expand-file-name "emacs-writing.org" config-dir))
(org-babel-load-file (expand-file-name "emacs-media.org" config-dir))
(org-babel-load-file (expand-file-name "emacs-shell.org" config-dir))
(org-babel-load-file (expand-file-name "emacs-ai.org" config-dir))
(org-babel-load-file (expand-file-name "emacs-misc.org" config-dir)))

View File

@@ -1,4 +1,4 @@
(in-package :org-agent.skills.org-skill-architect) (in-package :opencortex.skills.org-skill-architect)
(defun architect-actuate (action context) (defun architect-actuate (action context)
(declare (ignore context)) (declare (ignore context))
@@ -9,11 +9,11 @@
(if (and note-path blueprint-content) (if (and note-path blueprint-content)
(progn (progn
(org-agent:kernel-log "ARCHITECT - Appending PROTOCOL to ~a" note-path) (opencortex:kernel-log "ARCHITECT - Appending PROTOCOL to ~a" note-path)
(with-open-file (out note-path :direction :output :if-exists :append) (with-open-file (out note-path :direction :output :if-exists :append)
(format out "~%* Phase B: Blueprint (PROTOCOL)~%:PROPERTIES:~%:STATUS: SIGNED~%:END:~%~%~a" (format out "~%* Phase B: Blueprint (PROTOCOL)~%:PROPERTIES:~%:STATUS: SIGNED~%:END:~%~%~a"
blueprint-content)) blueprint-content))
(format nil "SUCCESS - Architect established PROTOCOL in ~a" note-path)) (format nil "SUCCESS - Architect established PROTOCOL in ~a" note-path))
(progn (progn
(org-agent:kernel-log "ARCHITECT FAILURE - Missing path or content in action: ~a" action) (opencortex:kernel-log "ARCHITECT FAILURE - Missing path or content in action: ~a" action)
nil)))) nil))))

View File

@@ -1,4 +1,4 @@
(in-package :org-agent.skills.org-skill-architect) (in-package :opencortex.skills.org-skill-architect)
(defun neuro-skill-architect (context) (defun neuro-skill-architect (context)
(let* ((payload (getf context :payload)) (let* ((payload (getf context :payload))

View File

@@ -1,10 +1,10 @@
(in-package :org-agent.skills.org-skill-architect) (in-package :opencortex.skills.org-skill-architect)
(defun architect-scan-all-notes () (defun architect-scan-all-notes ()
(let* ((notes-dir (or (uiop:getenv "MEMEX_NOTES") "/home/user/memex/notes/")) (let* ((notes-dir (or (uiop:getenv "MEMEX_NOTES") "/home/user/memex/notes/"))
(files (uiop:directory-files (uiop:ensure-directory-pathname notes-dir))) (files (uiop:directory-files (uiop:ensure-directory-pathname notes-dir)))
(ready-notes '())) (ready-notes '()))
(org-agent:kernel-log "ARCHITECT - Scanning ~a files in ~a" (length files) notes-dir) (opencortex:kernel-log "ARCHITECT - Scanning ~a files in ~a" (length files) notes-dir)
(dolist (file files) (dolist (file files)
(let ((name (pathname-name file)) (let ((name (pathname-name file))
(type (pathname-type file))) (type (pathname-type file)))
@@ -13,5 +13,5 @@
(string-equal type "org")) (string-equal type "org"))
(let ((status (architect-perceive-frozen-prd file))) (let ((status (architect-perceive-frozen-prd file)))
(when status (push status ready-notes)))))) (when status (push status ready-notes))))))
(org-agent:kernel-log "ARCHITECT - Found ~a ready notes." (length ready-notes)) (opencortex:kernel-log "ARCHITECT - Found ~a ready notes." (length ready-notes))
ready-notes)) ready-notes))

View File

@@ -1,4 +1,4 @@
(in-package :org-agent) (in-package :opencortex)
(defun execute-openrouter-request (prompt system-prompt &key model) (defun execute-openrouter-request (prompt system-prompt &key model)
(let ((api-key (uiop:getenv "OPENROUTER_API_KEY")) (let ((api-key (uiop:getenv "OPENROUTER_API_KEY"))
@@ -8,7 +8,7 @@
(kernel-log "OPENROUTER DEBUG - Using Model: ~a" model-id) (kernel-log "OPENROUTER DEBUG - Using Model: ~a" model-id)
(let* ((headers `(("Content-Type" . "application/json") (let* ((headers `(("Content-Type" . "application/json")
("Authorization" . ,(format nil "Bearer ~a" api-key)) ("Authorization" . ,(format nil "Bearer ~a" api-key))
("HTTP-Referer" . "https://github.com/amr/org-agent"))) ("HTTP-Referer" . "https://github.com/amr/opencortex")))
(body (cl-json:encode-json-to-string (body (cl-json:encode-json-to-string
`((model . ,model-id) `((model . ,model-id)
(messages . (( (role . "system") (content . ,system-prompt) ) (messages . (( (role . "system") (content . ,system-prompt) )

View File

@@ -1,4 +1,4 @@
(in-package :org-agent) (in-package :opencortex)
(defun ask-neuro (prompt &key (system-prompt "You are the Probabilistic Engine engine of a Neurosymbolic Lisp Machine.") (cascade nil) (context nil)) (defun ask-neuro (prompt &key (system-prompt "You are the Probabilistic Engine engine of a Neurosymbolic Lisp Machine.") (cascade nil) (context nil))
"Dispatches a neural request through the provider cascade. "Dispatches a neural request through the provider cascade.
@@ -14,7 +14,7 @@
(kernel-log "PROBABILISTIC ENGINE: Attempting backend ~a..." backend) (kernel-log "PROBABILISTIC ENGINE: Attempting backend ~a..." backend)
(let* (;; Consult the Economist for the model ID if the skill is available (let* (;; Consult the Economist for the model ID if the skill is available
(model (ignore-errors (model (ignore-errors
(uiop:symbol-call :org-agent.skills.org-skill-economist :economist-get-model-for-provider backend))) (uiop:symbol-call :opencortex.skills.org-skill-economist :economist-get-model-for-provider backend)))
(result (if model (result (if model
(funcall backend-fn prompt system-prompt :model model) (funcall backend-fn prompt system-prompt :model model)
(funcall backend-fn prompt system-prompt)))) (funcall backend-fn prompt system-prompt))))
@@ -30,7 +30,7 @@
(unless api-key (return-from execute-openrouter-request "(:type :LOG :payload (:text \"OpenRouter API Key missing\"))")) (unless api-key (return-from execute-openrouter-request "(:type :LOG :payload (:text \"OpenRouter API Key missing\"))"))
(let* ((headers `(("Content-Type" . "application/json") (let* ((headers `(("Content-Type" . "application/json")
("Authorization" . ,(format nil "Bearer ~a" api-key)) ("Authorization" . ,(format nil "Bearer ~a" api-key))
("HTTP-Referer" . "https://github.com/amr/org-agent"))) ("HTTP-Referer" . "https://github.com/amr/opencortex")))
(body (cl-json:encode-json-to-string (body (cl-json:encode-json-to-string
`((model . ,model-id) `((model . ,model-id)
(messages . (( (role . "system") (content . ,system-prompt) ) (messages . (( (role . "system") (content . ,system-prompt) )

View File

@@ -1,4 +1,4 @@
(in-package :org-agent) (in-package :opencortex)
(defun ask-neuro (prompt &key (system-prompt "You are the Probabilistic Engine engine of a Neurosymbolic Lisp Machine.") (cascade nil) (context nil)) (defun ask-neuro (prompt &key (system-prompt "You are the Probabilistic Engine engine of a Neurosymbolic Lisp Machine.") (cascade nil) (context nil))
(let ((backends (cond (let ((backends (cond
@@ -11,7 +11,7 @@
(when backend-fn (when backend-fn
(kernel-log "PROBABILISTIC ENGINE: Attempting backend ~a..." backend) (kernel-log "PROBABILISTIC ENGINE: Attempting backend ~a..." backend)
(let* ((model (ignore-errors (let* ((model (ignore-errors
(uiop:symbol-call :org-agent.skills.org-skill-economist :economist-get-model-for-provider backend))) (uiop:symbol-call :opencortex.skills.org-skill-economist :economist-get-model-for-provider backend)))
(result (if model (result (if model
(funcall backend-fn prompt system-prompt :model model) (funcall backend-fn prompt system-prompt :model model)
(funcall backend-fn prompt system-prompt)))) (funcall backend-fn prompt system-prompt))))

Some files were not shown because too many files have changed in this diff Show More