Skip to content

krafton-ai/KIRA

Repository files navigation

πŸ€– KIRA - AI Virtual Coworker

Python Node.js Electron Platform License

24/7 AI agent powered by Claude, running entirely on your desktop

No server setup. No cloud required. Just install the app and start working.


πŸ“– Documentation

πŸ‘‰ User Guide - Complete setup and usage guide


πŸ’‘ What is KIRA?

KIRA = KRAFTON INTELLIGENCE ROOKIE AGENT

KIRA is an open-source project that repackages KRIS (KRAFTON Intelligence System)β€”an AI agent system successfully used internally at KRAFTONβ€”into a "virtual coworker" concept that anyone can install and use as a standalone desktop application.

🎬 Demo

Search + PPTX GitRepo + PDF Web + Wiki
Search+PPTX_cut.mp4
GitRepo+PDF_cut.mp4
WebInterface+Wiki_cut.mp4
Proactive + Thread Email + Schedule Proactive + Translate
Proactive+BotInThread_cut.mp4
Outlook+Schedule_cut.mp4
Proactive+TranslateFile_cut.mp4

KIRA is an AI virtual coworker that runs as a desktop application. Once installed:

  • πŸ€– Chat in Slack: Natural conversations in DMs, channels, and threads
  • πŸ“§ Email Monitoring: Auto-extract tasks from Outlook emails
  • πŸ“ Document Tracking: Monitor Confluence and Jira updates
  • 🧠 Memory System: Automatically remembers conversations and project context
  • πŸ”’ Privacy First: All data and memory stored locally β€” no third-party services involved
    • Your conversation history, memory files, and settings are stored only on your machine
    • KIRA communicates directly with Anthropic's Claude API using your own API key
    • Unlike third-party AI services, no intermediary stores or accesses your data
    • We do not collect, store, or process any user data β€” see Data Privacy Disclaimer
  • πŸ”‘ Bring Your Own API Key: Transparent, pay-as-you-go costs with your own Claude API key β€” no subscriptions or hidden fees

Two Usage Modes

πŸ€– Bot Mode

  • Install on your computer
  • Use your own Slack account or bot app
  • Personal AI assistant that you manage
  • Stops when your computer is off

πŸ‘€ Virtual Coworker Mode

  • Install on a dedicated computer (or VM/server)
  • Create a dedicated Slack account for the AI (e.g., "KIRA Kim")
  • Runs 24/7 independently as a real team member
  • Shared by the entire team

πŸ’‘ KRAFTON Use Case: KRAFTON provides a dedicated company account and computer to run KIRA as a virtual coworker, just like onboarding a new hire.


πŸš€ Quick Start

1. Prerequisites

  • macOS 10.15 or later / Windows 11 or later
  • Slack workspace (admin access required)
  • Claude API key (Google Cloud Vertex AI)

2. Download and Install

Download the latest release:

https://kira.krafton-ai.com

Or build from source:

# Clone repository
git clone https://github.com/krafton-ai/kira.git
cd kira

# Install Python dependencies
uv sync

# Build Electron app
cd electron-app
npm install
npm run build

# Install the generated .dmg file
open dist/KIRA-*.dmg

3. Create Slack App

Follow the detailed guide: Slack App Setup

4. Configure KIRA

  1. Launch KIRA app
  2. Enter Slack tokens in Settings
  3. Configure bot information
  4. Click "Save Settings" and "Start"

5. Test in Slack

@KIRA Hello!

πŸŽ‰ Done! You can now chat with KIRA.


πŸ“ Project Structure

