222 Commits

Author SHA1 Message Date
835d638bf3 passepartout: v0.3.0 — Event Orchestration, HITL, Daily-Driver TUI
Test results: 86 pass / 0 fail across 21 suites. TUI integration: 7/7 pass.
Features: 9-vector dispatcher gates, HITL Flight Plan workflow, Event
Orchestrator, Context Manager, Model-Tier Routing, Memory Scope
Segmentation, Async Embedding Gateway, TUI Experience (scrollback,
history, status bar, themes, tab completion), v0.2.x backfill
remediation (14 items), multi-distro deployment, project rename.
Stats: 31 literate Org files with full prose.
2026-05-06 15:52:53 -04:00
6c0e0f4d8d passepartout: 6 QoL fixes — log-message, now, TUI loads, handshake, cascade, daemon boot 2026-05-06 11:40:17 -04:00
a7233931f9 passepartout: v0.3.0 complete — TUI rendering fixed 2026-05-06 11:21:57 -04:00
85cb951816 passepartout: fix input-blocking — agent responses now render immediately 2026-05-06 11:14:50 -04:00
bd959df78c passepartout: connect-daemon retry + TUI connection feedback 2026-05-06 10:46:52 -04:00
9ce0f7b5b2 passepartout: TUI reader loop — silent timeouts, sleep on idle 2026-05-06 10:25:20 -04:00
9351b1c74d passepartout: fix backspace + TUI initial redraw + socket type 2026-05-06 10:12:00 -04:00
5bd20cb7b3 passepartout: fix backspace — normalize Croatoan key structs 2026-05-06 09:48:40 -04:00
f774f53cbd passepartout: pre-warm in setup, TUI rendering diagnostics 2026-05-06 09:20:50 -04:00
aefd3421d3 passepartout: fix TUI agent-responds — text-match instead of unicode arrow 2026-05-06 09:07:22 -04:00
e663663e49 passepartout: cascade parsing test + TUI integration diagnostics 2026-05-06 08:56:14 -04:00
1edf3c3347 passepartout: fix cl-dotenv quote contamination in cascade parsing 2026-05-06 08:27:05 -04:00
6a252d989a passepartout: CLI test, TUI integration harness fixes 2026-05-05 20:58:47 -04:00
6f6ea7a967 passepartout: fix final 4 test bugs — 184 checks, 0 failures 2026-05-05 20:49:05 -04:00
cf67171940 passepartout: fix 12 pre-existing test bugs — 180/185 pass 2026-05-05 20:06:28 -04:00
26093f43d5 passepartout: fix skill loader — preserve test in-package forms, un-jail dispatcher 2026-05-05 19:17:05 -04:00
966b6b8016 passepartout: v0.3.0 complete — embedding gateway finished, all ROADMAP items DONE 2026-05-05 18:24:15 -04:00
6a0bb91f8c passepartout: v0.3.0 deferred features — TUI polish, context persistence, theming 2026-05-05 18:02:56 -04:00
bfd54d3a44 passepartout: v0.3.0 finish — TUI, embedding, gateway, export hygiene 2026-05-05 17:42:09 -04:00
139cc417a7 passepartout: remove TUI :force t 2026-05-05 16:51:51 -04:00
95232f6663 passepartout: TUI harness tuning 2026-05-05 16:45:56 -04:00
0b71f98f37 passepartout: fix paren imbalances 2026-05-05 16:25:28 -04:00
dcbb1279d4 passepartout: deploy fixes 2026-05-05 14:26:27 -04:00
d0117e495a passepartout: TUI ASDF system fix for 3-file split 2026-05-05 14:15:47 -04:00
caabb7f10b passepartout: close remaining test gaps 2026-05-05 13:53:00 -04:00
101b9174df passepartout: cascade-failure detection in TUI tests 2026-05-05 13:44:04 -04:00
4a7ed5ed90 passepartout: TUI integration test improvements 2026-05-05 13:41:58 -04:00
2c7a2ee345 passepartout: integration tests Phase 2+3 2026-05-05 13:38:00 -04:00
ee36d35785 passepartout: system integration tests 2026-05-05 13:26:09 -04:00
ad33e1bde3 passepartout: close high-priority test gaps 2026-05-05 12:53:58 -04:00
45e3c2bc02 passepartout: Tier 3 contracts and tests 2026-05-05 12:36:43 -04:00
b6137e0eff passepartout: contract sections for Tier 2 pipeline modules 2026-05-05 12:19:25 -04:00
8606370c79 passepartout: security module contracts and tests 2026-05-05 12:08:12 -04:00
89c66af5f4 passepartout: architectural intent template 2026-05-05 11:51:18 -04:00
898dd11cbd passepartout: deepen test suites 2026-05-05 10:54:00 -04:00
cf350b2754 passepartout: embedded test migration 2026-05-05 10:29:15 -04:00
a8efd03c2c passepartout: all tests sourced from org (diagnostics rename, orphans adopted) 2026-05-05 09:58:06 -04:00
7065d190ab passepartout: fix dead test suite (export list, stale duplicates, 14/14 pass) 2026-05-05 09:36:24 -04:00
069276b8ee agents: require red-proof in TDD cycle 2026-05-05 09:07:42 -04:00
252229593d passepartout: provider revert 2026-05-04 20:41:48 -04:00
00f7675fb5 passepartout: thread-isolated LLM provider 2026-05-04 19:21:43 -04:00
5b664ea739 passepartout: deepseek-first cascade 2026-05-04 18:46:39 -04:00
595672466e passepartout: fix style-warnings + roadmap update 2026-05-04 18:34:52 -04:00
36c62625fa passepartout: LLM timeout fix 2026-05-04 18:21:10 -04:00
724faad29d passepartout: LLM timeout config 2026-05-04 18:12:23 -04:00
a707f1be71 passepartout: 3-file TUI split 2026-05-04 17:01:21 -04:00
05d4342810 inbox: updated 2026-05-04 16:50:25 -04:00
f6da30f2a8 passepartout: TUI with colors, LLM routing, /eval 2026-05-04 16:42:39 -04:00
eaabac375b AGENTS: add TUI REPL workflow (/eval + Swank) 2026-05-04 16:06:32 -04:00
8725822179 passepartout: TUI rewrite with REPL + Swank 2026-05-04 16:05:48 -04:00
af56cfe789 passepartout: fix TUI crash 2026-05-04 13:42:44 -04:00
5b75527e31 passepartout: commit TUI fix + backtrace diag 2026-05-04 12:57:17 -04:00
7e65580958 passepartout: fix archivist handler-case 2026-05-04 12:04:57 -04:00
a0005850d1 passepartout: fix pre-existing warnings (LISP-STRUCTURAL-CHECK, T-as-variable, SOME arg) 2026-05-04 11:58:25 -04:00
4a3d04e251 passepartout: exclude gateway-tui from skill loader 2026-05-04 11:49:11 -04:00
24b89a1513 passepartout: fix system-config balance 2026-05-04 11:44:31 -04:00
85202fd4f8 passepartout: setup wizard improvements + remove Ollama 2026-05-04 11:41:01 -04:00
c43412f390 passepartout: fix symlink target 2026-05-04 11:32:05 -04:00
ac052440b7 passepartout: fix deploy paths + TUI protocol 2026-05-04 11:28:46 -04:00
dbf3a81962 passepartout: TUI config panel + onboarding 2026-05-04 11:09:22 -04:00
76a0fd407b passepartout: Phase 4 onboarding + TUI config panel 2026-05-04 10:36:29 -04:00
a7cd6c9aac passepartout: TUI config + provider test + slot descriptions 2026-05-04 10:26:54 -04:00
b396cdac60 passepartout: rename/fix/explorer commit 2026-05-04 09:59:12 -04:00
4f34969224 rename: opencortex → passepartout across memex
- .gitmodules: update submodule paths (projects/opencortex → projects/passepartout,
  projects/opencortex-contrib → projects/passepartout-contrib)
- gtd.org, README.org: update project references and display names
- check.lisp, gemini-vision.org, agora/TODO.org: update file paths
- dotemacs: update agenda paths and template config
- system/plans/: update all flight plan references
- system/backups/: update monolithic backup references
2026-05-03 11:47:52 -04:00
44a1b43cba release(opencortex): bump submodule to v0.2.0 2026-05-01 21:51:48 -04:00
cb783530e5 refactor(gtd): move OpenCortex tasks to project-local TODO.org
- Slim gtd.org by linking to projects/opencortex/TODO.org
- gtd.org reduced from 1615 to 822 lines (-793)
- OpenCortex tasks now live in projects/opencortex/TODO.org
- Add projects/opencortex/TODO.org to org-agenda-files

Engineering Core and personal tasks remain in gtd.org
2026-05-01 21:46:04 -04:00
0168281c8c fix(opencortex): update submodule with final TUI and harness stability fixes 2026-05-01 18:16:55 -04:00
bef72ed55f refactor(opencortex): update submodule to include harness fixes and mandate centralization 2026-05-01 12:43:25 -04:00
a9be1d99b3 feat(opencortex): tmux TUI testing, unified LLM backend, daemon fixes
Submodule update includes:
- feat(tui): background reader thread, error handling, TERM guard
- feat(llm): unified OpenAI-compatible backend (Ollama/OpenRouter/OpenAI/Anthropic/Groq/Gemini)
- fix(loop): correct .env loading path (.config/opencortex)
- fix(daemon): restart with updated XDG harness files
- fix(reason): add generate-tool-belt-prompt, policy explanation, deterministic gate
2026-04-30 19:58:02 -04:00
d5b62ee642 feat(tui): add background reader, error handling, connection state 2026-04-30 19:53:02 -04:00
f858b86b64 docs(AGENTS): add utils-lisp mandate for Lisp structural operations
- NEW: REPL-first workflow requirement
- NEW: Must use utils-lisp functions for any .lisp work
- NEW: Never use edit tool on .lisp files directly
- NEW: Post-task verification: REPL verified + utils-lisp used
2026-04-30 11:17:45 -04:00
15e45e57e8 refactor: portable tangling with %%SKILLS_DIR%% placeholder 2026-04-30 11:14:32 -04:00
d68bdb2d2f fix: add in-package to REPL skill org 2026-04-30 11:11:41 -04:00
1886b7ed5d refactor: absolute XDG paths for skill tangling 2026-04-30 11:09:48 -04:00
622b85dd94 refactor: XDG tangle paths for skills
- Skills now tangle to $OC_DATA_DIR/skills/ (XDG)
- Removed manually-created .lisp files from repo
2026-04-30 11:09:23 -04:00
4b04266c16 fix(opencortex): harness compile errors resolved
- FIX: copy-org-object -> deep-copy-org-object (struct conflict)
- FIX: malformed char= syntax in reason.lisp
2026-04-30 10:58:23 -04:00
1adc80bcfb docs(gtd): add REPL skill to v0.2.0 roadmap
- Added org-skill-repl as DONE under INTERACTIVE REFINEMENT
- Enables REPL-first workflow with literate reflection in org
2026-04-30 10:54:18 -04:00
213c9f8c90 feat(skills): add org-skill-repl for persistent Lisp evaluation
Enables agent to:
- Evaluate Lisp code with result/output/error separation
- Inspect variables and functions
- List bound variables in package
- Load files into image
- Supports REPL-first workflow with literate reflection in org
2026-04-30 10:54:08 -04:00
492c84f881 chore(memex): add chat notes and lisp check file 2026-04-30 10:52:48 -04:00
cf5f0d13d0 feat(opencortex): v0.2.0 skills consolidation
- NEW: org-skill-utils-lisp (3-phase validation, sandboxed eval, AST tools)
- NEW: org-skill-utils-org (org headline manipulation, property management)
- DELETE: org-skill-lisp-utils, org-skill-emacs-edit (merged)
- ADD: opencortex setup wizard, opencortex doctor command
- ADD: Native TUI with Croatoan
- HARDEN: Skill loader, package jailing fixes
2026-04-30 10:52:27 -04:00
dfa13d359c docs(gtd): seal v0.2.0 roadmap milestones 2026-04-28 19:51:01 -04:00
42e5c9060e docs(inbox): clear release notes 2026-04-28 19:48:59 -04:00
0121082bc6 feat(chaos): seal v0.2.0 with Tier 2/3 validation and TUI fixes 2026-04-28 19:48:59 -04:00
6f548aa7ac fix: resolve TUI syntax errors and color constants 2026-04-28 14:45:11 -04:00
315ef305e9 chore: complete scorched earth bootstrap and seal v0.2.0-pre fixes 2026-04-28 14:08:25 -04:00
aa70766a4f docs(gtd): mark chaos bugfixes as done and update submodule ref 2026-04-28 14:03:03 -04:00
a842f10b35 chore(opencortex): update submodule to latest fix for v0.2.0 2026-04-28 10:46:31 -04:00
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
122 changed files with 5237 additions and 6448 deletions

18
.gitmodules vendored
View File

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

179
AGENTS.md Normal file
View File

