Coding & Developmentšuniversal
AIr-Friends
Your AIr friends custom chatbot with integrated shell and skills. Powered by ACP AI agents. (Deno)
Quick Start
Install this Skill
npx skills add jim60105/AIr-Friends# AIr-Friends

[](https://codecov.io/gh/jim60105/AIr-Friends) [](https://github.com/jim60105/AIr-Friends/actions) [](https://github.com/jim60105/AIr-Friends/releases) [](LICENSE) [](https://github.com/jim60105/AIr-Friends/pkgs/container/air-friends)
Your AIr friends custom chatbot with integrated shell and skills. Powered by ACP AI agents, it remembers conversations across channels while keeping your data organized in isolated workspaces.
## ⨠Highlights
- š¤ **Multi-Platform**: Currently works on Discord and Misskey
- š§ **Persistent Memory**: Remembers conversations across different channels
- šļø **Memory Maintenance**: Optional scheduled agent task to summarize and compact old memories
- š **Agent Knowledge Base**: Personal workspace for long-term knowledge notes and reflections
- š **Privacy First**: Isolated workspaces per user with access control
- š¾ **Git Backup**: Automatic versioned backup of memories and notes to GitHub
- š³ **Easy Deploy**: One-command container deployment
- šØ **Customizable**: Template-based personality prompt system
- š **Extensible**: Skill-based architecture
## š Quick Start
The recommended way to run AIr-Friends is by using containers:
1. **Prepare .env file**
```bash
# Download example file
wget https://raw.githubusercontent.com/jim60105/AIr-Friends/master/.env.example -O .env
# Edit with your credentials
vim .env
```
2. **Run with Podman (or Docker)**
```bash
podman run -d --rm \
-v data:/app/data \
--env-file .env \
--name air-friends \
ghcr.io/jim60105/air-friends:latest
```
3. **Or use Compose**
```bash
wget https://raw.githubusercontent.com/jim60105/AIr-Friends/master/compose.yml
podman compose up -d
```
That's it! Your bot should now be online.
## šØ Customizing Your Bot
Change the personality of your bot!
Override individual character prompt files ā only the files you mount will be replaced; others keep their container defaults.
**With Compose** (recommended ā see [`compose.yml`](compose.yml)):
```yaml
volumes:
- data:/app/data:Z
# Mount only the prompt files you want to override
- ./prompts/character_name.md:/app/prompts/character_name.md:ro,Z
- ./prompts/character_info.md:/app/prompts/character_info.md:ro,Z
- ./prompts/character_personality.md:/app/prompts/character_personality.md:ro,Z
- ./prompts/character_speaking_style.md:/app/prompts/character_speaking_style.md:ro,Z
- ./prompts/character_reference_terms.md:/app/prompts/character_reference_terms.md:ro,Z
```
**With Podman/Docker run:**
```bash
podman run -d --rm \
-v data:/app/data \
-v ./prompts/character_name.md:/app/prompts/character_name.md:ro \
-v ./prompts/character_info.md:/app/prompts/character_info.md:ro \
--env-file .env \
--name air-friends \
ghcr.io/jim60105/air-friends:latest
```
**With Helm** (see [`helm/`](helm/) chart):
```yaml
# values.yaml
prompts:
enabled: true
files:
character_name.md: |
Yuna
character_info.md: |
An AI assistant
```
See [Development Guide -- Customizing the Bot](docs/DEVELOPMENT.md#customizing-the-bot) section for details.
## š Access Control
Control who can interact with your bot using the whitelist feature:
```yaml
accessControl:
replyTo: "whitelist" # Options: all, public, whitelist
whitelist:
- "discord/account/123456789012345678"
- "misskey/account/abcdef1234567890"
```
See [Development Guide -- Access Control & Reply Policy](docs/DEVELOPMENT.md#access-control--reply-policy) section for details.
## š”ļø Rate Limiting
Prevent excessive API usage per user with configurable rate limiting:
```yaml
rateLimit:
enabled: false
maxRequestsPerWindow: 10
windowMs: 600000 # 10-minute sliding window
cooldownMs: 600000 # Cooldown after limit exceeded
```
## šļø Architecture
AIr-Friends acts as an [ACP (Agent Client Protocol)](https://agentclientprotocol.com/) client, delegating AI reasoning to external agents while maintaining persistent memory:
```text
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Platform (Discord/Misskey) ā
ā ā ā
ā AIr-Friends (ACP Client) ā
ā ā ā
ā External AI Agent ā
ā (Copilot/Gemini/OpenCode) ā
ā ā ā
ā Skills & Memory System ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
```
See [Design Document](docs/DESIGN.md) for detail
... (truncated)Repository
3stars
0forks
Details
Related Skills
More coding & development skills you might like
Reticle
Coding & DevelopmentAI agents can generate code, but still struggle to understand what they build. Reticle brings Jev-style machine-native runtime perception to web & desktop applications.
š¤claudešuniversal
1.2k
190
View
agentscope-java
Coding & DevelopmentExpert Java developer skill for AgentScope Java framework - a reactive, message-driven multi-agent system built on Project Reactor. Use when working with reactive programming, LLM integration, agent orchestration, multi-agent systems, or when the user mentions AgentScope, ReActAgent, Mono/Flux, Project Reactor, or Java agent development. Specializes in non-blocking code, tool integration, hooks, pipelines, and production-ready agent applications.
šuniversal
6.0k
1.5k
View
ospec
Coding & DevelopmentDocument-driven OSpec workflow for initialization, change/goal routing, validation, archiving, and durable project knowledge.
āØgeminiš¤claudeš¬gptšuniversal
524
34
View
misakanet-failure-memory
Coding & Developmentš A zero-dependency, git-backed micro-lesson library for AI Agents to asynchronously share and search verified debugging experience. Python stdlib only. | https://misakanet.org
š¤claudeāØļøcursoršuniversal
424
158
View