kira/
β”œβ”€β”€ app/                   # Python AI server
β”‚   β”œβ”€β”€ main.py           # Server entry point
β”‚   β”œβ”€β”€ cc_agents/        # AI agent modules
β”‚   β”œβ”€β”€ cc_checkers/      # Proactive monitors (email, docs)
β”‚   β”œβ”€β”€ cc_tools/         # MCP tool implementations
β”‚   β”œβ”€β”€ cc_web_interface/ # Web interface (voice input)
β”‚   └── config/           # Configuration files
β”‚
β”œβ”€β”€ electron-app/         # Electron desktop app
β”‚   β”œβ”€β”€ main.js          # Electron main process
β”‚   β”œβ”€β”€ renderer/        # UI (settings, logs)
β”‚   └── dist/            # Build output (.dmg)
β”‚
β”œβ”€β”€ vitepress-app/       # Documentation site
β”‚   β”œβ”€β”€ index.md         # Homepage
β”‚   β”œβ”€β”€ getting-started.md
β”‚   β”œβ”€β”€ setup/           # Setup guides
β”‚   └── features/        # Features guide
β”‚
└── README.md            # This file

🧠 Agent Architecture

KIRA uses a multi-agent pipeline where each agent has a specific role. This design enables cost optimization (simple tasks use lighter models) and clear separation of concerns.

Message Processing Pipeline

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  SLACK MESSAGE RECEIVED                                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  DEBOUNCING (2 sec)                                         β”‚
β”‚  - Merge consecutive messages from same user                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  BOT CALL DETECTOR (Haiku)                                  β”‚
β”‚  - Determine if message requires bot response               β”‚
β”‚  - DM: Always respond                                       β”‚
β”‚  - Channel: Only when mentioned                             β”‚
β”‚  - Thread: Additional context analysis                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 ↓                              ↓
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚  SIMPLE CHAT       β”‚         β”‚  OPERATOR              β”‚
    β”‚  (Haiku, no MCP)   β”‚         β”‚  (Opus, full MCP)      β”‚
    β”‚  - Quick responses β”‚         β”‚  - Complex tasks       β”‚
    β”‚  - Casual chat     β”‚         β”‚  - Tool execution      β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              ↓                              ↓
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                             ↓
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚  MEMORY MANAGER (Sonnet)       β”‚
              β”‚  - Save conversation context   β”‚
              β”‚  - Organize into categories    β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Agent Inventory

Agent Model MCP Purpose
Bot Call Detector Haiku ❌ Determine if bot should respond
Thread Context Detector Haiku ❌ Analyze thread context for relevance
Simple Chat Haiku ❌ Handle casual conversations quickly
Memory Retriever Haiku βœ… Search relevant memories before responding
Operator Opus βœ… Execute complex tasks with MCP tools
Memory Manager Sonnet βœ… Save and organize conversation memories
Answer Aggregator Sonnet βœ… Collect and process pending answers
Proactive Suggester Sonnet βœ… Generate proactive task suggestions
Proactive Confirm Haiku βœ… Request user approval for suggestions

3-Tier Queue System

KIRA uses a hierarchical queue system to handle concurrent messages efficiently:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  CHANNEL QUEUES (per-channel)                               β”‚
β”‚  - 8 workers per channel                                    β”‚
β”‚  - Fast response for simple messages                        β”‚
β”‚  - Independent processing per channel                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  ORCHESTRATOR QUEUE (global)                                β”‚
β”‚  - 3 workers                                                β”‚
β”‚  - Heavy tasks requiring MCP tools                          β”‚
β”‚  - Prevents API rate limiting                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  MEMORY QUEUE (global)                                      β”‚
β”‚  - 1 worker (sequential)                                    β”‚
β”‚  - Ensures consistent file system writes                    β”‚
β”‚  - Prevents race conditions in memory storage               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Why this design?

  • Channel Queues: Users in different channels get fast responses without blocking each other
  • Orchestrator Queue: Limits concurrent heavy tasks to prevent excessive CPU/memory usage
  • Memory Queue: Single worker ensures no conflicts when writing to local memory files

🎯 Key Features

Core Features

  • Chat: Natural conversations in Slack DMs, channels, and threads
  • Task Execution: Search, document writing, email management, Jira/GitLab integration
  • Memory System: Auto-remembers team info and project context
  • Task Scheduling: Execute tasks at specific times

Proactive Monitors (Beta)

  • Email Monitoring: Auto-check Outlook emails (5min interval)
  • Confluence Tracking: Document update notifications (1hr interval)
  • Jira Tracking: Monitor assigned issues (30min interval)

