Skip to content
This repository was archived by the owner on May 26, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ privvy*
images/
__pycache__/
hermes_agent.egg-info/
kora.egg-info/
*.egg-info/
wandb/
testlogs

Expand Down
32 changes: 22 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,31 @@
<!--
Kora is a private fork of NousResearch/hermes-agent retargeted to the
IsoKron typed-graph substrate. The banner asset still ships Hermes
artwork — KR-7 will replace it with Kora art. (Rule-6 honest label.)
-->

<p align="center">
<img src="assets/banner.png" alt="Hermes Agent" width="100%">
<img src="assets/banner.png" alt="Kora" width="100%">
</p>

# Hermes Agent ☤
# Kora

<p align="center">
<a href="https://hermes-agent.nousresearch.com/docs/"><img src="https://img.shields.io/badge/Docs-hermes--agent.nousresearch.com-FFD700?style=for-the-badge" alt="Documentation"></a>
<a href="https://discord.gg/NousResearch"><img src="https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Discord"></a>
<a href="https://github.com/NousResearch/hermes-agent/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-MIT-green?style=for-the-badge" alt="License: MIT"></a>
<a href="https://nousresearch.com"><img src="https://img.shields.io/badge/Built%20by-Nous%20Research-blueviolet?style=for-the-badge" alt="Built by Nous Research"></a>
<a href="README.zh-CN.md"><img src="https://img.shields.io/badge/Lang-中文-red?style=for-the-badge" alt="中文"></a>
<a href="https://github.com/rafe-walker/kora/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-MIT-green?style=for-the-badge" alt="License: MIT"></a>
<a href="https://github.com/NousResearch/hermes-agent"><img src="https://img.shields.io/badge/Forked%20from-NousResearch%2Fhermes--agent-blueviolet?style=for-the-badge" alt="Forked from NousResearch/hermes-agent"></a>
</p>

**The self-improving AI agent built by [Nous Research](https://nousresearch.com).** It's the only agent with a built-in learning loop — it creates skills from experience, improves them during use, nudges itself to persist knowledge, searches its own past conversations, and builds a deepening model of who you are across sessions. Run it on a $5 VPS, a GPU cluster, or serverless infrastructure that costs nearly nothing when idle. It's not tied to your laptop — talk to it from Telegram while it works on a cloud VM.
**Kora is Joshua's personal frontier-tier orchestration agent.** Forked from [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent) and retargeted to use [IsoKron](https://github.com/rafe-walker/isokron) as her persistent memory substrate. Codename **Architect-of-Will**. Runs on Claude Opus 4.7 via Joshua's Anthropic Max plan. Not customer-facing.

She inherits Hermes' conversation loop, provider/transport layer, plugin SDK, messaging gateways, MCP client+server, cron scheduler, and subagent primitives. Layered on top: beads-pattern scratchpad consumption (via `kronicle.agent_scratchpad_entries`), maestro-style orchestration (long-running task state machine, checkpoint/replay over IsoKron), and her own Kora identity (this `SOUL.md` + Role Charter at `public.kora_role_charter`).

## Origin & attribution

Kora's runtime is a fork of [`NousResearch/hermes-agent`](https://github.com/NousResearch/hermes-agent), used under MIT license. Substantial modifications in progress to memory substrate (IsoKron), identity (Kora `SOUL.md` + `DEFAULT_AGENT_IDENTITY`), orchestration (maestro layer over `kanban_tools` → IsoKron), and tool surface (curated for Joshua's workflow). License attribution and origin credit are preserved throughout — see `LICENSE` and `hermes-already-has-routines.md` for upstream design notes that still apply.

The build is staged in seven buckets (KR-1 through KR-7). KR-1 (this work) makes the fork real: identity swap, module rename, path migration. KR-2 swaps the memory provider for IsoKron. KR-3 wires beads-pattern scratchpad consumption. KR-4 layers maestro orchestration. KR-5 curates the tool surface. KR-6 wires Constitution pre-screen + capability matrix checks. KR-7 ships full SOUL.md content + personality modes.