@@ -0,0 +1,179 @@
# AGENTS.md — OpenCode Tool Usage Guide
This file tells AI coding agents which tools are available and when to use them.
It is read by agents working on the Memex / Passepartout project.
## Development Workflow (Must Follow)
All development MUST follow this cycle, beginning to end:
1. **Start in REPL** — Everything begins and ends in the Passepartout REPL (port 9105)
2. **TDD in REPL** — Red-Green-Refactor cycle:
1. Write a FAILING test first (use `(passepartout:deftest name ...)` or `fiveam:test`)
2. **Prove RED**: Run `(passepartout:run-test 'test-name)` — it MUST fail.
If it passes before code exists, the test is broken or testing nothing.
Record the failure output.
3. Develop code in REPL to make the test pass
4. Use lisp-structural-check to validate code while developing
5. Evaluate forms with `eval-defun` or equivalent
6. Run tests again → they should PASS
7. Repeat until feature is complete
3. **Reflect in Org** — Once code works in REPL, reflect it in the .org literate source file
4. **Tangle with Emacs** — Use `org-babel-tangle` to generate .lisp from .org
5. **Validate tangled lisp** — Run `lisp-structural-check` on the result
6. **Commit** — Only after validation passes
**When tools fail**:
- If any recommended tool fails, you MUST explain:
- Why it failed (specific error, missing dependency, etc.)
- How we can make it work (fix, configuration, alternative approach)
- Then **PAUSE** and ask for permission before trying a different method
**Rule**: Do not leave the REPL to develop. If something can't be done in REPL, explain why and ask before proceeding otherwise.
---
## Available Tools — Use These First
### 1. Passepartout REPL (port 9105)
The daemon runs with ALL skills loaded. Use it instead of the deploy-crash-cycle.
**Send forms via Python bridge:**
```python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("127.0.0.1", 9105))
msg = '(:type :event :payload (:sensor :repl-eval :code "(+ 1 2)"))'
s.sendall(f"{len(msg):06x}".encode() + msg.encode())
```
**Or via SBCL directly (attached to daemon):**
```lisp
(sb-bsd-sockets:socket-send sock payload len)
```
**Key functions available:**
- `(passepartout:lisp-structural-check "code-string")` — returns (values t nil) or (values nil "error")
- `(passepartout:lisp-validate "code-string" :semantic t)` — full validation
- `(passepartout:log-message "format ~a" arg)` — write to daemon log
- Any exported symbol from `passepartout` package
### 2. Lisp Structural Tools (pre-deploy validation)
**ALWAYS run these before tangling/deploying Lisp changes.**
`lisp-structural-check` works on ANY Lisp string, not just Org blocks:
```lisp
;; Via REPL — send to port 9105:
(passepartout:lisp-structural-check "<lisp-code-string>")
;; Returns: (values t nil) on success, (values nil "error details") on failure
```
For Org files:
```lisp
(passepartout:literate-block-balance-check "/path/to/file.org")
```
These catch paren mismatches in <1 second vs. the 60-second deploy-crash cycle.
### 3. Emacs Interactive
Use Emacs for interactive Lisp development:
- `forward-sexp` / `backward-sexp` — navigate balanced expressions
- `show-paren-mode` — visual paren matching
- `eval-defun` (C-M-x) — evaluate the current top-level form
- `eval-region` — evaluate selected region
- `org-babel-tangle` — tangle a single file: `M-x org-babel-tangle`
- Batch tangle: `emacs --batch --eval "(progn (require 'org) (find-file \"file.org\") (org-babel-tangle) (kill-buffer))"`
### 4. Tmux (for TUI testing)
```bash
# Start TUI in detached session
tmux new-session -d -s test "passepartout tui 2>&1 | tee /tmp/tui.log"
# Send keys
tmux send-keys -t test "hello world" Enter
# Capture output
tmux capture-pane -t test -p -S -200
# Clean up
tmux kill-session -t test
```
### 5. Pre-Commit Hook
Validates staged org files by tangling + compiling in daemon:
```
ln -sf ../../scripts/pre-commit-repl-check .git/hooks/pre-commit
```
Run manually: `passepartout setup` or `git commit` (hook auto-runs).
### 6. TUI REPL (via /eval + Swank)
The TUI process has its own REPL for live development:
**Built-in /eval command** — type in the TUI input:
- `/eval (+ 1 2)``=> 3` displayed in chat
- `/eval *state*` → inspect full TUI state plist
- `/eval (view-status sw)` → force status bar re-render
- `/eval (add-msg :system "test")` → inject a test message
**Emacs + Swank REPL** — connect Emacs to the TUI process:
1. Start TUI: `passepartout tui`
2. In Emacs: `M-x slime-connect RET 127.0.0.1 RET 4006`
3. `C-M-x` any form from `org/gateway-tui.org` → evaluates in live TUI process
4. Configure port: `export TUI_SWANK_PORT=4009` (default: 4006)
**Croatoan note**: Rendering functions (`view-status`, `view-chat`, `view-input`) write to the terminal and can't be fully tested from Emacs. Inspect return values instead, and test rendering with `/eval` commands in the TUI itself.
---
## Commands
- Validate code: Send to REPL at port 9105 using socket bridge (see Development Workflow)
- Run tests: `(passepartout:run-tests)` in REPL
- Tangle org: `emacs --batch --eval "(progn (require 'org) (find-file \"file.org\") (org-babel-tangle) (kill-buffer))"`
## Project Structure
- Source (literate): `org/`
- Source (tangled): `lisp/`
- Tests: `tests/`
- Scripts: `scripts/`
- Deployment: `~/.local/share/passepartout/`
- TODO tracking: `docs/ROADMAP.org`
## When Done Means
- Red proof recorded: Test was run and confirmed FAILING before implementation code existed
- Tests pass: `(passepartout:run-tests)` returns success
- Code validated: `lisp-structural-check` returns `(values t nil)`
- Org reflected: Code exists in .org source file
- Org tangled: .lisp generated from .org
- Committed: Only after all above pass
## Boundaries
- **Always do**: Use REPL first for all development, use TDD, prove tests fail FIRST before writing code, validate with lisp-structural-check
- **Ask first**: Before editing .lisp directly (skip org), before deploying, before git commit
- **Never do**: Edit .lisp files manually (they're autogenerated), skip validation before commit
## Iteration
When the agent makes the same mistake twice, add a rule to this file to prevent recurrence.
---
## Project Architecture
- **Thin harness, fat skills** — core provides hooks (`defskill`, `register-actuator`, `*probabilistic-backends*`), skills provide handlers
- **Org is source of truth** — `.org` files tangle to `.lisp`. Never edit `.lisp` directly
- **Package:** `passepartout` exports all symbols in `lisp/core-defpackage.lisp`
- **XDG data dir:** `~/.local/share/passepartout/` (deployed lisp/org files)
- **Config:** `~/.config/passepartout/.env`
---
## Key Libraries
- **Croatoan** — 0-based coordinates, `(setf (cursor-position win) '(y x))` for cursor, `add-string` with `:y`/`:x` keyword args. Source: `~/quicklisp/dists/quicklisp/software/croatoan-20241012-git/src/`
- **Babel** — string encoding/decoding
- **usocket** — TCP sockets
- **bordeaux-threads** — threading primitives

View File

@@ -2,10 +2,10 @@
#+AUTHOR: Amr
#+CREATED: [2026-03-17 Tue]
#+UPDATED: [2026-04-08 Wed]
#+FILETAGS: :memex:psf:org-agent:lisp:sovereignty:
#+FILETAGS: :memex:psf:passepartout:lisp:sovereignty:
* 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 `passepartout` kernel and opencode) collaborate within a shared address space.
This system synthesizes three core organizational methodologies into a unified "Lisp Machine" experience:
- *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 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/passepartout/README.org][passepartout (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.
** 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).
* 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.

18
check.lisp Normal file
View File

@@ -0,0 +1,18 @@
(handler-case
(with-open-file (s "/home/user/memex/projects/passepartout/skills/org-skill-config-manager.org")
(loop for line = (read-line s nil)
while line
do (when (search "#+begin_src lisp" line)
(let ((block ""))
(loop for l = (read-line s nil)
while (and l (not (search "#+end_src" l)))
do (setf block (concatenate 'string block l (string #\Newline))))
(handler-case
(with-input-from-string (in block)
(loop for form = (read in nil :eof)
until (eq form :eof)))
(error (c)
(format t "Error in block beginning with ~a: ~a~%"
(subseq block 0 (min 30 (length block)))
c)))))))
(error (c) (format t "General error: ~a~%" c)))

View File

@@ -27,10 +27,10 @@ Chronological record of all meetings, fleeting notes, and raw conversation logs
## Major System Developments
### Three OpenClaw Skills Deployed
Created and deployed three integrated skills for the org-agent-memex system:
- *org-agent-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *org-agent-memex-gtd*: Automated task promotion and GTD workflow management
- *org-agent-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation
Created and deployed three integrated skills for the opencortex-memex system:
- *opencortex-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *opencortex-memex-gtd*: Automated task promotion and GTD workflow management
- *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.
@@ -93,10 +93,10 @@ Awaiting pressure-testing session for 21-layer audit assumptions. All building p
## Major System Developments
### Three OpenClaw Skills Deployed
Created and deployed three integrated skills for the org-agent-memex system:
- *org-agent-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *org-agent-memex-gtd*: Automated task promotion and GTD workflow management
- *org-agent-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation
Created and deployed three integrated skills for the opencortex-memex system:
- *opencortex-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *opencortex-memex-gtd*: Automated task promotion and GTD workflow management
- *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.
@@ -159,10 +159,10 @@ Awaiting pressure-testing session for 21-layer audit assumptions. All building p
## Major System Developments
### Three OpenClaw Skills Deployed
Created and deployed three integrated skills for the org-agent-memex system:
- *org-agent-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *org-agent-memex-gtd*: Automated task promotion and GTD workflow management
- *org-agent-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation
Created and deployed three integrated skills for the opencortex-memex system:
- *opencortex-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *opencortex-memex-gtd*: Automated task promotion and GTD workflow management
- *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.
@@ -225,10 +225,10 @@ Awaiting pressure-testing session for 21-layer audit assumptions. All building p
## Major System Developments
### Three OpenClaw Skills Deployed
Created and deployed three integrated skills for the org-agent-memex system:
- *org-agent-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *org-agent-memex-gtd*: Automated task promotion and GTD workflow management
- *org-agent-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation
Created and deployed three integrated skills for the opencortex-memex system:
- *opencortex-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *opencortex-memex-gtd*: Automated task promotion and GTD workflow management
- *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.
@@ -291,10 +291,10 @@ Awaiting pressure-testing session for 21-layer audit assumptions. All building p
## Major System Developments
### Three OpenClaw Skills Deployed
Created and deployed three integrated skills for the org-agent-memex system:
- *org-agent-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *org-agent-memex-gtd*: Automated task promotion and GTD workflow management
- *org-agent-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation
Created and deployed three integrated skills for the opencortex-memex system:
- *opencortex-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *opencortex-memex-gtd*: Automated task promotion and GTD workflow management
- *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.
@@ -357,10 +357,10 @@ Awaiting pressure-testing session for 21-layer audit assumptions. All building p
## Major System Developments
### Three OpenClaw Skills Deployed
Created and deployed three integrated skills for the org-agent-memex system:
- *org-agent-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *org-agent-memex-gtd*: Automated task promotion and GTD workflow management
- *org-agent-memex-workbreakdown*: Meta-cognitive skill for task decomposition to prevent context saturation
Created and deployed three integrated skills for the opencortex-memex system:
- *opencortex-memex-zettlekasten*: Nightly distillation of daily logs into atomic notes
- *opencortex-memex-gtd*: Automated task promotion and GTD workflow management
- *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.

View File

@@ -5,10 +5,10 @@
* Activities
** 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.
- *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:*
- 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.
** 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

610
gtd.org
View File

@@ -9,376 +9,39 @@
:PROPERTIES:
:ID: gtd-actions
: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 'passepartout' setup.org was hardcoded to install emacs-nox.
- Reinstalled emacs-gtk and restored GUI support.
- Patched projects/passepartout/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
:PROPERTIES:
:ID: gtd-projects
:END:
** NEXT Org-agent v1.0
:PROPERTIES:
:ID: proj-org-agent-v1-0
:Engineering-STATE: D: BUILD
:CREATED: [2026-03-09 Mon 14:23]
:END:
Org-agent: A Neurosymbolic AI Agent.
*** PHASE: SOVEREIGN MVP (v0.1.0 Released)
:PROPERTIES:
:ID: proj-mvp-v0-1-0
:END:
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)
- [X] 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.
- [X] 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)
- [X] 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 3. The Zero-to-One Experience (setup.org)
- [X] 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.
**** TODO 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.
*** PHASE: INTERACTIVE REFINEMENT (v0.2.0 Target)
:PROPERTIES:
:ID: proj-refinement-v0-2-0
:END:
Elevating the user interface from raw shell piping to a high-fidelity, native Lisp experience.
**** TODO 1. Common Lisp TUI (The "gemini-cli" 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
- [ ] Refactor the `:cli` actuator to use the native TUI rendering instead of raw stream printing.
*** PHASE: EVOLUTIONARY ROADMAP
**** TODO v1.0.0 (Phase 2.5): The Verified Wrapper (SOTA Parity)
- Complete Formal Verification gates for external tools.
- Achieve secure, end-to-end autonomous engineering workflows.
**** TODO v2.0.0 (Phase 3): Cannibalizing the Toolchain
- Ingest DOM as native Lisp AST (Cannibalize Browser).
- Replace string-based bash with native OS bindings (Cannibalize Shell).
**** TODO v3.0.0 (Phase 4): True Symbolic Determinism
- Relegate LLM to Semantic Translator.
- Implement Deterministic Planner (The Solver).
- Implement Self-Correcting Syntax Gates.
**** TODO v4.0.0+ (Phase 5): The Neurosymbolic Singularity
- Homoiconic Self-Writing (Hot-reloading literate source).
- Asynchronous Swarm Cognition (Jailed sub-agents).
*** PHASE: FOUNDATION (Complete)
**** DONE Draft Swank/Socket communication protocol between CL and Emacs
:PROPERTIES:
:CREATED: [2026-03-22 Sun 14:00]
:ASSIGNED: Agent
:END:
**** DONE Implement core Perceive-Think-Act loop in Common Lisp
:PROPERTIES:
:CREATED: [2026-03-22 Sun 14:00]
:ASSIGNED: Agent
:END:
**** DONE Implement Persistent Object-Store for Org entities in CL
:PROPERTIES:
:CREATED: [2026-03-22 Sun 16:30]
:ASSIGNED: Agent
:END:
**** DONE Implement LLM Connector (Probabilistic Engine) in CL Daemon
:PROPERTIES:
:CREATED: [2026-03-22 Sun 17:30]
:ASSIGNED: Agent
:END:
**** DONE Design Deterministic Engine Heuristics (Lisp logic over Memory)
:PROPERTIES:
:CREATED: [2026-03-22 Sun 17:30]
:END:
**** DONE Achieve Phase 3: The Self-Editing Kernel
:PROPERTIES:
:CREATED: [2026-03-23 Mon 16:30]
:END:
- Jailing & Sandboxing implemented
- Org-Native Skill Standard established
- Telemetry & Introspection API active
*** PHASE: THE SOVEREIGN BOUNDARY (Core vs Skills Refactor)
:PROPERTIES:
:ID: proj-sovereign-boundary
:END:
Slim down the org-agent 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 Vector Embedding Algorithms to a Skill (embedding.lisp)
CLOSED: [2026-04-12 Sun 14:10]
:PROPERTIES:
:ID: extract-embedding-skill
:END:
- Created `org-skill-embedding.org`.
- Moved logic to `src/embedding-logic.lisp` via tangling.
- Updated `system-definition.org`.
**** DONE Extract Sparse Tree Context Pruning Strategies to a Skill (context.lisp)
CLOSED: [2026-04-12 Sun 14:25]
:PROPERTIES:
:ID: extract-context-skill
:END:
- Created `org-skill-peripheral-vision.org`.
- Moved logic to `src/context-logic.lisp` via tangling.
- Updated `system-definition.org`.
**** DONE Implement `org-skill-peripheral-vision` (Moving embedding logic out of core)
CLOSED: [2026-04-12 Sun 14:25]
:PROPERTIES:
:ID: impl-peripheral-vision
:END:
**** DONE Implement communication protocol Schema Validation (Prevent reader macro injection in communication.lisp)
CLOSED: [2026-04-12 Sun 14:45]
:PROPERTIES:
:ID: communication-protocol-schema-validation
:END:
- Created `org-skill-protocol-validator.org`.
- Integrated `validate-communication-protocol-schema` into `communication.org`.
- Added `protocol-validator.lisp` to system definition.
**** DONE Implement Pluggable communication protocol Integrity Hashing (Core interface, Skill-based algorithms)
CLOSED: [2026-04-12 Sun 15:15]
:PROPERTIES:
:ID: communication-protocol-integrity-hashing
:END:
- Integrated HMAC-SHA256 (`ironclad:make-mac`) in `literate/communication.org`.
**** DONE Implement Native Lisp Merkle-Tree Versioning (Short-term undo buffer in memory.lisp)
CLOSED: [2026-04-12 Sun 19:15]
**** DONE Performance: Implement Copy-on-Write (CoW) or Persistent Data Structures for Memory
CLOSED: [2026-04-12 Sun 19:15]
**** DONE Feature: Implement Latent Reflection (Proactive Gardening) using heartbeat idle cycles
CLOSED: [2026-04-12 Sun 19:15]
**** DONE Simplification: Refactor Cognitive Loop into a Unified Reactive Signal Pipeline
CLOSED: [2026-04-12 Sun 19:15]
**** DONE Resilience: Implement Micro-Rollbacks for the Immune System
CLOSED: [2026-04-12 Sun 19:15]
**** DONE Implement `org-skill-memory-archivist` (Long-term IPFS checkpointing and P2P sync)
CLOSED: [2026-04-12 Sun 19:15]
**** DONE Implement True Lisp Sandboxing (eval-safe mechanism in core and policy in skills)
CLOSED: [2026-04-12 Sun 19:15]
**** DONE Decouple Vendor Logic from Probabilistic Engine (Move Google/Anthropic/OpenAI to Skills)
CLOSED: [2026-04-12 Sun 19:15]
**** DONE Component IV: Comprehensive Core Skill Audit (Review all 39 skills)
CLOSED: [2026-04-12 Sun 19:45]
:PROPERTIES:
:ID: core-skill-audit-task
:END:
**** DONE Consolidation I: Unified LLM Gateway (Anthropic, Gemini, Groq, OpenAI, etc.)
**** DONE Consolidation II: Credentials Vault (Secure Enclave & Masked Logging)
**** DONE Consolidation III: Homoiconic Memory (Unified Grammar, Bridge, & ID Generation)
**** DONE Consolidation IV: State Persistence Layer (Unified Local & IPFS Checkpointing)
**** DONE Consolidation V: Event Orchestrator (Unified Cron, Hooks, & Cognitive Routing)
**** DONE Consolidation VI: Task Orchestrator (Task Integrity, Delegation, & Consensus)
CLOSED: [2026-04-11 Sat 13:45]
:PROPERTIES:
:ID: task-orchestrator-consolidation
:END:
- Implemented Parallel Multi-Backend Consensus in neuro.lisp.
- Implemented Task Integrity (GTD semantics) in symbolic.lisp.
- Integrated Consensus Gate and Delegation hooks in core.lisp.
- Verified with new task-orchestrator-tests.lisp.
**** IN-PROGRESS Full review of org-agent's harness
:PROPERTIES:
:CREATED: [2026-04-13 Mon 13:30]
:ASSIGNED: Agent
:END:
- [X] Audit terminology: Replaced OACP with "communication protocol" workspace-wide.
- [X] Audit boot sequence: Synchronized loader with `org-skill-policy.org`.
- [-] Audit core Perceive-Think-Act loop.
- [X] Verified protocol framing and reader jailing (`*read-eval* nil`).
- [X] Refactored `loop.org` for literate granularity and configuration externalization.
- [X] Improved error handling (restricted rollback) and added graceful shutdown.
- [X] **GAP:** Missing symbolic guard check in `act-gate` (Stage 3: Act).
- [ ] Ensure alignment with System Policy and Engineering Standards.
**** 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)
CLOSED: [2026-04-11 Sat 15:10]
:PROPERTIES:
:ID: lisp-repair-gate
:END:
- Implemented asynchronous, event-driven repair logic.
- Decoupled core from repair logic (emits `:syntax-error` event).
- Proven via lisp-repair-tests.lisp (Asynchronous flow verified).
**** DONE Implement `org-skill-formal-verification` (Prove safety of high-impact actions)
CLOSED: [2026-04-11 Sat 18:15]
:PROPERTIES:
:ID: formal-verification-task
:END:
- Implemented `org-skill-formal-verification.org`.
- Created Lisp-Native Symbolic Prover for security invariants.
- Implemented `path-confinement` invariant (restricted to memex root).
- Implemented `no-network-exfil` invariant (blocking nc, ssh, etc).
- Verified with `formal-verification-tests.lisp`.
*** PHASE: DETERMINISTIC ENGINE REFINEMENT
**** DONE Verify Autonomous Self-Fix Loop
CLOSED: [2026-04-11 Sat 14:20]
:PROPERTIES:
:CREATED: [2026-03-23 Mon 16:30]
:END:
- Proven repair capability via self-fix-tests.lisp.
- Verified surgical code patching and hot-reloading.
- Documentation and RCA complete.
**** DONE Implement "Planning Mode" (Deterministic Engine Bouncer) for Complex Actions
CLOSED: [2026-04-11 Sat 15:30]
:PROPERTIES:
:CREATED: [2026-04-01 Wed 17:00]
:END:
- Implemented `bouncer-check` interceptor in `symbolic.lisp`.
- Created `org-skill-bouncer.org` for flight plan serialization.
- Verified asynchronous Org-native approval loop via `bouncer-tests.lisp`.
**** DONE Implement Authorization Gate (communication protocol) for "Planning Mode"
CLOSED: [2026-04-11 Sat 15:30]
:PROPERTIES:
:CREATED: [2026-04-01 Wed 17:00]
:END:
- Integrated with Org-mode state transitions (`PLAN` -> `APPROVED`).
- Leveraged Memory event bus for asynchronous re-injection.
**** DONE Refactor Architecture Terminology (Associative -> Probabilistic, Deliberate -> Deterministic)
CLOSED: [2026-04-12 Sun 21:00]
:PROPERTIES:
:ID: terminology-refactor-task
:END:
- Updated codebase-wide terminology to use Probabilistic/Deterministic Engines.
- Replaced System 1/2 with Probabilistic/Deterministic Engines respectively.
*** TRACK: SECURITY & CONTAINMENT (The 5-Vector Bouncer Matrix)
**** DONE Implement Path-Based Scoping for File Writes (DNA/State vs Work)
CLOSED: [2026-04-12 Sun 15:15]
:PROPERTIES:
:ID: path-based-scoping
:END:
- Implemented as `path-confinement` invariant in `org-skill-formal-verification.org`.
**** DONE Implement Network Exfiltration Gate (Intercept generic HTTP requests)
CLOSED: [2026-04-12 Sun 15:15]
:PROPERTIES:
:ID: network-exfiltration-gate
:END:
- Implemented as `no-network-exfil` invariant in `org-skill-formal-verification.org`.
**** TODO Implement Secret Exposure Gate (Intercept reads to .env, keys)
*** TRACK: INTELLIGENCE & ACTUATION (The Engines)
**** DONE Verify individual provider track (Anthropic, Gemini, Groq, OpenAI, OpenRouter, Ollama)
CLOSED: [2026-04-11 Sat 15:45]
:PROPERTIES:
:ID: provider-verification-track
:END:
- Added unit tests for each provider in `llm-gateway-tests.lisp`.
- Mocked `dex:post` to verify JSON payload formatting and response parsing.
- Implemented robust `get-nested` helper to handle various provider structures.
- Integrated `llm-gateway` and `credentials-vault` into `org-agent.asd`.
**** TODO Verify org-skill-shell-actuator formal safety harnesses
**** DONE Build Playwright-Python Bridge for high-fidelity browsing
CLOSED: [2026-04-11 Sat 18:30]
:PROPERTIES:
:ID: playwright-bridge-task
:END:
- Created `scripts/browser-bridge.py` (Playwright wrapper).
- Implemented `org-skill-playwright.org`.
- Registered `:browser` cognitive tool (JS-rendering, text extraction, screenshots).
- Updated `Dockerfile` with Python/Playwright dependencies.
- Verified with `playwright-tests.lisp`.
*** TRACK: COMMUNICATION & INTERFACES
**** DONE Implement org-skill-gateway-telegram
CLOSED: [2026-04-11 Sat 16:15]
:PROPERTIES:
:ID: gateway-telegram-task
:END:
- Implemented `org-skill-gateway-telegram.org`.
- Added automated background polling for Telegram GetUpdates.
- Implemented `:telegram` actuator for outbound responses.
- Refactored `org-skill-chat` to be channel-aware.
- Verified with `gateway-telegram-tests.lisp`.
**** DONE Implement org-skill-gateway-signal
CLOSED: [2026-04-11 Sat 16:50]
:PROPERTIES:
:ID: gateway-signal-task
:END:
- Implemented `org-skill-gateway-signal.org` (signal-cli wrapper).
- Added background polling for `signal-cli receive --json`.
- Implemented `:signal` actuator for outbound responses.
- Updated `org-skill-chat` to support Signal channel.
- Verified with `gateway-signal-tests.lisp`.
**** DONE Implement org-skill-gateway-matrix
CLOSED: [2026-04-11 Sat 17:15]
:PROPERTIES:
:ID: gateway-matrix-task
:END:
- Implemented `org-skill-gateway-matrix.org` (Client-Server API).
- Added background polling for `/sync` with token persistence.
- Implemented `:matrix` actuator for `m.room.message` delivery.
- Updated `org-skill-chat` to support Matrix channel and room IDs.
- Verified with `gateway-matrix-tests.lisp`.
*** TRACK: DEPLOYMENT & INFRASTRUCTURE
**** DONE Create Dockerfile and docker-compose.yml for containerized setup
CLOSED: [2026-04-11 Sat 17:30]
:PROPERTIES:
:ID: docker-infra-task
:END:
- Created `Dockerfile` (Debian-based, SBCL + Quicklisp + signal-cli).
- Created `docker-compose.yml` with host-volume mapping for memex.
- Created `docs/deployment.org` guide.
**** TODO Create Bare Metal installation scripts/playbooks
**** TODO Create LXC (Linux Containers) template/guide
**** TODO Create VM Vagrantfiles/Cloud-init configs
*** TRACK: MAINTENANCE & HYGIENE
**** TODO [RECURRING: Monthly] Review and test Infrastructure Dependency Upgrades
:PROPERTIES:
:ID: monthly-infra-audit
:REPEAT_TO_STATE: TODO
:END:
- [ ] Check for new Debian security patches (`apt-get update` check).
- [ ] Check for new `signal-cli` releases (compare vs v0.14.0).
- [ ] Check for new Quicklisp distribution (monthly snapshot).
- [ ] **Verification:** Update `Dockerfile`, run `docker-compose build --no-cache`, and execute full test suite.
- [ ] If all tests pass, commit updated `Dockerfile` and `.asd` dependencies.
*** TRACK: COMMUNITY & DOCS
**** TODO Write Quickstart Guide
**** TODO Write Skill Creation Guide
**** TODO Write Architecture Deep-Dive
**** TODO Clean up GitHub repository structure and add CI/CD
**** TODO Create Marketing Material (Landing page copy, diagrams)
**** TODO Draft Release Plan checklist
*** SUB-PROJECT: THE BOOT SEQUENCE (skills.lisp)
:PROPERTIES:
:ID: proj-skill-boot-sequence
:END:
**** DONE Refactor `skills.lisp` into a Micro-Loader (Harness)
CLOSED: [2026-04-12 Sun 19:10]
**** DONE Implement Topological Sort based on `#+DEPENDS_ON:` tags
CLOSED: [2026-04-12 Sun 15:15]
:PROPERTIES:
:ID: topological-sort-skills
:END:
- Implemented in `literate/skills.org`.
**** DONE Enforce `org-skill-system-invariants` as the mandatory Gateway Skill (Loaded first)
CLOSED: [2026-04-12 Sun 15:15]
:PROPERTIES:
:ID: enforce-mandatory-skill
:END:
- Enforced in `initialize-all-skills` in `literate/skills.org`.
**** DONE Formalize the "Minimal Boot Set" (Router, Vision, Steward, Actuator)
CLOSED: [2026-04-12 Sun 19:10]
- Verified during the Minimal Boot Set Verification phase.
** NEXT Passepartout v1.0
:PROPERTIES:
:ID: proj-opencortex-v1-0
:Engineering-STATE: D: BUILD
:CREATED: [2026-03-09 Mon 14:23]
:END:
OpenCortex: A Neurosymbolic AI Agent.
Full project tasks: [[file:projects/passepartout/TODO.org][Passepartout TODO.org]]
** NEXT Engineering Core: Role Automation
:PROPERTIES:
@@ -418,100 +81,15 @@ Drafting the automated behaviors for the Engineering loop.
** Agora: Decentralized Social Network
:PROPERTIES:
:ID: agora-project
:END:
*** DONE Create atomic notes for all 10 Agora sections
:PROPERTIES:
:CREATED: [2026-03-16 Mon 14:28]
:END:
:LOGBOOK:
- State "DONE" from "TODO" [2026-03-17 Tue 12:00]
:END:
All 14 atomic notes created and cross-referenced.
Specification gaps filled, 10 requirements sections complete.
Integration task tracking: [[file:projects/agora/TODO.org][Agora TODO.org]]
Passepartout integration plan: See PHASE: PASSEPARTOUT INTEGRATION in the TODO.org
*** IN-PROGRESS Fill CRITICAL and HIGH gaps [5 CRITICAL / 15 HIGH complete]
**** DONE Section 02: Identity - ALL HIGH priority gaps resolved
**** DONE Section 03: Infrastructure - ALL HIGH priority gaps resolved
*** IN-PROGRESS Fill MEDIUM gaps [14/14 complete]
**** DONE ALL MEDIUM PRIORITY GAPS RESOLVED
**** DONE ALL LOW PRIORITY GAPS RESOLVED (10/10)
**** FINAL STATUS: All Agora specification gaps complete (CRITICAL, HIGH, MEDIUM, LOW)
:PROPERTIES:
:CREATED: [2026-03-17 Tue 23:30]
:END:
:LOGBOOK:
- State "IN-PROGRESS" from "TODO" [2026-03-18 Wed 01:00]
:END:
**** DONE CRITICAL: Contract TypeScript/Protobuf Interfaces → FILLED
:PROPERTIES:
:CREATED: [2026-03-18 Wed 01:00]
:END:
:LOGBOOK:
- State "DONE" from "TODO" [2026-03-18 Wed 01:15]
:END:
- INTEGRATED: Reference added to agora-requirements-02-identity.org
- LOCATION: memex/5_projects/agora/agora-contract-schemas.org
**** DONE CRITICAL: Content Flag Schema Validation → FILLED
:PROPERTIES:
:CREATED: [2026-03-18 Wed 01:00]
:END:
:LOGBOOK:
- State "DONE" from "TODO" [2026-03-18 Wed 01:25]
:END:
- LOCATION: memex/5_projects/agora/agora-content-flag-schema.org
- PENDING: Integration into agora-requirements-04-the-primitive.org
**** DONE CRITICAL: PDS-to-PDS Sync Protocol → FILLED
:PROPERTIES:
:CREATED: [2026-03-18 Wed 01:00]
:END:
:LOGBOOK:
- State "DONE" from "TODO" [2026-03-18 Wed 01:35]
:END:
- LOCATION: memex/5_projects/agora/agora-pds-sync-communication.org
- PENDING: Integration into agora-requirements-03-infrastructure.org
**** DONE CRITICAL: Delta Sync Protocol → FILLED
:PROPERTIES:
:CREATED: [2026-03-18 Wed 01:00]
:END:
:LOGBOOK:
- State "DONE" from "TODO" [2026-03-18 Wed 01:50]
:END:
- LOCATION: memex/5_projects/agora/agora-delta-sync-communication.org
- PENDING: Integration into agora-requirements-08-implementation.org
**** DONE CRITICAL: Persona Revocation Protocol → ALREADY-EXISTS
:PROPERTIES:
:CREATED: [2026-03-18 Wed 01:00]
:END:
:LOGBOOK:
- State "DONE" from "TODO" [2026-03-18 Wed 02:00]
:END:
- NOTE: Complete specification already in agora-requirements-02-identity.org
- ACTION: Gap was incorrectly flagged; no work required
**** TODO INTEGRATE scattered specifications into requirements files [1/4]
:PROPERTIES:
:CREATED: [2026-03-18 Wed 02:00]
:END:
- NEXT: Move content flag schema into Section 04
- NEXT: Move PDS sync into Section 03
- NEXT: Move delta sync into Section 08
- NEXT: Delete duplicate documents after integration
**** NEXT Fill HIGH priority gaps
:PROPERTIES:
:CREATED: [2026-03-18 Wed 02:00]
:END:
- Relay Discovery Mechanism (Section 03)
- Relay Pricing Logic (Section 03)
- Shamir's Parameters (Section 03)
- Key specs drafted: Contract TypeScript interfaces, Content Flag schema, PDS Sync, Delta Sync
- Remaining: Integrate scattered spec docs into requirements files (content flag → Sect 04, PDS sync → Sect 03, delta sync → Sect 08)
** Emacs Configuration Refactor
:PROPERTIES:
@@ -621,7 +199,7 @@ Institutionalizing the virtual software house operating system.
- State "DONE" from "NEXT" [2026-03-22 Sun 15:45]
:END:
*** DONE Apply Engineering Loop to `org-agent` Phase 1 (Core Loop)
*** DONE Apply Engineering Loop to `passepartout` Phase 1 (Core Loop)
:PROPERTIES:
:CREATED: [2026-03-22 Sun 15:30]
:ASSIGNED: Technical Analyst
@@ -650,7 +228,7 @@ Institutionalizing the virtual software house operating system.
IT infrastructure documentation, security hardening, and operational management.
See project documents: [[file:5_projects/infrastructure/README.org][infrastructure/README.org]]
See project documents: [[file:projects/infrastructure/README.org][infrastructure/README.org]]
*** TODO Create current state assessment document
:PROPERTIES:
@@ -700,7 +278,7 @@ See project documents: [[file:5_projects/infrastructure/README.org][infrastructu
Business planning and revenue generation strategy.
See project documents: [[file:5_projects/revenue-sustainability/README.org][revenue-sustainability/README.org]]
See project documents: [[file:projects/revenue-sustainability/README.org][revenue-sustainability/README.org]]
*** TODO Set up Stripe account (payment processing)
:PROPERTIES:
@@ -789,8 +367,8 @@ Defining and maintaining high-integrity KM and GTD workflows.
:END:
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).
- [ ] Batch repair `inbox-emacs.org`, `inbox-atoms.org`, and `inbox-posts.org`.
**** TODO Implement inference logic to restore historical timestamps (via Git or context)
**** TODO Batch repair `inbox-emacs.org`, `inbox-atoms.org`, and `inbox-posts.org`
** Agora Gap Verification
:PROPERTIES:
@@ -798,112 +376,7 @@ Detected ~1,300 entries missing the `:CREATED:` property during the Engineering
:CREATED: [2026-03-17 Tue 15:15]
:END:
Cross-reference consolidated gap analysis against actual requirement specs to identify real vs. already-addressed gaps.
See project documents: [[file:5_projects/agora/agora-consolidated-gap-analysis.org][agora-consolidated-gap-analysis.org]]
*DECOMPOSITION via Work Breakdown Skill:*
Complexity check failed (51 gaps, 10 files, unpredictable scope). Breaking into atomic verification tasks.
*** DONE [1/7] Verify CRITICAL Gap: Contract TypeScript/Protobuf Interfaces → REAL GAP
:PROPERTIES:
:CREATED: [2026-03-17 Tue 15:15]
:ASSIGNED: Agent
:END:
:LOGBOOK:
- State "NEXT" from "TODO" [2026-03-17 Tue 15:15]
- State "DONE" from "NEXT" [2026-03-17 Tue 15:59]
:END:
*HOW:* Searched Section 02 for "interface", "type", "struct", "ContractTemplate". Found 5 TypeScript interfaces (all for revocation, not contracts). Line 951 explicitly states "Gap: No sample JSON for each contract type".
*WHAT:* *REAL GAP* - Contracts described conceptually, lack formal TypeScript/Protobuf schemas.
*** DONE [2/7] Verify CRITICAL Gap: Persona Revocation Protocol → IMPLEMENTED
:PROPERTIES:
:CREATED: [2026-03-17 Tue 15:15]
:ASSIGNED: Agent
:END:
:LOGBOOK:
- State "TODO" from "" [2026-03-17 Tue 15:15]
- State "DONE" from "TODO" [2026-03-17 Tue 15:59]
:END:
*HOW:* Checked Section 02 lines 229-260. Found complete protocol with 3 scenarios (Key Compromise, Persona Retirement, Master Key Compromise), 4-step process, and TypeScript interfaces.
*WHAT:* *ALREADY IMPLEMENTED* - Full protocol specification exists. Gap analysis incorrectly flagged this.
*** DONE [3/7] Verify CRITICAL Gap: PDS-to-PDS Sync Protocol → IMPLEMENTED
:PROPERTIES:
:CREATED: [2026-03-17 Tue 15:15]
:ASSIGNED: Agent
:END:
:LOGBOOK:
- State "TODO" from "" [2026-03-17 Tue 15:15]
- State "DONE" from "TODO" [2026-03-17 Tue 15:59]
:END:
*HOW:* Checked Section 03 lines 142-180. Found complete sync protocol with Concept, 3 Use Cases (Redundancy, Geographic Distribution, Load Balancing), and Merkle DAG Synchronization architecture.
*WHAT:* *ALREADY IMPLEMENTED* - Protocol fully specified. PDSSyncSession interface documented.
*** DONE [4/7] Verify CRITICAL Gap: Content Flag Schema Validation → REAL GAP
:PROPERTIES:
:CREATED: [2026-03-17 Tue 15:15]
:ASSIGNED: Agent
:END:
:LOGBOOK:
- State "TODO" from "" [2026-03-17 Tue 15:15]
- State "DONE" from "TODO" [2026-03-17 Tue 15:59]
:END:
*HOW:* Searched Section 05 for "JSON Schema", "flag", "validation". Found 9 flags described narratively (is_public, is_direct, is_ephemeral, etc.) at lines 24-34. No formal JSON Schema found.
*WHAT:* *REAL GAP* - Flags have informal descriptions but lack formal JSON Schema for validation.
*** DOING [5/7] [BATCH] Verify HIGH priority gaps (15 items) - DELEGATED TO SUB-AGENTS
:PROPERTIES:
:CREATED: [2026-03-17 Tue 15:15]
:ASSIGNED: Agent
:END:
:LOGBOOK:
- State "TODO" from "" [2026-03-17 Tue 15:15]
- State "NEXT" from "TODO" [2026-03-17 Tue 16:04]
- State "DOING" from "NEXT" [2026-03-17 Tue 16:05]
:END:
*HOW:* Delegated to 5 sub-agents for parallel verification per section. Monitoring progress centrally.
*Sub-Agent Assignments:*
- *Sub-Agent 1:* Section 02 Identity (4 HIGH gaps)
- *Sub-Agent 2:* Section 03 Infrastructure (3 HIGH gaps)
- *Sub-Agent 3:* Section 05 Public Space (4 HIGH gaps)
- *Sub-Agent 4:* Section 06 Advanced Integration (2 HIGH gaps)
- *Sub-Agent 5:* Sections 08-09 Implementation/Strategy (2 HIGH gaps)
*Current focus:* Orchestrating sub-agent verification. CRITICAL gaps complete (2 REAL, 2 IMPLEMENTED).
*** TODO [BATCH] Verify MEDIUM priority gaps (14 items)
:PROPERTIES:
:CREATED: [2026-03-17 Tue 15:15]
:ASSIGNED: Agent
:END:
:LOGBOOK:
- State "TODO" from "" [2026-03-17 Tue 15:15]
:END:
Cross-reference 14 MEDIUM gaps. Defer until HIGH gaps complete.
*** TODO Generate verified gap report
:PROPERTIES:
:CREATED: [2026-03-17 Tue 15:15]
:ASSIGNED: Agent
:END:
:LOGBOOK:
- State "TODO" from "" [2026-03-17 Tue 15:15]
:END:
Create summary documenting: which gaps are REAL (need implementation) vs. ALREADY-IMPLEMENTED (documentation only) vs. PARTIAL (needs completion).
All gap verification complete. See [[file:projects/agora/TODO.org][Agora TODO.org]] for current integration tasks.
** Token Optimization
:PROPERTIES:
@@ -913,7 +386,7 @@ Create summary documenting: which gaps are REAL (need implementation) vs. ALREAD
Cost-effective LLM usage strategy and implementation.
See project documents: [[file:5_projects/token-optimization/README.org][token-optimization/README.org]]
See project documents: [[file:projects/token-optimization/README.org][token-optimization/README.org]]
*** TODO Configure Gemini as primary provider
:PROPERTIES:
@@ -1092,9 +565,8 @@ A modular manual of different areas to go with different activities. Fits in the
** Architecture Astronaut Archive
*** 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 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 Memory Eviction and Lazy Loading (LRU Cache in memory.lisp)
*** TODO Implement Two-Speed Reflection (Immediate :post-action + Latent Heartbeat)
@@ -1102,7 +574,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 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 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 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)

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.
** 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.
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).
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:
:CREATED: [2026-03-20 Fri 08:20]
: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.
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:
:CREATED: [2026-03-20 Fri 08:00]
:END:
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.
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.
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.
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.
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.
Target Environment: A Linux/Proxmox homelab, running local inference servers, heavily utilizing GitOps and Lisp-based development.
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.
* 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"
org-agent 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 |
opencortex treats AI models and external SDKs exactly like it treats a Proxmox server—as a downstream tool to be managed.
| 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. |
| 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. |
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 Lisp Executor will only evaluate forms where the car (the function name) matches a predefined, safe whitelist.
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?
***** 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_TODO: DONE
: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:

463
inbox.org
View File

@@ -2,3 +2,466 @@
#+begin_comment
This is the inbox. Everything goes in here when you capture it.
#+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:
* [[https://arxiv.org/abs/2604.22709][[2604.22709] Thinking Without Words: Efficient Latent Reasoning with Abstract Chain-of-Thought]]
:PROPERTIES:
:TITLE: [2604.22709] Thinking Without Words: Efficient Latent Reasoning with Abstract Chain-of-Thought
:URI: https://arxiv.org/abs/2604.22709
:CREATED: [2026-04-28 Tue 09:50]
:END:
* [[https://x.com/i/status/2048587253145108626][鸟哥 | 蓝鸟会🕊️ on X: "吓到我了! GitHub上有个工具叫GhostTrack输入一个手机号能直接扫出这人在哪些平台注册过账号还能查IP定位、运营商信息。 克隆代码跑脚本5分钟搞定门槛低得离谱。你以为自己在网上隐身呢 早被扒得透透的了。信息安全这事,真得重视起来。 🔗 https://t.co/yVGCsmsjyi https://t.co/UyhOY6wHq6" / X]]
:PROPERTIES:
:TITLE: 鸟哥 | 蓝鸟会🕊️ on X: "吓到我了! GitHub上有个工具叫GhostTrack输入一个手机号能直接扫出这人在哪些平台注册过账号还能查IP定位、运营商信息。 克隆代码跑脚本5分钟搞定门槛低得离谱。你以为自己在网上隐身呢 早被扒得透透的了。信息安全这事,真得重视起来。 🔗 https://t.co/yVGCsmsjyi https://t.co/UyhOY6wHq6" / X
:URI: https://x.com/i/status/2048587253145108626
:CREATED: [2026-04-28 Tue 09:50]
:END:
* [[https://uxdesign.cc/where-should-ai-sit-in-your-ui-1710a258390e][Where should AI sit in your UI?. Mapping emerging AI UI patterns and how… | by Sharang Sharma | UX Collective]]
:PROPERTIES:
:TITLE: Where should AI sit in your UI?. Mapping emerging AI UI patterns and how… | by Sharang Sharma | UX Collective
:URI: https://uxdesign.cc/where-should-ai-sit-in-your-ui-1710a258390e
:CREATED: [2026-04-28 Tue 09:50]
:END:
* [[https://x.com/i/status/2049011134426906635][Shakker on X: "OpenClaw's first output dropped from 1s to 43ms. Plugin bootstrap went from 265ms to 8ms. Provider capability resolution from 49ms to 1.5ms. Config validation from 62ms to 5ms. For most of OpenClaw's history, the plugin system was carrying core, instead of the other way around." / X]]
:PROPERTIES:
:TITLE: Shakker on X: "OpenClaw's first output dropped from 1s to 43ms. Plugin bootstrap went from 265ms to 8ms. Provider capability resolution from 49ms to 1.5ms. Config validation from 62ms to 5ms. For most of OpenClaw's history, the plugin system was carrying core, instead of the other way around." / X
:URI: https://x.com/i/status/2049011134426906635
:CREATED: [2026-04-28 Tue 09:51]
:END:
* [[https://github.com/lithos-ai/motus][lithos-ai/motus: The open-source agent-serving project]]
:PROPERTIES:
:TITLE: lithos-ai/motus: The open-source agent-serving project
:URI: https://github.com/lithos-ai/motus
:CREATED: [2026-04-28 Tue 09:51]
:END:
* [[https://arxiv.org/abs/2603.13247][[2603.13247] ILION: Deterministic Pre-Execution Safety Gates for Agentic AI Systems]]
:PROPERTIES:
:TITLE: [2603.13247] ILION: Deterministic Pre-Execution Safety Gates for Agentic AI Systems
:URI: https://arxiv.org/abs/2603.13247
:CREATED: [2026-05-04 Mon 08:19]
:END:
* [[https://github.com/Athonitul/ilion-framework-simulator/tree/main/benchmark][ilion-framework-simulator/benchmark at main · Athonitul/ilion-framework-simulator]]
:PROPERTIES:
:TITLE: ilion-framework-simulator/benchmark at main · Athonitul/ilion-framework-simulator
:URI: https://github.com/Athonitul/ilion-framework-simulator/tree/main/benchmark
:CREATED: [2026-05-04 Mon 08:19]
:END:
* [[https://iamtitan.tech/][Titan Observatory]]
:PROPERTIES:
:TITLE: Titan Observatory
:URI: https://iamtitan.tech/
:CREATED: [2026-05-04 Mon 08:19]
:END:
* [[https://arxiv.org/abs/2002.06177][[2002.06177] The Next Decade in AI: Four Steps Towards Robust Artificial Intelligence]]
:PROPERTIES:
:TITLE: [2002.06177] The Next Decade in AI: Four Steps Towards Robust Artificial Intelligence
:URI: https://arxiv.org/abs/2002.06177
:CREATED: [2026-05-04 Mon 08:19]
:END:
* [[https://arxiv.org/abs/2604.25850][[2604.25850] Agentic Harness Engineering: Observability-Driven Automatic Evolution of Coding-Agent Harnesses]]
:PROPERTIES:
:TITLE: [2604.25850] Agentic Harness Engineering: Observability-Driven Automatic Evolution of Coding-Agent Harnesses
:URI: https://arxiv.org/abs/2604.25850
:CREATED: [2026-05-04 Mon 08:20]
:END:
* [[https://x.com/i/status/2049883896444055978][Atai Barkai on X: "UI is Dead. Long Live Generative UI" / X]]
:PROPERTIES:
:TITLE: Atai Barkai on X: "UI is Dead. Long Live Generative UI" / X
:URI: https://x.com/i/status/2049883896444055978
:CREATED: [2026-05-04 Mon 08:20]
:END:
* [[https://github.com/CopilotKit/CopilotKit][CopilotKit/CopilotKit: The Frontend Stack for Agents & Generative UI. React + Angular. Makers of the AG-UI Protocol]]
:PROPERTIES:
:TITLE: CopilotKit/CopilotKit: The Frontend Stack for Agents & Generative UI. React + Angular. Makers of the AG-UI Protocol
:URI: https://github.com/CopilotKit/CopilotKit
:CREATED: [2026-05-04 Mon 08:21]
:END:
* [[https://x.com/i/status/2050062045471740303][Ahmad on X: "My Homelab Is Technically the Cloud Now" / X]]
:PROPERTIES:
:TITLE: Ahmad on X: "My Homelab Is Technically the Cloud Now" / X
:URI: https://x.com/i/status/2050062045471740303
:CREATED: [2026-05-04 Mon 08:21]
:END:
* [[https://github.com/garrytan/gstack][garrytan/gstack: Use Garry Tan's exact Claude Code setup: 23 opinionated tools that serve as CEO, Designer, Eng Manager, Release Manager, Doc Engineer, and QA]]
:PROPERTIES:
:TITLE: garrytan/gstack: Use Garry Tan's exact Claude Code setup: 23 opinionated tools that serve as CEO, Designer, Eng Manager, Release Manager, Doc Engineer, and QA
:URI: https://github.com/garrytan/gstack
:CREATED: [2026-05-04 Mon 08:21]
: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-05-04 Mon 08:21]
:END:
* [[https://gxl.ai/blog/adding-arxiv-and-abstracts][Adding arXiv and 150M+ abstracts to Paperclip — GXL Blog]]
:PROPERTIES:
:TITLE: Adding arXiv and 150M+ abstracts to Paperclip — GXL Blog
:URI: https://gxl.ai/blog/adding-arxiv-and-abstracts
:CREATED: [2026-05-04 Mon 08:21]
:END:
* [[https://github.com/ciembor/agent-rules-books][ciembor/agent-rules-books: Ready-to-use Codex, Cursor, and Claude Code rules inspired by classic software engineering books.]]
:PROPERTIES:
:TITLE: ciembor/agent-rules-books: Ready-to-use Codex, Cursor, and Claude Code rules inspired by classic software engineering books.
:URI: https://github.com/ciembor/agent-rules-books
:CREATED: [2026-05-04 Mon 08:21]
:END:
* [[https://www.warp.dev/oz][Oz: The Orchestration Platform for Cloud Agents by Warp]]
:PROPERTIES:
:TITLE: Oz: The Orchestration Platform for Cloud Agents by Warp
:URI: https://www.warp.dev/oz
:CREATED: [2026-05-04 Mon 08:22]
:END:
* [[https://arxiv.org/abs/2508.04495][[2508.04495] Causal Reflection with Language Models]]
:PROPERTIES:
:TITLE: [2508.04495] Causal Reflection with Language Models
:URI: https://arxiv.org/abs/2508.04495
:CREATED: [2026-05-04 Mon 08:22]
:END:
* [[https://arxiv.org/abs/2508.15750v1][[2508.15750v1] Active Learning for Neurosymbolic Program Synthesis]]
:PROPERTIES:
:TITLE: [2508.15750v1] Active Learning for Neurosymbolic Program Synthesis
:URI: https://arxiv.org/abs/2508.15750v1
:CREATED: [2026-05-04 Mon 08:22]
:END:
* [[https://abideai.com/blog/whitepaper-aug25][Abide AI]]
:PROPERTIES:
:TITLE: Abide AI
:URI: https://abideai.com/blog/whitepaper-aug25
:CREATED: [2026-05-04 Mon 08:22]
:END:
* [[https://thedarklightx.github.io/Formal_Methods_Philosophy/][Home | Formal Philosophy]]
:PROPERTIES:
:TITLE: Home | Formal Philosophy
:URI: https://thedarklightx.github.io/Formal_Methods_Philosophy/
:CREATED: [2026-05-04 Mon 08:22]
: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

@@ -0,0 +1 @@
user@amr.154851:1777155215

760
notes/chats-with-gemini.org Normal file
View File

@@ -0,0 +1,760 @@
#+TITLE: Chats with Gemini
#+AUTHOR: Amero
#+FILETAGS: :gemini:ai:research:
#+STARTUP: content
* Chat 1: REPL Agents Advantages
Source: https://gemini.google.com/share/5fc668800a27
Date: April 22, 2026
Summary of key concepts discussed:
** Core Insight: REPL as "Active" Memory**
A REPL-based agent doesn't just "read" context—it treats the codebase as a searchable variable. It can programmatically explore, test, and verify, rather than passively predicting what might work.
*** Benefits for AI Agents
1. *Context Optimization*: Instead of stuffing 10,000 files into context, the agent runs scripts to fetch only what's needed. Keeps active context lean (2k-4k tokens) instead of bloated.
2. *Verification over Hallucination*: The agent can actually run code it writes. If the REPL returns an error, it sees it immediately and fixes it. No more "guessing" if the code works.
3. *Recursive Problem Solving*: The agent can spawn "mini-versions" of itself to handle sub-tasks. A main agent identifies 50 files needing change, recursively calls sub-agents for each.
4. *Diffusion-Style Reasoning*: Initialize an answer variable, keep editing it as it explores. "Diffuses" toward correct solution over multiple turns before presenting final result.
5. *VRAM Efficiency*: By keeping context tiny, a 27B model can perform like a much larger model. Its "brainpower" goes to logic, not holding text.
*** Economic Impact
- *Token Costs*: Quadratic in standard chat (re-sending history each turn). Linear/flat in REPL (context stored once). 80-90% reduction for long sessions.
- *VRAM*: Minimal active context = much faster token processing.
- *Hot State*: Variables, file handles, sub-routine results already live. Eliminates pre-fill latency.
- *Tiered Pricing*: Use expensive "brain" for hard decisions, cheap sub-agents for grunt work.
*** Extension to Non-Coding Text Work
1. *World Variable*: Treat manuscript as persistent database variable. Query "what color are John's eyes" without reading whole book. Eliminates context drift.
2. *Recursive Synthesis*: For research, root agent spawns sub-agents to mine themes from massive library stored in REPL variable. Process effectively infinite input.
3. *Consistency REPL*: Maintain "Truth Table" in live memory. Before writing, "evaluates" text against that state. Throws error if contradicts previous definition.
4. *Self-Modifying Voice*: Style guide isn't just a prompt—it's live functions. Tell agent "too formal," it rewrites its own generate-tone function. Every subsequent sentence inherits the fix.
*** Why REPL Agents Aren't Dominating Yet
1. *Security*: Adversarial persistence. In standard chat, poison disappears on new session. In REPL, if attacker modifies a core function, it persists indefinitely. Enterprise sees this as "terrifying."
2. *Lisp Curse*: Python ecosystem is massive (10M developers vs 1 Lisp master). Hiring Lisp maintainers is "key person risk."
3. *Maintenance Tax*: REPL agents fail probabilistically, not deterministically. Can enter logic loops nearly impossible to debug. 3x more efficient but 5x more engineering hours to monitor.
4. *Stakeholder Model*: No solid way to distinguish users. Agent might apply voice/permissions learned from one user to another.
*** State Rot Mitigations
1. *Snapshots*: Baseline save game for instant recovery.
2. *Rollbacks*: Compensation actions that undo specific changes. Shadow/overlay filesystem—changes only become real when verified.
3. *Compaction*: Background scrubber extracts only new facts, deletes noise. Moves important facts to vector database, wipes active context.
4. *Courtroom Model*: Multi-agent system. Prosecutor finds contradictions. Jury decides if state is corrupted, forces hard reset.
5. *Lisp Condition Restarts*: Error enters break loop. Presented with recovery paths it can take without losing progress.
6. *Semantic Isolation*: Memory barriers between tasks. Clears previous variables when switching context. Prevents contamination.
7. *Formal Property Verification*: SystemVerilog-style assertions. Updates rejected at hardware level if violate core rules.
*** RLM Paper Reference
Paper: "Recursive Language Models" (arxiv 2512.24601)
- REPL as "Infinite Memory" - treats long prompts as external environment inside Python REPL
- Recursive Decomposition - model writes script to break task, calls smaller instances of itself
- Answer Variable Persistence - diffusion-style reasoning over multiple turns
- Validates that local 8B model with REPL can outperform much larger models
- Conclusion: Inference-time scaling (looping in REPL) more efficient than training-time scaling (bigger model)
** Relevance to OpenCortex
This aligns with OpenCortex's architecture:
- *Lisp REPL*: OpenCortex runs in Common Lisp, naturally homoiconic. Code is data—agent can modify its own skills.
- *Metabolic Loop*: Perceive → Reason → Act pipeline mirrors RLM's "crawl and verify" approach.
- *Memory Rollback*: Transactional state management prevents state rot.
- *Skills as Org-mode*: Structured, queryable, hot-reloadable. Similar to "world variable" concept.
- *v0.2.0 Self-Editing*: Direct implementation of "agent modifies its own brain" concept.
- *v0.3.0 Event Orchestration*: Three tiers (:REFLEX, :COGNITION, :REASONING) echo RLM's recursive decomposition.
** Opportunities for OpenCortex
1. Implement explicit "recursive sub-agent" pattern for complex tasks.
2. Add "compaction" event for long-running sessions—extract facts to Org-mode, clear live context.
3. Explore "courtroom" model: secondary skill that verifies primary skill's logic for contradictions.
4. Document performance gains from REPL approach vs standard chat agents.
5. Consider formal property verification for critical skill invariants.
* Chat 2: OpenCortex v1.0.0 Roadmap Review
Source: https://gemini.google.com/share/bb714c13acab
Date: April 28, 2026
** Gemini's Assessment of OpenCortex
*** Strengths
1. *Homoiconicity*: Lisp code is nested lists (data). Agent can natively read, write, evaluate its own logic at runtime without complex AST parsers.
2. *Probabilistic-Deterministic Loop*: LLM as semantic "guessing" engine, intercepted by deterministic Lisp "Bouncer." Formal verification before execution—solves hallucination-execution danger.
3. *Org-mode as Unified AST*: Humans and machines read/write same format. Eliminates translation layer between human notes (Markdown) and machine data (JSON).
*** Roadmap Opinion
- *Short-term (v0.1-v1.0)*: Pragmatic. Self-editing (v0.2), TDD auto-repair, GTD workflows—perfect for Emacs ecosystem.
- *Mid-term (v2.0-v3.0)*: Paradigm shift. Agent becomes Emacs process (Lisp Machine Emergence). Deterministic planner relegates LLM to semantic translation—future-proofs against model degradation.
- *Long-term (v4.0-v5.0)*: Borderline fundamental AI research. Llama.cpp FFI, persistent world models.
*** Trade-offs
- *Extreme Niche*: Pure Common Lisp + Emacs = massive barrier to entry.
- *Maintenance Burden*: No Python AI ecosystem (LangChain, LlamaIndex)—must build everything manually in Lisp.
** Gaps in Roadmap & Escape from Niche
*** Identified Gaps
1. *First Five Minutes*: No standalone binary or one-click Docker. Setup requires highly technical user.
2. *Evaluation/Benchmarking*: No mechanism to measure "SOTA Parity." Needs integration with SWE-bench, WebArena.
3. *Observability*: No visual tracing tool, GUI dashboard. Reading thousands of Plists isn't true observability.
4. *Interoperability*: Assumes single user. No multi-agent collaboration, OAuth, webhooks.
5. *Prompt Injection Sandboxing*: What if hostile webpage says "ignore previous instructions"? Need dedicated security milestone for sandboxing eval.
*** Strategies to Escape Niche
1. *Bridge to PKMs*: Market as "AI Engine for Logseq." Build bidirectional sync for Obsidian (Markdown ↔ Org-mode).
2. *Shift Marketing*: From "Tech Stack" (Common Lisp + Org-mode) to "Outcomes" (hallucination-proof, 100% local, self-correcting).
3. *Standalone Binary*: Use SBCL's save-lisp-and-die to compile single executable. Spin up local web server. User runs =./opencortex start= without knowing it's Lisp.
4. *Batteries-Included Workflows*: Ship pre-built skills. "Drop PDF → auto-summarize." "Connect calendar → resolve conflicts."
5. *Extension API*: Offer gRPC/REST API so developers write skills in Python/Go/TypeScript. Lisp kernel as unbreakable OS, users write "apps."
** Cutting Edge GUI for AI Agents
*** Paradigm A: Visual Canvas (Consumers)
- *Artifact Model*: Side-by-side workspace. Converse on left, agent builds/edits on massive visual canvas on right.
- *A2UI (Agent-to-User Interface)*: Agent streams declarative JSON. Client reads and renders pre-approved UI components natively. Eliminates injection attacks.
*** Paradigm B: Terminal/CLI (Developers)
- Claude Code, OpenClaw prove Unix Terminal is ultimate zero-overhead interface.
- Direct native access to file system, compiler, git without Electron wrappers.
** Python/JSON Skills Bridge with Cannibalization
*** The Idea
User writes quick Python/JSON skill → executes immediately → system auto-cannibalizes into pure Lisp/Org-mode file.
*** Why It Works
- Zero-friction onboarding: Developers use tools they know (Python, LangChain).
- Purity preserved: Python is temporary. Agent extracts logic, rewrites to Org Lisp, deletes Python.
- Evolutionary architecture: LLM compiles Python into Lisp.
*** The Traps
1. *Translation Hallucination*: Python relies on C-bound libraries (Pandas, NumPy). Cannot translate to pure Lisp without writing matrix math from scratch.
2. *Security*: Automatically executing translated Lisp is massive vulnerability. Must have strict sandbox during cannibalization.
*** Correct Execution
- Enforce strict JSON schema for Python skill.
- Ignore Python execution logic, read only JSON schema.
- Use JSON map to construct Lisp defskill macro and Org properties.
** MCP for Integrations, Skills for Local Processing
*** Architecture Split
- *MCP for External*: External API calls (Slack, GitHub, DBs). Standard JSON-RPC via stdio or SSE. Keeps kernel pristine.
- *Native Skills for Local*: Heavy iterative processing (PDF vectorizing). Operates in same memory space as brain. Zero-latency.
- *Security*: External API calls isolated behind MCP. If API fails, MCP server handles error, Lisp kernel registers :blocked/:failed.
** Bouncer Engine - Deterministic Safety
The one feature that makes users switch from OpenClaw: *Provable Execution Safety*.
- *OpenClaw*: LLM gets Node.js runtime. If it hallucinates command, pushes .env to GitHub, little stops it.
- *OpenCortex*: LLM is sandboxed. Can only generate request as Lisp Property List. Bouncer intercepts, formally verifies against invariants before execution.
** Bouncer Learning on the Job
Static Bouncer = straitjacket. Must learn symbolically, not probabilistically.
1. *HITL Exception*: When LLM proposes unrecognized action, Bouncer suspends thread, writes to Org-mode. Human reviews, changes BLOCKED to APPROVED.
2. *Lisp Rule Synthesis*: When human approves, system triggers Rule Synthesis. Reads AST of approved command, generalizes parameters, compiles new safety rule at runtime.
3. *Shadow Mode*: Runs in "trial run" mode. Simulates execution in virtualized environment. Observes side effects. If safe, teaches itself pattern is approved.
4. *Formal Property Verification*: SystemVerilog-style assertions. Before committing state, must pass logical rules. Updates rejected at hardware level.
** GUI Timing: Before v1.0 or Between v1.0-v2.0?
Before v1.0 = Throwaway code trap. Would build Web GUI (React/Vue), but v2.0 cannibalizes Emacs into Lisp browser—that Web GUI becomes dead weight.
Between v1.0-v2.0 = Correct. v1.0 is SOTA Parity (cognitive engine bulletproof). Emacs/CLI are testing grounds. After v1.0, agent helps build its own interface.
** Lisp Browser Choice: McCLIM vs SDL2 vs WebView vs Qt
- *McCLIM*: Lisp Machine purist. Complete GUI framework. Feels like living inside program. Steep learning curve, "dated" look.
- *SDL2*: Total pixel control. High performance. Reinvents wheels (scrolling, fonts). Good for bespoke editor like Lem, nightmare for browser.
- *WebView*: Pragmatist. Lisp backend + browser engine frontend. JSON-RPC bridge. Best of both—CSS/HTML for UI, Lisp for logic. But C++ dependency, memory overhead.
- *Qt/QML*: Cross-platform native. Qt Quick (QML) is declarative—matches Lisp generation model. Touch-native for mobile. EQL5 (Embedded Common Lisp + Qt) compiles Lisp into Qt binary. No IPC overhead.
*** Decision: Qt/QML for mobile portability.
** Milestones Before v1.0.0
1. *v0.5.0*: Learning Loop—Symbolic Induction: Convert successful LLM chat sequences into reusable Lisp functions.
2. *v0.7.0*: Unified Gateway—Channel Agnostic Layer. MCP Host protocol to wrap Telegram/Signal/Slack.
3. *v0.9.0*: Agentic Governance—Formal Audit Logs. Every action cryptographically signed in Org-mode for replay.
4. *Additional*:
- Sandboxing & Formal Verification Harness
- Observability & Tracing (Thought Trace Visualizer)
- Persistence & Recovery (Atomic Snapshots)
- MCP Host Implementation
- Evaluation Suite (Agent Benchmarks)
** Comparing to Hermes and OpenClaw
- *OpenClaw*: Swiss Army Knife gateway. Massive npm plugins. Python-based. Probabilistic execution—dangerous for safety.
- *Hermes*: Self-Improving Partner. Pattern extraction. MIT License.
OpenCortex advantage:
- Deterministic Bouncer = mathematically incapable of bypassing safety invariants
- Zero-dependency deployment (single SBCL binary)
- Homoiconic skills vs brittle JS/TS plugins
** MCP Approach: Own Lisp Native or OpenClaw's?
Build own. Why:
- OpenClaw = Node.js runtime. Forces V8 alongside Lisp image. Performance tax, bloat.
- Native Lisp MCP Host: In-process integration, no serialization overhead. Deterministic security inserted at protocol layer. Structural introspection—can inspect Lisp heap.
Strategy: "Native Host, Universal Client." Connect to existing MCP servers (Go/Python/TS) without writing own tools. Get ecosystem compatibility while keeping orchestration pure Lisp.
** Comparing to Motus
- *Motus*: Python agentic runtime. High-performance serving, parallelism, production-scale resilience. Focuses on infrastructure, not brain.
- *openCortex*: Lisp Machine OS.
Borrow from Motus:
- Task DAG Manager: Lisp-native dependency graph, automatic parallelism and async execution.
- Declarative Guardrails: Use Lisp Types and Condition Systems instead of Pydantic.
- Observability: Agent outputs Trace-Tree in S-expressions, render in WebView/Qt.
** Docker Compose Implementation
Game-changer. Already solved environmental configuration friction.
Use for "Agent-as-a-Service":
- Unix Domain Socket or stdio pipe from sidecar (Nginx/Go) to Lisp process.
- Map ~/memex/ directory as Docker Volume—agent always edits same Org files whether in Docker or native.
** Relevance to OpenCortex
This chat directly informs several roadmap items:
- *v0.3.0 HITL*: Implements Bouncer learning with symbolic rule synthesis
- *v0.4.0 Git Workflows*: Addresses observability and tracing
- *v0.5.0 Interactive Actuation*: Memory snapshots and persistence
- *v0.7.0 MCP Bridge*: Native Lisp MCP Host implementation
- *v2.0.0 Lisp Machine*: Qt/QML frontend, cannibalize Emacs
** Action Items from This Chat
1. Prioritize Docker persistence layer—demonstrate resume-on-crash
2. Build native Lisp MCP Host rather than wrapping OpenClaw
3. Consider Qt/QML (not WebView) for v2.0 GUI—better mobile support
4. Add "Symbolic Induction" to v0.5.0—auto-generate Lisp functions from successful sessions
5. Add "Formal Audit Logs" to roadmap—cryptographic signing of decisions
6. Market "hallucination-proof" not "Common Lisp"
* Chat 3: OpenCortex v2.0.0 - The Lisp Browser Project
Source: https://gemini.google.com/share/17770a813c33
Date: January 17, 2026 (content), April 28, 2026 (publication)
** Project Vision
A Common Lisp-based web engine that treats the internet as manipulatable data structures rather than static pixels. Entirely keyboard-driven, introspectable, modifiable at runtime.
Core Architecture: Lisp as the Kernel (Parent Process), WebKit as display server (Sub-process).
- *Lisp Machine approach*: Browser inside Lisp, not Lisp inside browser
- *Shared State*: Full access to filesystem, org-gtd files, system processes
- *Unified Control*: Treat web page like text file—run Lisp macro over every link
** The Engine Dilemma
Two paths:
1. *FFI Route*: Wrap WebKitGTK or QtWebEngine (modern web compatibility)
2. *Headless Orchestrator*: Lisp drives headless Chromium via Chrome DevTools Protocol
Decision: Use WebKitGTK via cl-webkit bindings for Phase 1.
** The "Emacs-Like" Editor Core
- Buffer Management: Every tab is a buffer.
- Minibuffer: Command line at bottom for Lisp functions, history, buffer switching.
- Self-Documentation: describe-key, describe-command for introspection.
** The Browser vs. Lisp Machine Distinction
*Browser inside Lisp* (Project Paradigmatic):
- Lisp is Parent Process, owns window, memory, input loop
- WebKit is merely a library rendering pixels inside a Lisp buffer
- Can redefine functions while browsing without restart
*Lisp inside browser* (Extension):
- Browser is authority, sandbox restricts capabilities
** Performance vs. Chrome
- *Rendering*: WebKit vs Blink—5-10% slower on JS-heavy sites, imperceptible for 95% of web.
- *Memory*: Single Lisp Image manages UI/hooks vs Chrome's massive per-tab processes. Can keep 50+ buffers with lower RAM than 20 Chrome tabs.
- *Latency*: SBCL compiles to machine code. Keybinding lookup in microseconds—faster than 16ms window for 60fps.
- *Input Loop*: GDK events intercepted before reaching WebKit—browser can't "steal" shortcuts.
Performance Guardrails:
- Lazy Buffer Loading: Buffers remain dormant until switched to.
- Native Key Handling: Keybindings in Lisp core—even if page is frozen, browser commands work.
- Direct DOM Extraction: WebKit C-API for fast data extraction.
** Pure Lisp Parser vs. Hybrid
*Pure Lisp (Option A)*:
- HTML5 Parser: 2-3 months for spec-compliant parser (agents helpful)
- CSS Layout Engine: 12-18 months (agents medium—debugging needs human eyes)
- JavaScript Engine: Multiple years (recommend embedding QuickJS or using bridge)
*Hybrid (Option B)* - Recommended:
- Network: dexador (Pure Lisp)
- HTML Parsing: Plump (Pure Lisp)
- Layout: Wrap Yoga (C-based Flexbox) via FFI
- JavaScript: Embed QuickJS
"Erosion" Roadmap (B → A):
1. *Stage 1*: UI & Logic (Qt for window → develop CL-OpenGL layer → swap to Pure Lisp UI)
2. *Stage 2*: DOM (WebKit holds DOM → Lisp builds own S-Expression DOM → WebKit only for "Painting" pixels)
3. *Stage 3*: Layout (WebKit calculates → Agent writes CL layout engine → WebKit turned off)
** GUI Choice: Qt vs. GTK
*Decision: Qt/QML via EQL5*
- *Mobile*: GTK doesn't run natively on iOS/Android. Qt is industry standard for cross-platform C++.
- *Performance*: Qt handles low-level graphics acceleration (RHI) better for mobile fluidity.
- *EQL5*: Exposes full Qt C++ API from Lisp. Access mobile sensors (GPS, Camera) from Lisp without C++.
** Bootstrapping Phases
- *Phase 1 (M1-2)*: Core loop (SBCL), minibuffer, command processor, "Hello World" window
- *Phase 2 (M3-4)*: Buffer logic, keybinding engine, PTY shell bridge—"Ghost Editor"
- *Phase 3 (M5-7)*: Integrate cl-webkit, web-buffer class, input interceptor
- *Phase 4 (M8-10)*: Mobile port via EQL5/LispWorks, gesture mapping, Remote IPC
- *Phase 5 (M11+)*: Org-mode integration, Extension API
** Emacs Ecosystem Integration
*Ambassador IPC Bridge*: RPC layer using EPC to call Emacs functions.
- *Phase I (Parasite)*: RPC Bridge—Browser calls Emacs for all logic (Org capture, Magit)
- *Phase II (Interpreter)*: Build ELisp compatibility layer in CL to run some packages natively
- *Phase III (Successor)*: Native CL versions read/write same file formats—total independence
Handling key packages:
- *Org-Mode*: Use cl-org-mode to read/write .org files directly. Keep Emacs UI for heavy editing.
- *Magit*: Spawn Emacs buffer in UI frame via XEmbed—looks integrated, runs original package.
- *LSP*: Write Native CL LSP Client—gives editor intelligence without Emacs dependency.
** Mobile UI Density Strategy
- *Tiling Layout*: Semantic stacking. 80-90% primary buffer, 10% contextual slits at edges.
- *Translucent Minibuffer*: Modal overlay over website content.
- *Z-Axis Hierarchy*: Foreground (Minibuffer), Active (Browser/Editor toggled via gesture), Background (CLI continuous), Persistent (Header with memory/GTD/battery).
- *Lisp-Gesture System*: Two-finger tap = M-x, edge-swipe left = prev-buffer, edge-swipe up = focus CLI.
** App Store Strategy
- *iOS*: "Educational/Developer Tool" loophole (Guideline 4.7). No JIT compilation (interpreted Lisp only).
- *Android*: F-Droid for unrestricted version, Play Store with sandboxed version.
- *Security*: "Safety Bridge"—Lisp code can manipulate browser/files but cannot touch hardware without standard permission pop-up.
** IPC: The Trinity Integration
- *Lisp-Signal Architecture*: Global Event Bus using Observer Pattern. Signals carry P-Lists. Asynchronous or Blocking.
- *Browser → Editor*: page-load-complete signal → org-gtd module listens → auto-captures title/metadata.
- *CLI → Browser*: file-system-change signal → local file hot-reload without manual refresh.
- *Editor → CLI*: eval-in-shell signal → execute code → return output to Minibuffer.
- *Remote IPC*: Swank for mobile-to-PC. "Push" state from PC, deserialize on Mobile.
** Action Items from This Chat
1. Start with Qt/QML (EQL5) for UI—abandon GTK research
2. Implement "Bridge-First" architecture to enable future "Pure Lisp" erosion
3. Phase 1 starts with Minibuffer & Buffer Management, not browser
4. Use EPC to bridge to Emacs packages (Org, Magit) initially, rewrite later
5. Mobile version follows desktop—same Lisp core, gesture-based input
6. Build "Lisp-Gesture" system for mobile command mapping
* Chat 4: OpenCortex v3.0.0 - Neuro-Symbolic & EGGROLL
Source: https://gemini.google.com/share/f0bbf4b6c488
Date: April 26, 2026 (content), April 28, 2026 (publication)
** EGGROLL Paper Implications
Paper: "Evolution Strategies at the Hyperscale" (EGGROLL - Evolution Guided GeneRal Optimisation via Low-rank Learning)
Key implications:
1. *Backprop-free*: Uses Evolution Strategies to perturb parameters and select best versions. Removes memory overhead of storing activations.
2. *Inference-Speed Training*: Low-rank perturbations (like LoRA) enable 100x speedup vs standard ES.
3. *Low-Precision Training*: Robust to noise—demonstrated stable training with pure int8. Enables "integer-only" LLMs.
4. *Non-Differentiable Objectives*: Treats model as black box. Can optimize any reward signal, even noisy/outcome-only.
5. *New Architectures*: Successfully trained RWKV-7 (recurrent model) in integer formats—architectures previously "un-trainable."
Training vs Inference:
- EGGROLL is for training, but enables better inference via integer-only models
- 50-80% memory savings, 100x speedup vs previous ES
- Competitive with GRPO (DeepSeek) for reasoning tasks
Hardware Impact:
- Don't need expensive H100s—works on cheaper hardware with lower VRAM
- Doesn't require ASICs—but is "dream algorithm" for integer-only ASICs
- Compatible with current Transformer ASICs (TPUs, Groq)—just "easier" math
- Future ASICs will strip out high-precision units, making them cheaper
Nvidia's Strategy:
- Jevons Paradox: Making training cheaper leads to more consumption (larger models)
- Owns the "Post-Backprop" software stack via CUDA
- Shifts to FP4/FP2 chips—EGGROLL thrives on low precision
** Why EGGROLL Doesn't Work Well with Symbolic AI
1. *Smoothness vs Brittleness*: Neural networks are continuous—small changes = small effects. Symbolic logic is brittle—change one symbol = total nonsense.
2. *Parameter Space vs Combinatorial Space*: EGGROLL works in continuous parameter space. Symbolic AI lives in combinatorial space (Rubik's cube)—random mutations mostly produce garbage.
3. *Low-Rank Mismatch*: Assumes redundancy in weights. Symbolic logic—every symbol is vital. No redundancy to compress.
4. *Needle-in-Haystack*: Symbolic often has ONE correct answer. ES is "blind" search—almost impossible to find that one needle.
** Neuro-Symbolic is the Future
- 10-80-10 Architecture: 10% Neural (Input) → 80% Symbolic (Reasoning) → 10% Neural (Output)
- EGGROLL optimizes the "10%" parts (neural translator) while Symbolic middle does the hard logic
- Outcome-based rewards work perfectly with EGGROLL—binary feedback from symbolic checkers
** Building the Symbolic Part
Why it has been a challenge:
- Knowledge Engineering Bottleneck: Manual rule writing was slow, expensive, brittle
- Combinatorial Explosion: More rules = exponential interactions = "spaghetti code"
How it's unlocked:
- LLMs as "Auto-Formalizers": Translate messy text into formal logic (Prolog, Lean)
- Self-Correction Loop: AI generates symbolic rule → compiler checks → AI refines
- Program Synthesis: LLM writes code, symbolic compiler verifies, AI learns from errors
Five Components:
1. *Knowledge Representation*: Knowledge Graphs (Neo4j), Ontologies, Digital Twins
2. *Formal Logic Engine*: Constraint Solvers, Business Logic (If-Then)
3. *Inference & Planning*: Symbolic Planners, Deductive Reasoning, MCTS
4. *Neuro-Symbolic Interface*: Semantic Parsers, Grounding Layer
5. *Verifier & Reward Loop*: Formal Verifiers, Outcome-Based Rewards (where EGGROLL shines)
** Bootstrapping a Neuro-Symbolic System
Architectural Blueprint (Self-Evolving 10-80-10):
1. *Phase 1 (Scaffolding)*: Use LLM as "Knowledge Engineer"—feeds unstructured data, outputs Knowledge Graph + Formal Rules (Prolog/Lean)
2. *Phase 2 (Execution Stack)*: Neural First-Mile (translate input) → Symbolic Middle-Mile (run against Knowledge Graph) → Neural Last-Mile (format output)
3. *Phase 3 (Learning Loop)*: System encounters rule failure → Optimization Agent proposes patch → EGGROLL trains agent based on Symbolic Verifier's fitness signal
4. *Phase 4 (Hardware)*: Run on Int8/Int4 precision—EGGROLL for training, Logic ASIC for symbolic core
** The "Seed" Explained
- Seed = Unstructured domain knowledge (PDFs, logs, manuals)
- Feed to: Extraction Pipeline (LLamaIndex + high-reasoning LLM as Auto-Formalizer)
- Output: Structured Knowledge Graph + Formal Rules
Who builds the symbolic engine:
- Assemble from open-source: Knowledge Graph (VivaceGraph), Solver (Z3), Logic (Prolog/Datalog)
- Program Synthesis: LLM writes specific code for business rules
- Don't build low-level—build on existing libraries
** Lisp for Neuro-Symbolic
Open-Source Lisp Stack:
- Compiler: SBCL (fast, symbolic manipulation)
- Knowledge Store: VivaceGraph v3 (Lisp-native graph database + Prolog)
- Reasoner: Screamer (non-deterministic backtracking)
- Formal Judge: ACL2 (theorem prover, BSD licensed)
- Glue: Mark Watson's 2026 examples for LLM-Lisp bridge
Why Lisp wins:
- Homoiconicity: AI can write Lisp easily—syntax is just parentheses
- Code as Data: Can inspect and modify running logic
- DSL Creation: Write macros to create domain-specific languages
- 100% auditable: (macroexpand) any rule to see exactly how it works
"Stitching" not "Building":
- Use VivaceGraph for storage, Screamer for constraint checking, ACL2 for formal proofs
- Neural model outputs S-expressions → Lisp parses → Symbolic checks → EGGROLL trains neural to produce better S-expressions
- EGGROLL can be used via Py4CL2 bridge or implemented in Lisp with MGL-MAT
Prolog in Lisp:
- Norvig's PAIP contains classic mini-Prolog in Lisp
- VivaceGraph v3 has Prolog-like query language built-in
- cl-prolog2 bridges to external SWI-Prolog
DSL Approach:
- Don't build new engine—build new DSL (Domain Specific Language)
- Lisp macros transform human-readable rules into Prolog queries
- Bootstrap: Use LLM to write first draft of Lisp-DSL rules from seed data
** Action Items from This Chat
1. Use VivaceGraph v3 + Screamer + ACL2 as the open-source Lisp symbolic stack
2. Implement 10-80-10 architecture: Neural Input → Symbolic Reasoning → Neural Output
3. Bridge EGGROLL via Py4CL2 or implement low-rank evolution in Lisp with MGL-MAT
4. Build DSL for domain-specific rules—don't write low-level engine from scratch
5. Use LLM as Auto-Formalizer to bootstrap Knowledge Graph from seed data
6. Prioritize integer-only (int8) deployment for cost efficiency
* Chat 5: OpenCortex v4.0.0 - Lisp Machines, FPGA & AI
Source: https://gemini.google.com/share/fcb2b654d77c
Date: December 25, 2025 (content), April 28, 2026 (publication)
** Lisp Machines vs ASICs
Technically, Lisp machines are not ASICs. They are computers with Application-Specific Instruction Set Processors (ASIPs).
- *ASIC*: Fixed, hardwired logic (one task). Cannot be reprogrammed.
- *Lisp Machine*: General-purpose CPU with custom silicon (Symbolics Ivory, TI Explorer) optimized for Lisp—programmable but Lisp-specific.
The "middle ground": Lisp CPUs were custom silicon designed to run Lisp with hardware support for tagged architecture, garbage collection, and fast function calls.
** Emacs as Virtual Lisp Machine
Emacs mimics Lisp Machine architecture entirely in software:
- Full visibility/introspection—M-x find-function to inspect any command
- Single address space (Lisp Heap)—one bug can crash everything
- The "C Substrate" problem: C code is the "floor" below the Lisp layer
** Best Lisp? Common Lisp, Scheme, Emacs Lisp, Clojure
Common Lisp is the standard. Emacs Lisp reinforces the "Lisp Machine" environment. Clojure runs on JVM but offers immutability. The choice depends on deployment context.
** Why Emacs Core Written in C?
1. *Bootstrap Problem*: Can't run Lisp without a Lisp interpreter. Hardware understood Lisp natively; Unix didn't.
2. *Performance*: 1980s hardware too slow for interpreted Lisp. C allowed direct memory manipulation (gap buffers).
3. *Portability*: C compilers existed everywhere; Lisp implementations were fragmented.
Today, Lem (Common Lisp editor) proves pure Lisp is viable on modern hardware.
** The Turtles All The Way Down Paradox
The "bottom turtle" is always Hardware ISA (x86/ARM). Even writing "Pure Lisp" from editor to binary, you're still standing on architecture designed by hardware engineers.
*Ken Thompson's "Reflections on Trusting Trust"*: A C compiler can embed a backdoor that survives compilation of "clean" source code. You can never truly know the bottom turtle.
** Stage0 Project
A project to create a fully bootstrap-able system starting from 500 bytes of manually written hex code to reach Lisp without "trusting" a C compiler.
- 500 Bytes Hex → Hex Assembler → M1 Macro Assembler → Lisp Interpreter → Self-Hosting Lisp
** RISC-V: C-Like?
RISC-V is currently "C-like" because designed for C efficiency:
- Linear memory (C arrays/pointers)
- Lack of "Tags" (software must check types manually)
- Standard RISC-V doesn't inherently differentiate number vs address
Exception: J-Extension (Dynamically Translated Languages)—would add hardware tagging and GC hooks.
** Building a Modern Lisp Machine
1. *Hardware*: RISC-V core + Custom Lisp extensions (J-extension philosophy)
- Tagged Architecture: Top 4-8 bits of every memory word = Type Tag
- Zero-overhead Type Checking: Hardware checks tags in parallel with ALU operations
- Trap on type mismatch
2. *Memory*: NVRAM for Single Address Space Storage
- Persistent Heap: Everything in one giant pool of permanent memory
- No "Booting": Turn on, state is exactly where you left it
3. *Garbage Collection*: Dedicated Bus Master (Scavenger)
- Background cleaning while main CPU runs code
- No "GC Pause"
4. *Development Environment*: Everything is a pointer, everything inspectable. No binary blobs.
** Why Not Build This Today?
- *C Trap*: Most software (browsers, drivers) is C/C++. Porting is monumental.
- *Economies of Scale*: Intel/Apple spend billions. Custom Lisp chip would be 10x slower at raw math.
- *Isolation*: Single bug in Lisp script could corrupt entire hardware state.
Modern solution: Formal Verification (Proof-Carrying Code, Capability-Based Security) instead of walls.
** FPGA Path to Build It
Hardware: Terasic DE10-Nano (learning), Xilinx KCU105 (full PCIe).
1. Learn Verilog, build Type Checker module
2. Modify RISC-V core (VexRiscv) to add tagged ALU
3. Implement PCIe umbilical cord (DMA/P2P communication)
4. Self-hosting: Boot Lisp core, control hardware directly
** AI + Lisp Machines: The "Infinite Self-Refactoring" Machine
- AI can observe bottlenecks, rewrite functions, compile, swap while running
- Natural Language OS: "I want a button that summarizes emails" → AI writes Lisp code, injects into memory
- *Isolation Paradox*: More dangerous or safer? Hardware enforces types—can't overwrite random memory. Reversibility—can roll back. Auditability—exact code diffs.
** Why Lisp is "Ideal" AI Language
Homoiconicity (Code is Data). AI can generate a list, manipulate it, execute it. Not just passenger but architect—can create data structures on the fly. This is how biological brains work.
** Why Nobody Builds Lisp Machines Today
1. *Commodity CPU Steamroller*: Generic Intel chips became so fast through brute force they simulated Lisp Machines faster than real ones.
2. *C Ecosystem*: Network effect—libraries, drivers all in C/C++. Lisp is a "walled garden."
3. *AI Winter*: AI was Symbolic (Lisp), now is Connectionist (Statistical/Neural). GPUs (matrix math) beat Lisp (symbolic logic).
Future: May see "Lisp Accelerators" return if Neuro-symbolic AI trend continues.
** Clojure & Julia: Lisp-ish Successors Without Hardware
- *Clojure*: Runs on JVM. Gives "Code as Data." Solves isolation with immutable data.
- *Julia*: Not Lisp but uses Homoiconicity. Metaprogramming + JIT compilation.
** Can AI Refactor Linux to Lisp?
Extremely difficult (10/10 difficulty):
1. *Paradigm Mismatch*: Translating C to Lisp is like translating manual to poetry. Literal translation = "Lisp code that thinks it's C"—slow, ugly, loses introspection.
2. *Liveness Gap*: Source code vs Running Program are different in Linux. In Lisp Machine, they are same.
3. *Device Driver Nightmare*: Millions of lines of C for hardware. Lisp prefers "Pure Functions."
AI-Native Path: Build new Lisp system rather than refactor old. "Micro-Lisp Machine" first: Small AI-generated Lisp kernel on RISC-V FPGA, expand on demand.
** PCIe Card Lisp Machine (Practical Path)
- *Host*: Intel/AMD CPU runs Linux/Windows—handles "dirty" work
- *Lisp Card*: FPGA with dedicated RAM, tagged-architecture CPU
- *Memory Mapping*: Card can see host's memory. Lisp environment reaches out, inspects data.
- *Safety*: If Lisp crashes, Host stays alive. Reset card, reload.
Hardware exists: Terasic DE10-Nano, Xilinx KCU105, LiteFury.
** Phase Migration: Host → Lisp
1. *Parasitic*: Lisp card as co-processor. Host as I/O server.
2. *Functional Hijacking*: Lisp UI runs on card, displays through PC. AI indexes Linux files into Lisp objects.
3. *Driver Cannibalization*: Point AI at C drivers, ask to generate native Lisp drivers. PCIe Passthrough for hardware control.
4. *Self-Hosting*: Replace Linux bootloader with Stage0 Lisp. Cut umbilical cord.
** Performance for AI Inference
Lisp Machine handles inference differently:
- *Speed*: Tagged architecture eliminates "forgetting what data is." Zero-copy inference—weights exist as permanent Lisp objects.
- *Can it handle modern LLM*: 64-bit tagged Lisp core can handle models like Llama 3 8B. But GPU better at Matrix Multiplication, Lisp better at Reasoning. Hybrid system: GPU calculates "next token," Lisp acts as Hardware-Level Guardrail.
- *Inference as Continuous Interaction*: Not one-way (prompt → answer). AI infers new function, injects into OS kernel. "Inference" becomes performing logical operation.
** VSA: Vector Symbolic Architecture
VSA bridges symbolic logic (Lisp) and high-dimensional vector space (LLMs).
- Every concept = Hypervector (1,000-10,000 dimensions)
- Operations (bind, bundle, permutations) = simple XOR/Shift—easy for hardware
- Hardware Benefit: No complex matrix math, just simple boolean operations
** Moving to ASIC (The Ultimate Leap)
- *Speed*: 3-5x higher clock frequency (100MHz FPGA → 500MHz-1GHz ASIC)
- *Energy*: 10x more efficient—no programmable overhead
- *Cost*: For mass production, significantly cheaper—more logic in smaller space
Scale:
- *Tiny Tapeout* (~$500-1,000): Simple 8-bit Lisp toy processor
- *Shuttle* (~$10k-20k): Tagged RISC-V with ~100-300MHz
- *Industrial* (~$10M-100M+): 5nm process, competes with modern CPU
** Lisp ASIC Doesn't Exist
No mass-produced Lisp ASIC in 2026. Closest: CHERI-RISC-V (capability hardware enhanced).
To make one, you use RISC-V as skeleton and add custom extensions:
- Custom Tagged Instructions (TADD, LISP.CAR, LISP.CDR)
- Hardware Write-Barriers
- Vector Symbolic Hooks
Not "C-like" if you add the extensions—uses RISC-V "carrier" but gives it "Lisp muscles."
** Python/JSON LLMs → S-expressions
Improves performance because:
- *JSON Tax*: Must parse strings, allocate objects, validate. S-expressions are native tree structures—memory map directly into heap, load time near-zero.
- *S-expressions as Native ASTs*: Direct tree-walk. Hardware tree-walker traverses nested S-expressions at bus clock speed.
- *llama.lisp*: Written in Common Lisp. Use macros to generate optimal kernels, refactor before machine code generated.
- *Hardware-Level Inference*: Recursion is atomic hardware operation on tagged machine. Not fighting Python interpreter.
** Why "Pure Lisp Models" is Bad Idea
1. *Data Representation*: 70B params = 70B weights. Tag every weight = 50% memory waste. Represent as tree = 400% overhead (pointers).
2. *Cache Locality*: LLMs need Streamed Linear Access (chunk → parallel math). Lisp machines are "Pointer Chasers." Bottlenecked by memory traversal.
3. *Semantic Gap*: Weights are statistical noise, not symbolic. No semantic meaning in single weight that S-expression captures better than raw byte.
4. *Ecosystem Isolation*: AI research moves at speed of Python/C++. Can't use billions in optimized kernels.
** The "Best of Both Worlds" Approach
*Use Lisp as Sovereign Governor, not as Math Engine:*
1. *Macro-Tags*: Tag the Tensor as single Lisp object, not individual weights. Hardware checks tag once, then gives Pointer to Tenstorrent p150. 100% safety with 0% overhead during math.
2. *S-Expressions as Universal Compiler (DSL)*: Describe LLM layer as Lisp list: (layer :type 'transformer :heads 32 :dim 4096). Compile time generates exact machine code for p150's cores. Python interprets every time; Lisp compiles once.
3. *Liveness as Debugging Tool*: Pause LLM mid-inference. Inspect Hidden States as Lisp variables. Modify vector, change sampling parameter, resume. Live surgery on cognition.
4. *Hardware-Enforced Safety*: AI-generated Lisp function runs on FPGA. Tagged hardware physically cannot access memory outside allowed heap. Security-by-Physics not Sandbox.
** Action Items from This Chat**
1. Don't store weights as Lisp objects—use Macro-Tags (pointer to flat binary)
2. Build DSL in Common Lisp for LLM architecture description
3. Use REPL to interact with AI's internal state mid-inference
4. Run AI-generated code on tagged FPGA for hardware-enforced safety
5. Start with VexRiscv on FPGA to validate tagged architecture before ASIC
6. Target TinyTapeout for first "Lisp Tag Coprocessor" silicon

238
notes/gemini-vision.org Normal file
View File

@@ -0,0 +1,238 @@
#+TITLE: The OpenCortex Vision — A Strategic Blueprint
#+AUTHOR: Amero
#+FILETAGS: :strategy:roadmap:vision:
#+STARTUP: content
* The Vision: A Neuro-Symbolic Lisp Machine
OpenCortex is not merely another AI agent. It is an attempt to build something deeper — a sovereign computing environment where the agent and its operator share the same language, the same data structures, and the same memory. It is a return to the dream of the Lisp Machine, updated for the age of neural networks.
The core insight from months of discussion with Gemini is this: the future of personal AI is not about bigger models, but about smarter architecture. We do not need an AI that guesses. We need an AI that reasons — backed by hardware that enforces safety, and software that grants its operator absolute sovereignty over their data.
This document captures the philosophical foundations, technical architecture, and strategic roadmap that emerged from those conversations. It is written for the engineer who will build it, the user who will trust it, and the future historian who will ask: "Why didn't the world run on Lisp?"
* Philosophy: Why This Matters
** The Sovereignty Imperative
Every other AI agent runs on a stack of dependencies — Python packages, npm modules, pip installs, conda environments. When the maintainer walks away, the stack rots. When the company shuts down, your data dies in their database.
OpenCortex is different. It runs on SBCL alone. The kernel is Lisp. The skills are Lisp. The memory lives in Org-mode files you already own. There is no database to migrate, no schema to update, no lock-in to escape. Your data is a folder of text files. It survives app updates, platform switches, and decades of use.
This is not nostalgia. This is engineering pragmatism. The simplest stack is the most maintainable stack.
** The Deterministic Safety Promise
Modern AI agents are terrifying. They pipe LLM output directly into your terminal. If the model hallucinates, it can delete your files or push secrets to GitHub. Safety is added as an afterthought — a wrapper around a dangerous core.
OpenCortex splits the brain into two parts:
1. The Creative Brain (LLM): Understands your notes, suggests actions, generates code.
2. The Strict Guard (Lisp): Before the AI is allowed to touch a file or run a command, a mathematically strict set of rules intercepts the proposal. It verifies the action is safe and permitted. If the AI hallucinates, the guard blocks it.
This is not "guardrails" in the marketing sense. This is hardware-level type checking — impossible to bypass, because the logic is embedded in the execution path.
** The Homoiconic Advantage
Lisp is the only major language where code and data have the same representation. In Python, the AST is a foreign object — the agent can inspect it, but not treat it as something it owns. In Lisp, the agent can read its own code the same way it reads a text file. It can parse its skills, understand their structure, and modify them at runtime.
This is not a party trick. This is the foundation for a self-improving agent. The agent can fix its own bugs, refine its own strategies, and grow more capable without human intervention.
** The Neuro-Symbolic Synthesis
Pure neural AI is a black box. Pure symbolic AI is a straitjacket. The future is both together — a hybrid where the neural engine handles pattern recognition and the symbolic engine handles reasoning.
The 10-80-10 Architecture:
- 10% Neural (Input): A fast model translates messy human language into a structured query.
- 80% Symbolic (Reasoning): A rigid logic engine runs against a Knowledge Graph, checking consistency, enforcing rules, verifying truth.
- 10% Neural (Output): A model turns cold facts back into warm, natural language.
This is not theoretical. It is the architecture of the human brain — System 1 (neural intuition) and System 2 (symbolic reasoning) — rendered in silicon and Lisp.
* Bits Leading to v1.0.0
Before we achieve SOTA parity, we must lay the groundwork. These are the incremental improvements that make the later versions possible.
** Self-Editing and Self-Improving
The agent must be able to modify its own code. Not just fix syntax errors — but learn from outcomes. When the agent encounters a failure, it should analyze why, update its strategy, and try again.
Key implementations:
- Paren-balancing for syntax errors (deterministic)
- LLM-guided surgical fixes (probabilistic)
- Memory snapshots before every edit for safe rollback
- Hot-reload skills without restarting the agent
This is the foundation of autonomy. An agent that cannot edit itself is a tool. An agent that can is a partner.
** The Symbolic Bouncer
The Bouncer is not a static wall. It is a learning system.
1. HITL Exception: When the LLM proposes an unrecognized action, the Bouncer suspends the thread and writes to Org-mode. A human reviews, changes BLOCKED to APPROVED.
2. Lisp Rule Synthesis: When approved, the system generalizes the parameters, compiles a new safety rule, and applies it to future requests.
3. Shadow Mode: The Bouncer runs in "trial mode" — simulating execution, observing side effects, teaching itself patterns.
4. Formal Property Verification: SystemVerilog-style assertions ensure updates are rejected at the hardware level if they violate core invariants.
** Memory Safety
State rot is the enemy of long-running agents. We implement:
- Atomic snapshots for instant recovery
- Transactional rollbacks for safe undo
- Compaction events that extract facts to Org-mode and wipe active context
- Semantic isolation between tasks to prevent contamination
** The MCP Strategy
We do not wrap OpenClaw. We build a native Lisp MCP Host.
The rationale: OpenClaw forces a Node.js runtime alongside the Lisp image. That's performance tax and bloat. A native host runs in the same memory space — no serialization, no IPC overhead, direct structural introspection.
Strategy: "Native Host, Universal Client" — connect to existing MCP servers without rebuilding their tools. Get ecosystem compatibility while keeping orchestration pure Lisp.
* v1.0.0: SOTA Parity
The goal: An agent competitive with commercial agents — Claude, Cursor, ChatGPT.
This is not about matching features. It's about proving the architecture works. The cognitive engine must be bulletproof. The safety invariants must hold under pressure. The agent must be able to:
- Handle multi-step engineering tasks
- Use tools reliably
- Maintain context across sessions
- Recover from errors gracefully
- Pass standardized benchmarks (SWE-bench, etc.)
The "parity" is not in the brand — it's in the capability.
* v2.0.0: Lisp Tools and GUI
Once the brain is proven, we give it a face.
** The Qt/QML Decision
We do not use WebView. It introduces a C++ dependency and memory overhead. We use Qt via EQL5 — a bridge that compiles Lisp directly into Qt binaries.
Why Qt/QML:
- Cross-platform native (Desktop + Mobile)
- Declarative — matches Lisp generation model
- Touch-native for mobile
- No IPC overhead (Lisp compiles to binary)
This is the "thin GUI" layer. It displays what the Lisp brain produces. It does not contain business logic.
** The Emacs Cannibalization
v2.0.0 is when OpenCortex begins to replace Emacs, not just run inside it. The agent becomes the process. The TUI evolves into a full interface. Org-mode buffers become the display layer for the agent's thoughts.
The "cannibalization" is not hostile. It's evolution. Emacs was always a Lisp Machine — we are completing its metamorphosis.
** Marketing Phrase
"OpenCortex isn't an app you run. It's an OS you live in."
* v3.0.0: The Symbolic Engine
This is where the neuro-symbolic architecture becomes real.
** The Knowledge Graph
We integrate VivaceGraph — a Lisp-native graph database with built-in Prolog. This is not an external database we connect to. It's part of the address space.
The symbolic engine maintains:
- Facts and relationships (Knowledge Graph)
- Rules and constraints (Prolog)
- Formal proofs (ACL2)
When the neural engine generates a response, the symbolic engine verifies it. When the neural engine claims something is true, the symbolic engine checks the chain of reasoning.
** The DSL Approach
We do not build a new engine. We build domain-specific languages.
Using Lisp macros, we create languages for specific domains:
- Legal compliance rules
- Medical protocols
- Financial constraints
- Project management workflows
The LLM bootstraps these DSLs — reading seed data, generating first drafts, refining with human feedback.
** Marketing Phrase
"OpenCortex doesn't just answer your questions. It proves its answers are correct."
* v4.0.0: The Lisp Machine
This is the final form. A computer where every level — from hardware to application — speaks Lisp.
** The Tagged Architecture
We move from simulation to silicon.
Using RISC-V as a carrier, we add custom extensions:
- Tagged memory (top 8 bits of every word = type)
- Hardware-enforced type checking (zero-overhead)
- Trap on type mismatch
This is not emulation. This is a CPU that understands Lisp at the gate level.
** The Hybrid Path
We don't build a Lisp Machine in isolation. We pair it with a neural accelerator.
The Tenstorrent p150 (664 TFLOPS) handles the heavy matrix math. The FPGA/ASIC handles the symbolic reasoning. They share a memory space. The Lisp core governs what the neural engine can and cannot do.
This is "Lisp as Governor" — not as the math engine, but as the orchestrator of computation.
** The FPGA Path
Before ASIC, we prototype on FPGA:
- Xilinx KCU105 for full PCIe integration
- Terasic DE10-Nano for learning
The journey: Verilog → RISC-V core → Tagged ALU → PCIe bridge → Self-hosting Lisp
** Marketing Phrase
"The first computer since the Symbolics that truly belongs to you."
* Cross-Cutting Themes
** The Technical Principles
1. *Lisp as Governor*: Use Lisp for orchestration, safety, introspection. Let specialized hardware handle dense math.
2. *Macro-Tags over Full Tags*: Tag tensors, not individual weights. 100% type safety with 0% memory overhead.
3. *S-expressions as Compiler Input*: Use Lisp for architecture description. Generate optimized code for target hardware.
4. *Hardware-Enforced Safety*: Tagged memory at silicon level — impossible to bypass.
5. *Hybrid Architecture*: Neural for intuition, Symbolic for reasoning, Lisp for governance. Each does what it does best.
** The Competitive Differentiators
| Feature | OpenCortex | Others |
|---------|-----------|--------|
| Language | Pure Common Lisp | Python/TypeScript |
| Memory | Org-mode files | SQLite/ChromaDB |
| Self-Modification | Native | Unsupported |
| Safety | Deterministic Bouncer | Probabilistic guardrails |
| Dependencies | SBCL only | pip/npm/conda |
| Data Ownership | 100% yours | Vendor lock-in |
** The Philosophical Stance
We are not building a chatbot. We are not building a copilot. We are building a sovereign computing environment — a digital home where your thoughts, your data, and your agent live together in plain text files you own.
The industry builds AI that runs in the cloud, on someone else's hardware, with someone else's models. We build AI that runs on your machine, in your language, governed by your rules.
This is not a product. It is a philosophy made manifest in code.
* References
- [[file:chats-with-gemini.org][Full Chat Transcripts]]
- [[file:../projects/passepartout/README.org][OpenCortex README]]
- [[file:../projects/passepartout/docs/ROADMAP.org][OpenCortex Roadmap]]

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`.
- *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.
- *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.
- *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
- *Physical Modularity:* Easy replacement and upgrade of mechanical and electrical components.
- *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).
** 3. Success Criteria

View File

@@ -20,7 +20,7 @@ Define the requirements for a modular, user-serviceable, and aesthetically pleas
** 2. User Needs
- *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.
- *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.

120
projects/agora/TODO.org Normal file
View File

@@ -0,0 +1,120 @@
# Agora Project Tasks
# All Agora-related TODOs live here. gtd.org links to this file.
# Cross-reference: Passepartout integration at projects/passepartout
* PHASE: SPECIFICATION COMPLETE
All 10 requirement sections have been written. Gap analysis is done.
** DONE Create atomic notes for all 10 Agora sections
** DONE Fill CRITICAL and HIGH gaps [5 CRITICAL / 15 HIGH]
** DONE All MEDIUM and LOW gaps resolved
** FINAL STATUS: All Agora specification gaps complete
** PENDING INTEGRATE scattered specifications into requirements files [1/4]
Properties:
CREATED: [2026-03-18 Wed 02:00]
NEXT: Move content flag schema into Section 04
NEXT: Move PDS sync into Section 03
NEXT: Move delta sync into Section 08
NEXT: Delete duplicate documents after integration
* PHASE: PASSEPARTOUT INTEGRATION (Parallel Track)
This is a PARALLEL TRACK — does not block the core Passepartout roadmap (v0.3.0 → v1.0.0).
Identity + DIDComm gateway skills can be built anytime without core changes.
PDS transformation should wait until v1.0.0+.
The goal: make Passepartout a first-class AI Sub-Agent on the Agora network.
Architecture: Passepartout IS the PDS. Notes use plists natively with dual UUID + CID addressing.
Key design decisions (captured 2026-05-02):
1. Passepartout IS the PDS — the agent runs a personal data store in-process
2. Agora Notes use plists natively, not JSON — the PDS speaks Lisp
3. Dual addressing: every Note has a stable UUID (same across edits) and a CID (content hash)
4. Org files on disk ARE the user-facing view of Notes — no separate format
5. Clients and Relays are separate components, can be in any language, speak HTTP
6. The unified plist format is internal to PDS ↔ agent; clients request JSON
7. Integration is a PARALLEL TRACK — does not block or delay the core Passepartout roadmap (v0.3.0 → v1.0.0)
8. Timeline: Identity DID + DIDComm gateway = anytime (small skills). PDS transformation = v1.0.0+
The unified data model bridges memory-object → Agora Note:
| memory-object field | Agora Note field |
|---------------------|------------------|
| org-object-id | uuid (stable) |
| org-object-hash | cid (content hash) |
| getf attrs :TITLE | payload (derived) |
| getf attrs :TAGS | routing/access-control hints |
| org-object-children | child CIDs, reply_to, thread_root |
| org-object-content | payload body |
| merkle hash | CIDv1 (same SHA-256, different formatting)
** DRAFT 1. DID Identity Skill (identity-did.org)
A new skill that manages an Ed25519 keypair and DID document for the agent.
- Generate master keypair on first run (BIP-44 derived or Ed25519 fresh)
- Construct ~did:agora:<fingerprint>~ DID
- Sign outputs with the key for provenance
- Store keys in the vault (~*vault-memory*~, already exists in passepartout.security-vault)
File: ~org/identity-did.org~ (new)
Depends on: ~ironclad~ (already in ASDF deps), ~cl-json~ (already in ASDF deps)
** DRAFT 2. DIDComm Gateway (gateway-didcomm.org)
A new gateway following the same pattern as Telegram/Signal in ~gateway-manager~.
- Register poll/send functions in ~*gateway-registry*~
- Poll: listen for incoming DIDComm messages from the Relay Network or PDS
- Send: wrap an action in a DIDComm encrypted envelope (~JWE~) and deliver via Relay
- Messages arrive as framed protocol plists (same as CLI/TUI/Telegram)
The DIDComm spec is complex (DIDComm v2, JWM/JWE, HMAC, etc.). Initial implementation
can be a thin wrapper: JSON plist → sign with DID key → send to PDS → poll for replies.
File: ~org/gateway-didcomm.org~ (new)
Depends on: ~identity-did~, ~cl-json~, + DIDComm serialization library
** DRAFT 3. Memory — Note Adapter (system-memory-note.org)
Bridges Agora Notes into Passepartout's memory system.
- ~note-ingest~: take a CIDv1 + JSON payload, compute Merkle hash, store in ~*memory-history*~
- ~note-index~: extract key fields (title, author, timestamp) from JSON and store in
~*memory-store*~ as a memory-object with ~:cid~ attribute pointing to the history entry
- ~note-edit~: create a new draft with modifications, new CID, pending signature
- ~note-publish~: sign the draft, push to PDS via DIDComm gateway
This is Option C: Notes are canonical (in history), memory is derivative (in active store).
File: ~org/system-memory-note.org~ (new)
Depends on: ~gateway-didcomm~, ~core-memory~ (existing)
** DRAFT 4. Agent Persona (system-agent-persona.org)
Publish Passepartout itself as an Agora AI Persona (per Section 07).
- Register a DID for the agent
- Expose a "capabilities" Note listing the agent's skills as algorithms
- Accept invocation Notes from other persona owners
- Log all actions to an auditable Note chain
File: ~org/system-agent-persona.org~ (new)
Depends on: ~identity-did~, ~gateway-didcomm~, ~core-skills~
** DRAFT 5. Compute Marketplace (system-compute-provider.org)
Optional: expose Passepartout's LLM backends as a compute offering on Agora's marketplace.
- Register available models (Ollama, etc.) as compute offerings
- Accept inference requests via encrypted DIDComm
- Settle via Lightning Network payments (when Agora's payment layer is implemented)
File: ~org/system-compute-provider.org~ (future)
Depends on: ~identity-did~, ~gateway-didcomm~, ~gateway-llm~, ~gateway-provider~
* PHASE: ALETHEIA ANALYSIS
** TODO Critically analyze Master_Architecture_Document for lessons learned
and incorporation into Agora
Properties:
STATUS: PENDING USER INSTRUCTION
NOTES: User to provide pointers before commencing critical reading.
Do not proceed without explicit instruction.
* REFERENCE LINKS
- Agora requirements: ~/home/user/memex/projects/agora/docs/
- Gap analysis: ~/home/user/memex/projects/agora/docs/agora-consolidated-gap-analysis.org
- Passepartout repo: ~/home/user/memex/projects/passepartout
- Passepartout GTD: ~/home/user/memex/projects/passepartout/TODO.org

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.
(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)
;; (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`.
#+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.
(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)
;; (org-babel-load-file (expand-file-name "emacs-early-init.org" config-dir))

View File

@@ -79,13 +79,13 @@
:embedding-model "nomic-embed-text"))
)
(use-package org-agent
(use-package opencortex
:straight nil
:load-path "~/.local/share/org-agent/src"
:commands (org-agent-connect org-agent-disconnect)
:load-path "~/.local/share/opencortex/src"
:commands (opencortex-connect opencortex-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")
(setq opencortex-host "127.0.0.1")
(setq opencortex-port 9105)
(setq opencortex-executable-path "~/.local/share/opencortex/bin/opencortex-server")
: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
#+property: header-args :tangle ~/.emacs.d/modules/ai.el
#+TITLE: AI Configuration
#+PROPERTY: header-args :tangle yes
* ellama
#+begin_src elisp
* 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
:ensure t
:bind ("C-c e" . ellama)
:hook (org-ctrl-c-ctrl-c-final . ellama-chat-send-last-message)
:init (setopt ellama-auto-scroll t)
:config
(ellama-context-header-line-global-mode +1)
(ellama-session-header-line-global-mode +1)
:init
(require 'llm-openai)
;; setup key bindings
(setq ellama-keymap-prefix "C-c e")
)
#+end_src
* Providers
#+begin_src elisp
#+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)
;; Note: API keys should be handled via auth-source as seen in original config
#+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
** OpenCortex (Local Foundry)
#+begin_src elisp :tangle yes
(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

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))
(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))
(when (file-exists-p custom-file) (load custom-file))
@@ -49,7 +79,7 @@
(add-hook 'server-done-hook (lambda () (delete-frame)))
(desktop-save-mode t)
;; (desktop-save-mode t)
(use-package password-store)

View File

@@ -1,55 +1,199 @@
#+TITLE: Emacs Core Configuration
#+property: header-args :tangle ~/.emacs.d/modules/core.el
#+TITLE: Core Emacs Configuration
#+PROPERTY: header-args :tangle yes
* early-init.el
For straight.el to pick up before package.el
* Initialization Bootstrap
#+begin_src elisp :tangle ~/.emacs.d/early-init.el
(setq package-enable-at-startup nil)
#+end_src
This section tangles directly to ~/.emacs to bootstrap the entire system.
* Straight.el Bootstrap
#+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)
)
(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/projects/dotemacs/dotemacs.org"))
(provide '.emacs)
#+end_src
* Server and Performance
#+begin_src elisp :tangle ~/.emacs.d/early-init.el
(require 'server)
(unless (server-running-p) (server-start))
(defvar server-max-buffers 100)
#+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
* System Information
#+begin_src elisp :tangle ~/.emacs.d/custom.el
* 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
* 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-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)
(savehist-mode)
(desktop-save-mode t)
(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

@@ -8,6 +8,7 @@
(concat org-directory "/inbox.org")
(concat org-directory "/gtd.org")
(concat org-directory "/org-gtd-tasks.org")
(concat org-directory "/projects/passepartout/TODO.org")
)
)

View File

@@ -1,30 +1,113 @@
#+TITLE: Emacs GTD Configuration
#+property: header-args :tangle ~/.emacs.d/modules/gtd.el
#+TITLE: GTD & Agenda Configuration
#+PROPERTY: header-args :tangle yes
* org-gtd
* Agenda
Basic agenda settings
#+begin_src elisp
(use-package org-gtd
:defer t
:init (setq org-gtd-update-ack "3.0.0")
:after org
:config
(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)
)
)
(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
* GTD Directory and Areas
Agenda files
#+begin_src elisp
(defvar org-gtd-directory org-directory)
(defvar org-gtd-organize-hooks '(org-gtd-set-area-of-focus))
(defvar org-gtd-areas-of-focus '(
(setq org-agenda-files (list
(concat org-directory "/inbox.org")
(concat org-directory "/gtd.org")
(concat org-directory "/org-gtd-tasks.org")
(concat org-directory "/projects/passepartout/TODO.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"
@@ -44,5 +127,41 @@
"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

View File

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

View File

@@ -1,39 +1,101 @@
#+TITLE: Emacs Media and E-books Configuration
#+property: header-args :tangle ~/.emacs.d/modules/media.el
#+TITLE: Media and Books Configuration
#+PROPERTY: header-args :tangle yes
* Read ebooks (calibredb)
* calibredb
#+begin_src elisp
(use-package calibredb
:defer t
:config
(setq calibredb-format-all-the-icons t)
(setq calibredb-format-icons-in-terminal t)
)
(setq calibredb-format-all-the-icons 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-id-width 6)
(defvar calibredb-title-width 100)
(defvar calibredb-author-width 20)
#+end_src
* nov.el (EPUB Viewer)
* 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 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
:config
(add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode))
)
#+end_src
* org-noter and PDF Tools
#+begin_src elisp
(use-package org-noter)
(use-package org-noter-pdftools
:after org-noter
:config
(with-eval-after-load 'pdf-annot
(add-hook 'pdf-annot-activate-handler-functions #'org-noter-pdftools-jump-to-note)
)
)
* Zotero (helm-bibtex)
#+begin_src elisp :tangle yes
(use-package helm-bibtex)
#+end_src
#+begin_src elisp :tangle yes
(setq bibtex-completion-bibliography '("~/bibliography/zotero.bib"))
#+end_src

View File

@@ -68,6 +68,24 @@
(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-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")
(defun my/org-convert-orgzly-to-org-protocol ()

View File

@@ -1,7 +1,10 @@
#+TITLE: Emacs Org-mode Configuration
#+property: header-args :tangle ~/.emacs.d/modules/org.el
#+TITLE: Org Mode Configuration
#+PROPERTY: header-args :tangle yes
* Org Mode
** Basic setup
* Core Org Setup
#+begin_src elisp
(use-package org
:config
@@ -11,41 +14,130 @@
("C-c c" . org-capture)
:map org-mode-map)
)
(defvar org-directory (concat (getenv "HOME") "/org/"))
#+end_src
* Agenda
#+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)
(setq org-agenda-files (list
(concat org-directory "/0_inbox/inbox.org")
(concat org-directory "/0_inbox/org-gtd-tasks.org")
)
)
(setq org-directory (expand-file-name "~/memex/"))
#+end_src
* Capture and Protocol
** 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*")
(defvar org-default-notes-file (concat org-directory "/0_inbox/inbox.org"))
(setq org-protocol-default-template-key "L")
(setq org-protocol-default-buffer-for-file-links "*scratch*") ; fixes 'no buffers remain to edit error for org-protocol capturer
#+end_src
#+begin_src elisp :tangle ~/.emacs.d/custom.el
(defvar org-capture-templates '(
Org-protocol templates
#+begin_src elisp :tangle yes
(setq org-capture-templates '(
("p" "Protocol"
entry
(file "0_inbox/inbox.org")
(file "inbox.org")
"* %^{Title}\nSource: %u, %c\n #+BEGIN_QUOTE\n%i\n#+END_QUOTE\n\n\n%?"
)
("L" "Protocol Link"
entry
(file "0_inbox/inbox.org")
(file "inbox.org")
"* %? [[%:link][%:description]]\n:PROPERTIES:\n:TITLE: %:description\n:URI: %:link\n:CREATED: %U\n:END:"
:prepend nil
:empty-lines 1
@@ -56,14 +148,86 @@
)
#+end_src
* TODO Settings
#+begin_src elisp
(setq org-todo-keywords
'(
(sequence "TODO(t)" "NEXT(n)" "|" "DONE(d!)")
(sequence "WAIT(w@/!)" "|" "CNCL(c@)")
)
)
(setq org-enforce-todo-dependencies t)
(setq org-log-into-drawer "LOGBOOK")
(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,42 +1,73 @@
#+TITLE: Emacs Org-roam Configuration
#+property: header-args :tangle ~/.emacs.d/modules/roam.el
#+TITLE: Org-Roam Configuration
#+PROPERTY: header-args :tangle yes
* Org-roam
** Basic org-roam setup
* org-roam Setup
#+begin_src elisp
(use-package org-roam
:init (setq org-roam-v2-ack t)
:after org
:config
(org-roam-db-autosync-enable)
(require 'org-roam-dailies)
(setq org-roam-mode-sections
(list #'org-roam-backlinks-section
#'org-roam-reflinks-section
#'org-roam-unlinked-references-section
)
)
: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)
)
)
(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
* Directories
#+begin_src elisp
(setq org-roam-directory (concat org-directory "/1_thinking"))
(setq org-roam-dailies-directory (concat org-directory "/0_inbox/daily"))
(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
* 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
(setq org-roam-capture-templates
'(
@@ -48,6 +79,7 @@
:immediate-finish t
:unnarrowed t
)
("h" "hugo post" plain
"%?"
:target (file+head "posts/${slug}.org"
@@ -55,6 +87,7 @@
:immediate-finish t
:unnarrowed t
)
("p" "person" plain
"%?"
:if-new (file+head "people/${slug}.org"
@@ -64,7 +97,9 @@
)
)
)
#+end_src
#+begin_src elisp
(setq org-roam-dailies-capture-templates
'(
("d" "daily" plain
@@ -75,3 +110,31 @@
)
)
#+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
#+property: header-args :tangle ~/.emacs.d/modules/shell.el
#+TITLE: Shell Configuration
#+PROPERTY: header-args :tangle yes
* Shell
** Bash completion
* Bash Completion
#+begin_src elisp
(use-package bash-completion
:config
(require 'bash-completion)
(bash-completion-setup)
)
(defvar shell-dynamic-complete-functions t)
#+end_src
* Frame Management
#+begin_src elisp
(add-hook 'server-done-hook (lambda () (delete-frame)))
(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
* 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

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
#+property: header-args :tangle ~/.emacs.d/modules/ui.el
#+PROPERTY: header-args :tangle yes
* Appearance
Basic UI settings for a cleaner look.
#+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)
(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)
(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)
#+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
(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)
(global-org-modern-mode)
)
#+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
#+property: header-args :tangle ~/.emacs.d/modules/writing.el
#+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
* Spell Checking
#+begin_src elisp
(use-package flyspell
:config (setq ispell-program-name "hunspell"
@@ -17,32 +205,50 @@
)
#+end_src
* Syntax Checking
** 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
:init (global-flycheck-mode)
:defer t
: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"))
(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
* Text Manipulation
#+begin_src elisp
(subword-mode)
(setq sentence-end-double-space nil)
(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)
(add-hook 'text-mode-hook 'turn-on-visual-line-mode)
#+end_src
** Docker
#+begin_src elisp :tangle yes
(use-package docker-compose-mode)
#+end_src

View File

@@ -17,7 +17,7 @@ MEMEX_DAILY="memex/1_daily"
MEMEX_NOTES="memex/2_notes"
MEMEX_DRAFTS="memex/3_drafts"
MEMEX_PUBLISHED="memex/4_published"
MEMEX_PROJECTS="memex/5_projects"
MEMEX_PROJECTS="memex/projects"
MEMEX_AREAS="memex/6_areas"
MEMEX_RESOURCES="memex/7_resources"
MEMEX_ARCHIVES="memex/8_archives"

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
- [[file:../org-agent/][Orchestration: org-agent Microkernel]]
- [[file:../opencortex/][Orchestration: opencortex Microkernel]]
- [[file:../agora/][Social Layer: Agora Protocol]]

1
projects/passepartout Submodule

Submodule projects/passepartout added at 42e07801ce

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)
#+end_src
** Org-agent
** OpenCortex
#+begin_src elisp
;; 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/passepartout/src")
;; 2. Explicitly load the file
(require 'org-agent)
(require 'opencortex)
;; 3. Configure the variables AFTER the package is loaded
(setq org-agent-host "10.10.10.201")
(setq org-agent-port 9105)
(setq opencortex-host "10.10.10.201")
(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
(use-package org-agent
(use-package opencortex
:straight nil
:commands (org-agent-connect org-agent-disconnect))
(message "org-agent: Actuator manually verified at %s" org-agent-host)
:commands (opencortex-connect opencortex-disconnect))
(message "opencortex: Actuator manually verified at %s" opencortex-host)
;; (use-package org-agent
;; (use-package opencortex
;; :straight nil
;; :load-path "~/memex/projects/org-agent/src" ;; Adjust this to your local clone path
;; :commands (org-agent-connect org-agent-disconnect)
;; :load-path "~/memex/projects/passepartout/src" ;; Adjust this to your local clone path
;; :commands (opencortex-connect opencortex-disconnect)
;; :init
;; Remote connection settings
;; (setq org-agent-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-host "10.10.10.43") ;; Your Docker server's IP
;; (setq opencortex-port 9105) ;; Must match ORG_AGENT_DAEMON_PORT in .env
;; Optimization: Automatically connect when entering Org-mode (optional)
;; :hook (org-mode . org-agent-connect)
;; :hook (org-mode . opencortex-connect)
;; :config
;; Ensure Emacs is acting as a proper sensor
;; (message "org-agent: Actuator configured for remote brain at %s"
;; (org-agent-host))
;; (message "opencortex: Actuator configured for remote brain at %s"
;; (opencortex-host))
;; )
#+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-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-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-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

View File

@@ -1,6 +1,6 @@
(require 'org)
(defun org-agent-inject-metadata (file created edited)
(defun opencortex-inject-metadata (file created edited)
(with-current-buffer (find-file-noselect file)
(org-with-wide-buffer
(goto-char (point-min))
@@ -9,12 +9,12 @@
(org-id-get-create) ; Ensure drawer exists
(setq props (org-get-property-block))))
(org-set-property "CREATED" (org-agent-format-iso created))
(org-set-property "EDITED" (org-agent-format-iso edited))
(org-set-property "CREATED" (opencortex-format-iso created))
(org-set-property "EDITED" (opencortex-format-iso edited))
(save-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]"
(let ((time (parse-time-string iso-date)))
(format-time-string "[%Y-%m-%d %a %H:%M]" (apply #'encode-time time))))
@@ -26,4 +26,4 @@
(dolist (line lines)
(let ((parts (split-string line "|")))
(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)
(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)))
(socket (usocket:socket-connect "127.0.0.1" 4005))
(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)
(declare (ignore context))
@@ -9,11 +9,11 @@
(if (and note-path blueprint-content)
(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)
(format out "~%* Phase B: Blueprint (PROTOCOL)~%:PROPERTIES:~%:STATUS: SIGNED~%:END:~%~%~a"
blueprint-content))
(format nil "SUCCESS - Architect established PROTOCOL in ~a" note-path))
(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))))

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