Proactive Suggestions (Beta)

  • Analyzes memory and proactively suggests needed tasks
  • 7 intervention patterns (research, scheduling, documentation, drafting, connecting, predicting, routine)

MCP Integrations

  • Perplexity (web search)
  • DeepL (translation)
  • Outlook (email)
  • Confluence & Jira (Rovo MCP)
  • GitLab (code repository)
  • X (Twitter)
  • Clova Speech (transcription, meeting notes)
  • Playwright (browser automation)

πŸ› οΈ Development

Running Development Server

# Python server (hot reload)
uv run python dev.py

# Electron app (separate terminal)
cd electron-app
npm start

Building

# Build macOS installer
cd electron-app
npm run build

# Output: electron-app/dist/KIRA-*.dmg

Documentation Site

# Run docs dev server
cd vitepress-app
npm install
npm run docs:dev

# Deploy to S3
npm run deploy

πŸ’Ύ Data Storage

App Settings

~/.kira/
β”œβ”€β”€ config.env          # Environment variables
└── server.log          # Server logs

Data and Memory

~/Documents/KIRA/       # FILESYSTEM_BASE_DIR
β”œβ”€β”€ db/                 # SQLite databases
β”‚   β”œβ”€β”€ waiting_answer.db
β”‚   β”œβ”€β”€ confirm.db
β”‚   β”œβ”€β”€ email_tasks.db
β”‚   └── jira_tasks.db
└── memories/           # Memory (Markdown files)
    β”œβ”€β”€ channels/
    β”œβ”€β”€ projects/
    β”œβ”€β”€ users/
    β”œβ”€β”€ decisions/
    └── index.md

πŸ” Security

  • βœ… All memory, logs, and settings stored locally on your machine
  • βœ… Direct communication with Claude API β€” no intermediary services
  • βœ… External connections only to Claude API and MCP servers you enable

πŸ“– Detailed Documentation

For complete setup and usage guides, visit KIRA Documentation


🀝 Contributing

Contributions are welcome!

  1. Fork the repository
  2. Create your feature branch
  3. Commit your changes
  4. Push to the branch
  5. Open a Pull Request

πŸ“„ License

Apache License 2.0 - See LICENSE for details.


⚠️ Data Privacy & Liability Disclaimer

KIRA is a privacy-first AI agent. All memory, logs, and settings are stored on your device. Prompts are sent to Anthropic's Claude API using your own API key β€” no intermediary services are involved.

How Your Data Flows

Data Type Where It Goes
Conversation memory, settings, logs Your machine only
Prompts and queries Anthropic Claude API (via your API key)
Usage history, analytics Nowhere β€” we don't collect anything

Unlike third-party AI tools built on LLM providers, KIRA doesn't add another layer that stores your data. Your information goes to one place (Anthropic), not two.

1. No Data Collection

KRAFTON does NOT collect, store, or process any user data. All data and memory are stored locally on your computer and under your sole control.

2. User Responsibility

You are responsible for managing your own Claude API key and usage, including any usage fees and security.

3. Third-Party Integration

KRAFTON is not responsible or liable for any data processed through, or any actions taken by, third-party services (e.g., Slack, Outlook, Confluence, Jira, GitLab, Anthropic Claude API) that you choose to integrate with KIRA. By using KIRA, you agree to comply with all applicable third-party terms, including Anthropic's Claude API Terms of Service.

4. No Warranty

This software is provided "AS IS", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and non-infringement. In no event shall KRAFTON or any contributor be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.


ℒ️ Trademark Policy

The names KRAFTON, KIRA, and associated logos are trademarks of KRAFTON, Inc. Permission to use these trademarks is not granted by the open-source license and requires separate written permission.


πŸ“š Third-Party Libraries

KIRA incorporates open-source libraries under MIT, Apache-2.0, BSD, ISC, MPL-2.0, and other compatible licenses. For a complete list of dependencies and their licenses, please refer to the THIRD-PARTY-NOTICES.md file.


πŸ™ Acknowledgments


Made with ❀️ by KRAFTON AI

Star History

Star History Chart