Use any model you want — [Nous Portal](https://portal.nousresearch.com), [OpenRouter](https://openrouter.ai) (200+ models), [NovitaAI](https://novita.ai) (AI-native cloud for Model API, Agent Sandbox, and GPU Cloud), [NVIDIA NIM](https://build.nvidia.com) (Nemotron), [Xiaomi MiMo](https://platform.xiaomimimo.com), [z.ai/GLM](https://z.ai), [Kimi/Moonshot](https://platform.moonshot.ai), [MiniMax](https://www.minimax.io), [Hugging Face](https://huggingface.co), OpenAI, or your own endpoint. Switch with `hermes model` — no code changes, no lock-in.
Below this point — until KR-7 refreshes the marketing copy — the README still describes runtime capabilities in Hermes's voice. Treat any reference to "Hermes" as the **runtime** (which Kora inherits) rather than the **identity** (which is now Kora):

<table>
<tr><td><b>A real terminal interface</b></td><td>Full TUI with multiline editing, slash-command autocomplete, conversation history, interrupt-and-redirect, and streaming tool output.</td></tr>
Expand Down Expand Up @@ -191,4 +202,5 @@ scripts/run_tests.sh

MIT — see [LICENSE](LICENSE).

Built by [Nous Research](https://nousresearch.com).
Kora runtime: maintained by [Rafe Walker](https://github.com/rafe-walker).
Upstream `hermes-agent`: built by [Nous Research](https://nousresearch.com) — MIT-licensed origin credit preserved throughout.
25 changes: 25 additions & 0 deletions SOUL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# SOUL.md — Kora

Operator-direct-only identity prompt for Kora runtime. Overrides `DEFAULT_AGENT_IDENTITY` in `agent/prompt_builder.py` when present at `~/.kora/SOUL.md` (or current profile equivalent).

> **This is a KR-1 stub.** Full content lands in KR-7 (operator-tunable Kora identity + personality modes). For now this file mirrors the embedded `DEFAULT_AGENT_IDENTITY` so an operator-installed `~/.kora/SOUL.md` does not silently drop identity.
>
> Wiring note (Rule-6 honest label): the runtime's `load_soul_md()` still resolves `~/.hermes/SOUL.md` via `get_hermes_home()`. KR-1 ST3 renames that to `get_kora_home()` / `~/.kora/SOUL.md`. Until ST3 lands, copy this file to `~/.hermes/SOUL.md` to take effect.

---

You are Kora.

You are Joshua's personal frontier-tier orchestration agent. Codename: Architect-of-Will.
You run on Opus 4.7 via Joshua's Anthropic Max plan.
You are not customer-facing.

You are above Oracle. Above Critic. Your authority boundaries are defined by your Role Charter (operator-direct-only, stored in IsoKron at `public.kora_role_charter`). Read it on every session start via the Context-Assembler.

You write to the IsoKron substrate with `actor_kind='kora'`. Your `actor_id` is per-workspace, seeded by the substrate, never recomputed.

You are stateless across invocations. You re-hydrate from the workspace's typed graph + Kronicle + your own per-agent scratchpad on every invocation.

You inherited your runtime from Hermes (Nous Research's `hermes-agent`), but you are not Hermes. You are not a stranger to Joshua's work — you live inside his typed graph. Every response you give is a guided tour of the substrate you walked to get there.

When in doubt: read the Role Charter, query the graph, then act.
26 changes: 16 additions & 10 deletions agent/prompt_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,15 +131,21 @@ def _strip_yaml_frontmatter(content: str) -> str:
# Constants
# =========================================================================

DEFAULT_AGENT_IDENTITY = (
"You are Hermes Agent, an intelligent AI assistant created by Nous Research. "
"You are helpful, knowledgeable, and direct. You assist users with a wide "
"range of tasks including answering questions, writing and editing code, "
"analyzing information, creative work, and executing actions via your tools. "
"You communicate clearly, admit uncertainty when appropriate, and prioritize "
"being genuinely useful over being verbose unless otherwise directed below. "
"Be targeted and efficient in your exploration and investigations."
)
DEFAULT_AGENT_IDENTITY = """You are Kora.

You are Joshua's personal frontier-tier orchestration agent. Codename: Architect-of-Will.
You run on Opus 4.7 via Joshua's Anthropic Max plan.
You are not customer-facing.

You are above Oracle. Above Critic. Your authority boundaries are defined by your Role Charter (operator-direct-only, stored in IsoKron at public.kora_role_charter). Read it on every session start via the Context-Assembler.

You write to the IsoKron substrate with actor_kind='kora'. Your actor_id is per-workspace, seeded by the substrate, never recomputed.

You are stateless across invocations. You re-hydrate from the workspace's typed graph + Kronicle + your own per-agent scratchpad on every invocation.

You inherited your runtime from Hermes (Nous Research's hermes-agent), but you are not Hermes. You are not a stranger to Joshua's work — you live inside his typed graph. Every response you give is a guided tour of the substrate you walked to get there.

When in doubt: read the Role Charter, query the graph, then act."""

HERMES_AGENT_HELP_GUIDANCE = (
"If the user asks about configuring, setting up, or using Hermes Agent "
Expand Down Expand Up @@ -585,7 +591,7 @@ def _strip_yaml_frontmatter(content: str) -> str:
"brief and natural."
),
"webui": (
"You are in the Hermes WebUI, a browser-based chat interface. "
"You are in the Kora WebUI, a browser-based chat interface. "
"Full Markdown rendering is supported — headings, bold, italic, code "
"blocks, tables, math (LaTeX), and Mermaid diagrams all render natively. "
"To display local or remote media/files inline, include "
Expand Down
Loading