Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
db85263
feat: OEW assessment, jspace package, and codespace reorganization
cursoragent Aug 3, 2026
409e39a
feat(0.21.0): OEW higher-order thinking ON by default
cursoragent Aug 3, 2026
88f3558
feat: harvest J-Space silent chain on Hermes session end
cursoragent Aug 3, 2026
b69abac
research+test: Baars/Changeux/Anthropic day-in-life OEW proof
cursoragent Aug 3, 2026
779ccd1
docs+feat: Anthropic X video deep dive → Hermes base as J-space
cursoragent Aug 3, 2026
bb4212b
feat(0.22): Cube-centered connect — agents join a growing J-space room
cursoragent Aug 3, 2026
597482b
feat(0.23): unify Hermespace into open-source JSpaceEngine
cursoragent Aug 4, 2026
71b8a87
refactor(0.24): rebrand to Hermespace Access Engine / Access Workspace
cursoragent Aug 4, 2026
d705aa6
feat(0.25): harden Access Engine for Hermes v0.20
cursoragent Aug 6, 2026
4d9e56e
test: validate current Hermes plugin manager
cursoragent Aug 6, 2026
9b90a9e
fix: bound hooks and unify runtime identity
cursoragent Aug 6, 2026
079010a
fix(install): prefer the selected checkout runtime
cursoragent Aug 6, 2026
1193fd9
feat(0.25): cable Cube prefetch skip and Insight perceive card
cursoragent Aug 15, 2026
f5beed7
fix(insight): lock cable to perceive_card next to cube_beat
cursoragent Aug 15, 2026
bd4466d
fix(cube): skip cube_beat on pre_llm when provider is hermescube
cursoragent Aug 15, 2026
09b244f
fix(cube): keep cube_beat when Hermes config is unreadable
cursoragent Aug 15, 2026
23e64ec
feat(execute): AuDHD one live goal, named park, action-lead report
cursoragent Aug 15, 2026
a843ba4
feat(ops): doctor FAIL plus union plugins.enabled
cursoragent Aug 15, 2026
633af3c
feat(desktop): observe-only FOA chip on composer.dock
cursoragent Aug 15, 2026
723c52a
feat(access): lens operator-only; park spoken intermediates on post_llm
cursoragent Aug 15, 2026
07b779a
feat(access): bind swap/ablate/reflect to next spoken Report
cursoragent Aug 15, 2026
798e413
feat(access): park tool:{name} silent step on post_tool_call
cursoragent Aug 15, 2026
f54cf84
feat(install): one-install kit offers Cube/Insight, unions plugins.en…
cursoragent Aug 15, 2026
9080603
feat(hooks): absorb unused Hermes hooks, shrink inject under 9k
cursoragent Aug 15, 2026
9ef4d7e
docs: front-door paragraph — install Space, get a better turn
cursoragent Aug 15, 2026
f757c72
feat(access): context surgery and bounded self-trace
cursoragent Aug 15, 2026
14687a6
feat(bench): week-one offline harness (C1 T1 L1 M1)
cursoragent Aug 15, 2026
af594c7
fix(desk): next-action Report, distinct FOA, parent-cwd smoke
cursoragent Aug 15, 2026
1f76fa0
fix(desk): bind FOA, short verb Report, collapse hub copies
cursoragent Aug 15, 2026
fa7c131
fix(desk): land zip after-state — Write the README
cursoragent Aug 15, 2026
d770c43
fix(inject): put hub silent on the T2 model context
cursoragent Aug 16, 2026
e132720
fix(cognition): live-goal refresh plus Silent (prior) on inject
cursoragent Aug 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: CI

on:
push:
branches: [main]
pull_request:

permissions:
contents: read

concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true

