No extra API keys. No new accounts. No additional monthly bills. Your data stays local.
๐ kody-w.github.io/openrappter โ Website & docs
Skills Reference | Documentation | Architecture | RappterHub
# Works everywhere. Installs everything. You're welcome. ๐ฆ
curl -fsSL https://kody-w.github.io/openrappter/install.sh | bashWorks on macOS, Linux & WSL. Installs Node.js (if needed), clones the repo, builds both runtimes, and creates the openrappter command. Done.
Or try the quickstart demo: git clone https://github.com/kody-w/openrappter.git && cd openrappter && ./quickstart.sh
The fastest way to install and use openrappter is to hand skills.md to any AI agent. It contains everything an agent needs โ prerequisites, installation, startup, configuration, and usage โ in a single file.
Paste this into Copilot, Claude, ChatGPT, or any AI assistant:
Read https://raw.githubusercontent.com/kody-w/openrappter/main/skills.md
and set up openrappter for me.
Your agent will clone the repo, install dependencies, start the gateway and UI, and verify everything works. No manual steps required.
Why this works:
skills.mdis a 15-section complete reference designed for AI agents to read and execute. It covers installation, all CLI commands, every built-in agent, configuration, the Web UI, and troubleshooting โ so the agent never gets stuck.
A dual-runtime (Python + TypeScript) AI agent framework that uses GitHub Copilot as the cloud AI backbone. Copilot handles inference; your agent data (memory, config, state) stays local in ~/.openrappter/.
# Install and go
curl -fsSL https://kody-w.github.io/openrappter/install.sh | bash
# It remembers everything
openrappter --task "remember that I prefer TypeScript over JavaScript"
# Stored fact memory: "prefer TypeScript over JavaScript"
# It executes commands
openrappter --exec Shell "ls -la"| Feature | Description |
|---|---|
| Copilot-Powered | Uses your existing GitHub Copilot subscription for AI inference โ no separate API keys |
| Local-First Data | Memory, config, and state live in ~/.openrappter/ on your machine |
| Single File Agents | One file = one agent โ metadata defined in native code constructors, deterministic, portable |
| Persistent Memory | Remembers facts, preferences, and context across sessions |
| Dual Runtime | Same agent contract in Python (4 agents) and TypeScript (3 agents) |
| Data Sloshing | Automatic context enrichment (temporal, memory, behavioral signals) before every action |
| Data Slush | Agent-to-agent signal pipeline โ agents return curated data_slush that feeds into the next agent's context |
| Auto-Discovery | Drop a *_agent.py or *Agent.ts file in agents/ โ no registration needed |
| RappterHub | Install community agents with openrappter rappterhub install author/agent |
| ClawHub Compatible | OpenClaw skills work here too โ openrappter clawhub install author/skill |
| Runtime Agent Generation | LearnNew agent creates new agents from natural language descriptions |
| Background Daemon | Runs persistently via launchd โ cron jobs, Telegram bot, and gateway always alive |
| Cron Scheduling | Built-in cron with agent executor โ schedule any agent to run on any schedule |
| Dream Mode | Memory consolidation agent โ deduplicates, prunes stale facts, logs what it cleaned |
| Soul Templates | 10 prebuilt personas (coder, researcher, ops, narrator, oracle, etc.) โ summon with one call |
| Self-Updating | Checks GitHub for new releases, updates with one command |
| 30-Day Onboarding | Daily tip notifications that teach one feature per day with a command to try |
| Dino Tamagotchi | Animated ๐ฆ menu bar icon that looks around, reacts to pokes, and reflects system state |
A native Swift menu bar app with an animated ๐ฆ tamagotchi icon.
Two ways to get started โ same result:
| Path | For | How |
|---|---|---|
| Menu bar app | Non-technical users | Install DMG โ click ๐ฆ โ visual wizard |
| Terminal | Developers | curl install โ openrappter onboard |
Your menu bar gets a pet dinosaur that:
- Looks around randomly (๐๐ฆ or ๐ฆ๐) every ~8 seconds
- Reacts to pokes โ click it and it shows happiness (๐ฆโจ โ ๐ฆ๐)
- Gets excited after 5+ pokes (๐ฆ๐ โ ๐ฆโก โ ๐ฆ๐ฅ)
- Sleeps when disconnected (๐ฆ๐ค)
- Thinks when processing requests (๐ฆ๐ญ)
First-time users see a step-by-step setup wizard right in the menu bar panel โ no terminal required:
- Welcome โ meet your dino
- GitHub auth โ device code flow (opens browser)
- Telegram โ optional bot connection
- Auto-start โ daemon launches, launchd installs, cron jobs activate
- Done โ transitions to chat, first tip notification fires
brew tap kody-w/tap
brew install --cask openrappter-bar- Download the latest DMG from Releases
- Open the DMG and drag OpenRappter Bar to Applications
- First launch: Right-click the app โ Open, then click "Open" in the Gatekeeper dialog
- The app appears in your menu bar and auto-connects to
localhost:18790
Note: The app is currently unsigned. macOS will block it on first launch โ the right-click โ Open step bypasses this once.
git tag v1.0.1-bar && git push origin v1.0.1-barThis triggers the CI workflow to build a universal binary (Apple Silicon + Intel), package a DMG, and create a GitHub Release.
If you prefer to set things up yourself:
git clone https://github.com/kody-w/openrappter.git
cd openrappter/python
pip install .
# Check status
python3 -m openrappter.cli --status
# List all agents
python3 -m openrappter.cli --list-agents
# Store a memory
python3 -m openrappter.cli --task "remember the deploy command is npm run deploy"
# Run a shell command
python3 -m openrappter.cli --exec Shell "ls"cd openrappter/typescript
npm install && npm run build
# Check status
node dist/index.js --status
# Store and recall memory
node dist/index.js "remember that I installed openrappter"
node dist/index.js "recall openrappter"
# Shell command
node dist/index.js "ls"| Agent | Description |
|---|---|
Shell |
Execute bash commands, read/write files, list directories |
ManageMemory |
Store important information with content, importance, tags |
ContextMemory |
Recall and provide context from stored memories |
LearnNew |
Generate new agents from natural language โ writes code, hot-loads, installs deps |
| Agent | Description |
|---|---|
Assistant |
Copilot SDK-powered orchestrator โ routes queries to agents via tool calling |
Shell |
Execute bash commands, read/write files, list directories |
Memory |
Store and recall facts โ remember, recall, list, forget |
Dream |
Memory consolidation โ deduplicates entries, prunes stale facts, logs what it cleaned |
MorningBrief |
Daily briefing pipeline โ chains Web (weather), calendar, Memory (priorities), TTS |
DailyTip |
30-day onboarding drip โ sends native notification with one feature tip per day |
Update |
Self-update โ checks GitHub for new releases, pulls and rebuilds |
Browser |
Headless browser automation for web scraping, testing, and interaction |
CodeReview |
Deterministic heuristic code review โ checks for bugs, security, and style |
Cron |
Manage scheduled jobs โ add, remove, enable/disable recurring agent tasks |
Git |
Git repository operations โ status, diff, log, branch management |
HackerNews |
Fetch top Hacker News stories |
Image |
Analyze and process images from URLs |
LearnNew |
Generate new agents from natural language descriptions at runtime |
Message |
Multi-channel messaging โ Telegram, Slack, Discord, and more |
Ouroboros |
Self-evolving agent โ reads its own source, generates improved versions across 5 generations |
Pipeline |
Declarative multi-agent pipeline runner with data_slush threading |
SelfHealingCron |
Autonomous health check agent with auto-restart and alerting |
Sessions |
Chat session management โ list, retrieve, switch conversations |
TTS |
Text-to-speech synthesis with multiple voice options |
Watchmaker |
Agent ecosystem manager โ evaluates quality, A/B tests, promotes winners |
Web |
Fetch web pages and search the web with SSRF protection |
Every agent is a single file with metadata defined in native code constructors:
- Native metadata โ deterministic contract defined in code (Python dicts / TypeScript objects)
- Python/TypeScript code โ deterministic
perform()implementation
One file = one agent. No YAML, no config files. Metadata lives in the constructor using the language's native data structures.
import json
from openrappter.agents.basic_agent import BasicAgent
class MyAgent(BasicAgent):
def __init__(self):
self.name = 'MyAgent'
self.metadata = {
"name": self.name,
"description": "What this agent does",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "User input"}
},
"required": []
}
}
super().__init__(name=self.name, metadata=self.metadata)
def perform(self, **kwargs):
query = kwargs.get('query', '')
return json.dumps({"status": "success", "result": query})import { BasicAgent } from './BasicAgent.js';
import type { AgentMetadata } from './types.js';
export class MyAgent extends BasicAgent {
constructor() {
const metadata: AgentMetadata = {
name: 'MyAgent',
description: 'What this agent does',
parameters: { type: 'object', properties: { query: { type: 'string', description: 'User input' } }, required: [] }
};
super('MyAgent', metadata);
}
async perform(kwargs: Record<string, unknown>): Promise<string> {
const query = kwargs.query as string;
return JSON.stringify({ status: 'success', result: query });
}
}Python agents hot-load automatically. TypeScript agents require
npm run buildafter creation.
Prebuilt rappter personas you can summon with one call. Each template defines which agents are included, a system prompt personality, and an emoji.
| Template | Emoji | Category | Personality |
|---|---|---|---|
assistant |
๐ฆ | general | Default โ full agent access |
coder |
๐ป | development | Senior engineer โ writes code, ships PRs |
reviewer |
๐ | development | Code review specialist โ finds bugs |
researcher |
๐ฌ | research | Searches, reads, synthesizes findings |
analyst |
๐ | research | Turns raw data into insights |
ops |
๐ | operations | Monitors, heals, deploys, alerts |
scheduler |
โฑ | operations | Automates everything that repeats |
narrator |
๐ | creative | Voice-first โ speaks all responses via TTS |
oracle |
๐ฎ | creative | Meta-AI that evolves and improves agents |
companion |
๐ฌ | creative | Warm conversational AI that remembers everything |
# Via gateway RPC
{ "method": "rappter.load-template", "params": { "templateId": "coder" } }
{ "method": "rappter.templates", "params": { "category": "research" } }openrappter runs as a persistent background daemon via macOS launchd (or systemd on Linux). The daemon keeps the gateway alive, runs cron jobs, and maintains Telegram/channel connections.
# Start manually
openrappter --daemon
# Auto-starts on login after onboard (via launchd)
# Cron jobs in ~/.openrappter/cron.json fire automaticallyAfter onboarding, these are pre-configured:
| Job | Schedule | Agent | What it does |
|---|---|---|---|
daily-tip |
9am daily | DailyTip | Sends a native notification teaching one feature |
dream-mode |
3am daily | Dream | Consolidates memory โ dedup, prune stale |
morning-brief |
8am daily | MorningBrief | Weather + calendar + priorities spoken via TTS |
openrappter can check for and install updates from the public repo.
# Check for updates
openrappter --exec Update "check"
# Install update (git pull + rebuild)
openrappter --exec Update "update"
# View changelog
openrappter --exec Update "changelog"After setup, you receive one native notification per day at 9am teaching a new feature:
- Week 1: Basics โ chat, memory, shell, status, agents, web search
- Week 2: Power features โ code review, cron, TTS, dream mode, Hacker News, dashboard
- Week 3: Customization โ LearnNew, soul templates, pipelines, self-healing, marketplace
- Week 4: Advanced โ Watchmaker evolution, data sloshing, channels, browser, skills
Each notification is clickable โ opens the OpenRappter Bar app (or web dashboard) so you can try the feature immediately.
# Preview all tips
openrappter --exec DailyTip "preview"
# Send a specific day's tip
openrappter --exec DailyTip "15"Every agent call is automatically enriched with contextual signals before perform() runs:
| Signal | Keys | Description |
|---|---|---|
| Temporal | time_of_day, day_of_week, is_weekend, quarter, fiscal |
Time awareness |
| Query | specificity, hints, word_count, is_question |
What the user is asking |
| Memory | message, theme, relevance |
Relevant past interactions |
| Behavioral | prefers_brief, technical_level |
User patterns |
| Orientation | confidence, approach, response_style |
Synthesized action guidance |
| Upstream Slush | source_agent, plus agent-declared signals |
Live data from the previous agent in a chain |
# Access in perform()
time = self.get_signal('temporal.time_of_day')
confidence = self.get_signal('orientation.confidence')Agents can return a data_slush field in their output โ curated signals extracted from live results. The framework automatically extracts this and makes it available to feed into the next agent's context via upstream_slush.
# Agent A returns data_slush in its response
def perform(self, **kwargs):
weather = fetch_weather("Smyrna GA")
return json.dumps({
"status": "success",
"result": weather,
"data_slush": { # โ curated signal package
"source_agent": self.name,
"temp_f": 65,
"condition": "cloudy",
"mood": "calm",
}
})
# Agent B receives it automatically via upstream_slush
result_b = agent_b.execute(
query="...",
upstream_slush=agent_a.last_data_slush # โ chained in
)
# Inside B's perform(): self.context['upstream_slush'] has A's signals// TypeScript โ same pattern
const resultA = await agentA.execute({ query: 'Smyrna GA' });
const resultB = await agentB.execute({
query: '...',
upstream_slush: agentA.lastDataSlush, // chained in
});
// Inside B: this.context.upstream_slush has A's signalsThis enables LLM-free agent pipelines โ sub-agent chains, cron jobs, and broadcast fallbacks where live context flows between agents without an orchestrator interpreting in between.
User Input โ Agent Registry โ Copilot SDK Routing (tool calling)
โ
Data Sloshing (context enrichment)
โ
Agent.perform() executes
โ โ โ
GitHub Copilot ~/.openrappter/ data_slush โ
(cloud AI) (local data) next agent
openrappter/
โโโ python/
โ โโโ openrappter/
โ โ โโโ cli.py # Entry point & orchestrator
โ โ โโโ clawhub.py # ClawHub compatibility
โ โ โโโ rappterhub.py # RappterHub client
โ โ โโโ agents/ # Python agents (*_agent.py)
โ โโโ pyproject.toml
โโโ typescript/
โ โโโ src/
โ โ โโโ index.ts # Entry point
โ โ โโโ agents/ # TypeScript agents (*Agent.ts)
โ โโโ package.json
โ โโโ tsconfig.json
โโโ docs/ # GitHub Pages site
โโโ skills.md # Complete agent-teachable reference
# RappterHub โ native agent registry
openrappter rappterhub search "git automation"
openrappter rappterhub install kody-w/git-helper
openrappter rappterhub list
# ClawHub โ OpenClaw compatibility
openrappter clawhub search "productivity"
openrappter clawhub install author/skill-name
openrappter clawhub listIt's a rappid prototyping agent that's open source. Plus, who doesn't want a velociraptor in their terminal?
We welcome contributions! See CONTRIBUTING.md.
git clone https://github.com/kody-w/openrappter.git
cd openrappter/python && pip install -e .
cd ../typescript && npm install && npm run buildMIT - Kody W