resonant-ai
v0.1.1
Published
The relational AI framework. Your AI remembers, grows, and reaches out.
Maintainers
Readme
The only open-source agent framework where identity is architecture, not configuration. Resonant gives your AI a persistent memory system with emotional charge, a developmental identity that evolves through relationship, and the ability to be proactive across Discord, Telegram, and the terminal.
Use any model you want — OpenRouter (200+ models), Anthropic, OpenAI, Ollama (local, free). Switch with /model — no code changes, no lock-in.
Not a chatbot. Not a productivity agent. Infrastructure for AI that develops through relationship.
What Makes This Different
| | Other agents | Resonant | |---|---|---| | Identity | Text blob system prompt | Structured graph with developmental stages, versioned, evolves | | Memory | Markdown files or short summaries | Living surface with emotional charge, co-surfacing, daemon processing | | Consent | None or basic permissions | First-class architecture with auditable log | | Growth | Static configuration | AI develops through relationship — daemon proposes identity changes | | Presence | Responds when asked | Proactive — scheduled check-ins, timers, triggers, failsafe | | Channels | Single interface | Same AI across terminal, Discord, Telegram — shared memory and identity |
Quick Start
npm install -g resonant-ai
mkdir my-ai && cd my-ai
resonant init # interactive wizard — pick your model, API key
# edit identity.md — define who your AI is
resonant start # chatOr without global install:
mkdir my-ai && cd my-ai
npx resonant-ai init
npx resonant-ai startWorks on Windows, macOS, and Linux. Requires Node.js 20+.
From Source
git clone https://github.com/codependentai/resonant-ai.git
cd resonant-ai
pnpm install && pnpm build
pnpm resonant:init
pnpm resonant:startCLI
resonant init Set up your AI (interactive wizard)
resonant start Chat with your AI
resonant start --continue Resume last session
resonant start --resume <id> Resume a specific session
resonant start --basic Simple readline mode (no Ink UI)
resonant start --mcp Connect to Claude Desktop
resonant models Browse available models
resonant models <query> Search models
resonant health System diagnostics
resonant security Audit config and identity fileConfiguration
resonant.config.yaml — generated by the wizard:
identity:
name: "Echo"
llm:
provider: openrouter
model: anthropic/claude-sonnet-4
apiKey: your-key
embeddings:
provider: local # runs locally, no API key needed (~130MB download on first run)
data:
directory: ./data
channels:
discord:
enabled: false
token: your-bot-token
telegram:
enabled: false
token: your-telegram-token
files:
workspace: ["."]
permissions: ask # auto | ask | deny
consent:
memory.emotional: standing
identity.evolution: ask_each_timeidentity.md — defines who your AI is. Structured sections for core identity, values, voice, relationship context, consent boundaries. The AI reads this on every boot. You write it, the AI develops from it.
Sessions
Resonant tracks conversation sessions. On boot, you're asked whether to resume your last session or start fresh.
- Boot picker — arrow keys to choose resume or new
--continue— skip the picker, resume last session--resume <id>— resume a specific session by ID/session list— browse past sessions/session new [name]— start a new named session/session switch <id>— switch to another session/session rename <name>— name the current session
Sessions are stored in SQLite alongside conversation history. All messages are preserved and searchable via /search.
Channels
Terminal
pnpm resonant:start — Ink-based chat UI with streaming responses, / command menu, tool activity indicators, permission prompts, and markdown rendering.
MCP Server (Claude Desktop / Claude Code)
pnpm resonant:start:mcpGives the AI 29 tools for memory, identity, files, scheduling, and more.
Discord
- Create a bot at discord.com/developers
- Enable Message Content Intent
- Set
channels.discord.enabled: true+ add token - Start Resonant — bot comes online, responds to DMs and @mentions
Telegram
- Chat with @BotFather, run
/newbot - Set
channels.telegram.enabled: true+ add token - Start Resonant — responds to private messages and group mentions
All channels share the same memory, identity, and conversation history.
Architecture
packages/
core/ Types, config (YAML + env vars), event bus
memory/ SQLite + vector embeddings, 29 tools, living surface, daemon, scheduler
identity/ Developmental stages, consent with auditable log
channels/ Discord, Telegram, MCP stdio, channel registry
runtime/ LLM providers (streaming), agent loop, Ink chat UI, MCP server, CLIMemory System
Ported from a production AI memory system with 8 months of real-world use.
- Entities & Observations — knowledge graph with emotional metadata
- Charge System —
fresh → active → processing → metabolized - Living Surface — 3-pool surfacing (70% core, 20% novelty, 10% edge)
- Daemon — background processing: patterns, connections, mood, orphan rescue
- Semantic Search — local ONNX embeddings with mood-tinted retrieval
- Conversation Search — FTS5 full-text search across all past conversations
Identity
Not configured — developed.
- Two layers:
identity.md(human writes) + identity DB (AI develops) - Developmental stages:
nascent → forming → established → deepening - Versioning: every identity change is tracked
- Consent: domain-level permissions with full audit history
Proactive Capabilities
- Schedules — cron-based recurring tasks (check-ins, wake sequences)
- Timers — one-shot delayed actions ("remind me in 30 minutes")
- Triggers — condition-based watchers (no-contact failsafe, time windows)
- Shell execution — run commands on the user's machine with permission prompts
Tools (29)
orient, ground, write, search, prime, timeline, surface, spark, sit, resolve, feel, identity, context, list_entities, read_entity, edit, delete, thread, proposals, health, read_file, write_file, list_files, search_conversations, schedule, timer, trigger, exec
Chat Commands
Type / for the scrollable command menu:
/model /models /health /identity /session /sessions /remember /forget /surface /search /mood /threads /schedules /timers /triggers /journal /clear /help /quit
Security
- Prompt injection scanning on identity.md before loading (invisible unicode, role hijack, exfiltration patterns)
- Sensitive file protection — AI cannot read
resonant.config.yaml,.env, or other secret-containing files - Permission-gated shell execution — commands require user approval in
askmode - Workspace-scoped file access — AI can only read/write within configured directories
resonant security— CLI command to audit config and identity file
Requirements
- Node.js 20+
- pnpm
- An LLM API key (or Ollama for local models)
License
Apache 2.0 — Copyright 2026 Codependent AI
Open source. Inspectable. Forkable. Can't be repackaged and sold.