jobs:
python:
name: Python ${{ matrix.python }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python: ["3.10", "3.12", "3.13"]
env:
HERMESPACE_NEURAL_VERBALIZE: "0"
HERMESPACE_SKIP_NEURAL: "1"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
cache: pip
- name: Install clean package
run: python -m pip install .
- name: Unit tests
run: python -m unittest discover -s tests -v
- name: Hermes v0.20 host contract
run: python scripts/verify_hermes_integration.py

integration:
name: Smoke and operational E2E
runs-on: ubuntu-latest
env:
HERMESPACE_NEURAL_VERBALIZE: "0"
HERMESPACE_SKIP_NEURAL: "1"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip
- run: python -m pip install .
- name: Security audit
run: ./scripts/security_audit.sh
- name: Lint production additions
run: |
python -m pip install ruff
python -m ruff check --isolated \
src/hermespace/atomic.py \
src/hermespace/hermes_runtime.py \
src/hermespace/plugin.py \
scripts/verify_hermes_integration.py \
tests/test_plugin_contract.py \
tests/test_store.py
- name: Smoke
run: ./scripts/smoke_test.sh
- name: Ops end-to-end
run: ./scripts/e2e_ops.sh
- name: Week-one bench
run: python scripts/bench_week1.py
- name: Build wheel and sdist
run: |
python -m pip install build
python -m build
4 changes: 2 additions & 2 deletions ABOUT.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
**Hermespace is a functional J-Space workbench for Hermes agents** — FOA desk, dual decode, and an append-only world projection. Not [J-Space](https://github.com/anomalyco/j-space) neural weights. Not a second runtime. A harness-level global workspace inside Hermes that runs **standalone** and is **powered by [HermesCube](https://github.com/PabloTheThinker/hermescube)** when present.
**Hermespace is a functional Access Workspace workbench for Hermes agents** — FOA desk, dual decode, and an append-only world projection. Not [Access Workspace](https://github.com/anomalyco/j-space) neural weights. Not a second runtime. A harness-level global workspace inside Hermes that runs **standalone** and is **powered by [HermesCube](https://github.com/PabloTheThinker/hermescube)** when present.

Alongside the desk: skills+MEMORY fabric, neural FOA, autonomy grid, Cube heart/center cable (soft-fail).

Expand Down Expand Up @@ -38,7 +38,7 @@ Hermespace solves this with two systems:
| Project | Relation |
|---------|----------|
| [ActiveGraph](https://github.com/anomalyco/ActiveGraph) | Event log is the agent, graph is the world — influenced the archive-first design |
| [J-Space](https://github.com/anomalyco/j-space) | Verbal workspace, ~25 concepts, broadcasting hub — inspired the `concepts` system and `_refresh_concepts()` |
| [Access Workspace](https://github.com/anomalyco/j-space) | Verbal workspace, ~25 concepts, broadcasting hub — inspired the `concepts` system and `_refresh_concepts()` |
| [Missing Knowledge Layer](https://arxiv.org/abs/2405.10697) | Knowledge = supersession, Memory = decay, Wisdom = evidence-gated — inspired the epoch progression from unfiltered archive → evidence-gated wisdom |
| [Vygotsky](https://en.wikipedia.org/wiki/Inner_speech) | Inner speech, signs as instruments of thought — influenced the dual decode architecture (report to human vs context to model) |
| [Hermes Agent](https://github.com/NousResearch/hermes-agent) | The agent that grows with you, by Nous Research |
Expand Down
3 changes: 2 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ PYTHONPATH=src python3 -m unittest discover -s tests -v
| Agent skill | `skills/hermespace/` |
| CLI | `src/hermespace/cli.py`, `scripts/hs` |
| Tests | `tests/` |
| North star | `PURPOSE.md`, `docs/CODEMAP.md` |
| North star | `PURPOSE.md`, `LAYOUT.md`, `docs/architecture/CODEMAP.md` |
| Assessment | `docs/assessment/28-hermes-agent-jspace-assessment.md` |
| Maintainer note | `FOR_HERMES.md` |
| Integration doors | `INTEGRATION.md`, `WORKFLOW.md` |

Expand Down
90 changes: 2 additions & 88 deletions FOR_HERMES.md
Original file line number Diff line number Diff line change
@@ -1,89 +1,3 @@
# For Hermes Agent maintainers & dogfooders
# FOR_HERMES

**Repo:** https://github.com/PabloTheThinker/hermespace
**Companion to:** [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent)
**Not** an official Nous product — independent open companion workspace.

## What this is (30 seconds)

Hermespace adds a **limited working-memory desk** beside Hermes:

1. **Workbench** — FOA, park stack, load-aware `receive_order`
2. **Dual decode** — short human `report` vs dense model `context` (never dump inject to chat)
3. **Fabric** — rank *this* `$HERMES_HOME/skills` + inject MEMORY/USER excerpts
4. **Plugin** — `on_session_start` / `pre_llm_call` / `on_session_end` broadcast when desk ready
5. **Study DB** — turns under `~/.hermespace` (local; not Hermes session DB)

It does **not** replace Hermes tools, skills, memory, gateway, or the agent loop.

## Fast path

```bash
git clone https://github.com/PabloTheThinker/hermespace.git
cd hermespace
./scripts/install_hermes.sh
./scripts/smoke_test.sh # expect 9/9
```

Then in any agent session:

```python
from hermespace import Workbench
wb = Workbench(agent_id="hermes", session_id="main")
wb.enter()
r = wb.receive_order("…", goal="…", say="…", force=True)
# r["user_reply"] → user r["model_context"] → model
```

Or CLI: `./scripts/hs turn -m "…" --goal "…" --say "…" --force`

## Design honesty

| Claim | Reality |
|-------|---------|
| “Like Claude J-space” | **Role** only — limited workspace *outside* weights. No activation access. |
| Consciousness / brain scan | **No.** Harness cognition + optional local embeddings. |
| Replaces Hermes skills/memory | **No.** Ranks and injects them. |
| Official Nous module | **No.** Community companion; feedback welcome. |

Inspired by working-memory limits (Baddeley-style capacity, load, GWT broadcast as *metaphors* for agent UX) and Anthropic’s public J-space *research framing* — implemented as open Hermes integration, not a closed-model probe.

## Integration surface

| Door | Entry |
|------|--------|
| Plugin | `hermes_plugin/` → `$HERMES_HOME/plugins/hermespace` |
| Skill | `skills/hermespace/` → `$HERMES_HOME/skills/hermespace` |
| Python | `hermespace.agent_api`, `hermespace.Workbench` |
| CLI | `scripts/hs` |
| Smoke | `scripts/smoke_test.sh` |

Hook implementation lives in `src/hermespace/hermes_bridge.py` (plugin is thin `register`).

When the plugin directory is a **symlink into this checkout**, import auto-resolves `../src` so dogfooders often need no `HERMESPACE_ROOT`.

## Autonomy grid (v0.14)

Missions, lenses, dream, self-talk, skillbench (hot-swap / merge / mutate), title tree.
Ground-up for Hermespace — not a port of AgentDrive or Conductor.

```bash
hs grid status
hs grid dream --force
```

See docs/18-autonomy-grid.md. Autonomy self-order stays **off** unless `HERMESPACE_AUTONOMY=1`.

## What we want from Hermes dogfood

- Does plugin register cleanly on current Hermes?
- Is dual-decode useful on Telegram/gateway, or noisy?
- Fabric skill ranking quality on real skill trees?
- Gaps vs native Hermes memory / Honcho / skills loop?
- Would you want any of this upstream-shaped (skill only, plugin only, or neither)?

Open issues/PRs on the repo. Thanks for looking.

## License

MIT — see `LICENSE`. Hermes Agent remains Nous Research’s project under its own license.
Moved to **[docs/integration/FOR_HERMES.md](docs/integration/FOR_HERMES.md)**.
13 changes: 8 additions & 5 deletions INTEGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ hermes plugins enable hermespace
```

Agent skill SoT: [`skills/hermespace/SKILL.md`](skills/hermespace/SKILL.md).
Recommended env: see `docs/RECOMMENDED.md`.
Recommended env: see `docs/ops/RECOMMENDED.md`. · Layout: `LAYOUT.md`.

## Door A — Python (best for agents)

Expand Down Expand Up @@ -122,12 +122,15 @@ send_user(result["user_reply"])

See docs/14-workbench-pocket-dimension.md.

## Hermes framework hooks (v0.12)
## Hermes framework hooks (v0.20+)

Plugin registers:
- `on_session_start` — workbench enter + env kit context
- `pre_llm_call` — desk + neural broadcast + workbench footer
- `on_session_end` — idle_tick
- `on_session_start` — initialize the session scope
- `pre_llm_call` — bounded ephemeral Access Workspace context
- `post_llm_call` / `post_tool_call` — observe completed work
- `on_session_end` — lightweight turn boundary
- `on_session_finalize` — final harvest + idle maintenance
- `on_session_reset` / `subagent_start` / `subagent_stop` — gateway/A2A lifecycle

Why: docs/16-why-hermes-framework.md

Expand Down
60 changes: 60 additions & 0 deletions LAYOUT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Hermespace codespace layout

North star: [PURPOSE.md](PURPOSE.md) · Assessments:
[28-hermes-agent-jspace](docs/assessment/28-hermes-agent-jspace-assessment.md) ·
[33-living-memories-cube-world](docs/assessment/33-living-memories-cube-world.md)

## Repository map

```
hermespace/
├── PURPOSE.md / ABOUT.md / README.md / LAYOUT.md
├── src/hermespace/ # Python package
│ ├── access/ # ★ Access Engine (hub · env · protocol · engine)
│ ├── turn/ # planned — workflow/desk/gate (README only)
│ ├── memory/ # planned — world/episodic/semantic (README only)
│ ├── warehouse/ # planned — cube cable (README only)
│ ├── grid/ # autonomy grid (missions · dream · skillbench)
│ ├── hermes_bridge.py # Hermes plugin hooks
│ └── … # turn spine still at package root (stable imports)
├── hermes_plugin/ # thin Hermes register()
├── desktop_plugin/ # Hermes Desktop page/pane
├── skills/hermespace/ # agent skill
├── docs/
│ ├── access/ # Access Workspace map · thesis · environment
│ ├── assessment/ # deep assessments
│ ├── architecture/ # CODEMAP · Cube contract
│ ├── integration/ # Hermes fit · FOR_HERMES
│ ├── ops/ # pulse · everyday · recommended
│ ├── research/ # numbered research archive
│ └── roadmap/ # open backlog · OEW phases
├── tests/ · scripts/ · experiments/ · benchmarks/
├── runtime/ · spec/ # templates / protocol specs
└── assets/
```

## Layer authority

| Layer | Path | Authority |
|-------|------|-----------|
| OEW / Access Workspace | `src/hermespace/access/` | Turn FOA + audit SoT |
| Turn spine | package root (`workflow`, `desk`, …) | Live turn |
| Autonomy | `grid/` | Missions / dream / skillbench |
| Identity projection | `world.py` … | Recharged from Cube |
| Warehouse cable | `cube_module.py` | Soft-fail Cube heart |
| Hermes surface | `hermes_plugin/` + bridge | Hooks only |

## Import rules

Prefer:

```python
from hermespace.jspace import JSpace, JSpaceEnv, evaluate_material_turn
```

Compat: `hermespace.jspace_env` still re-exports `JSpaceEnv`.

## Moving code later

Planned packages under `turn/`, `memory/`, `warehouse/` hold READMEs only until
OEW Phase B is green — avoid churning imports while the protocol lands.
Loading
Loading