Skip to content

Innei/kagura

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

102 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎭 Kagura

Every thread a stage, every response a dance

Node version TypeScript pnpm

In Japanese mythology, Ame-no-Uzume performed a divine dance before the closed doors of Amano-Iwato — the heavenly rock cave where Amaterasu had hidden herself, plunging the world into darkness. Her dance, accompanied by music and laughter, drew the sun goddess back into the world. This was the first kagura (神楽) — "the entertainment of the gods."

Kagura brings that spirit to Slack. Run Anthropic Claude Agent SDK natively in your workspace — @mention the bot, it routes the session into the right repository, and replies with Slack-native rich text, live progress, and persistent memory.

Why

Running a Claude agent inside Slack requires gluing together thread context, workspace routing, streaming UX, session persistence, and memory — all adapted to Slack's API conventions. kagura handles that full lifecycle via Socket Mode, so you can focus on the agent's behavior.

How it works

@mention / Message Action
  → resolve target repo
  → load thread history (text + files + images)
  → run agent in repo cwd
  → stream progress → post rich-text reply and generated attachments
  → persist session & memory to SQLite

Features

Conversation — Thread-aware multimodal context (text + files + images), session resumption across restarts, layered memory (global / workspace / preferences).

Slack UX — Rich text rendering (headings, lists, code blocks, auto-splitting), live progress indicators, reaction lifecycle, native assistant typing.

Workspace routing — Each thread binds to a repo/workdir. Auto-detected from message text, or manually chosen via Message Action.

Agent control — Pluggable provider registry, stop via stop/cancel keyword, :octagonal_sign: reaction, or message shortcut, slash commands for introspection (/usage, /workspace, /memory, /session, /version, /provider).

Operations — Auto-provisioned manifest (commands + shortcuts), online-presence heartbeat, Home tab, Zod-validated inputs, secret redaction in logs.

Getting started

git clone https://github.com/Innei/kagura.git
cd kagura
pnpm install
cp .env.example .env # fill in SLACK_BOT_TOKEN, SLACK_APP_TOKEN, SLACK_SIGNING_SECRET, REPO_ROOT_DIR
pnpm dev             # or: pnpm build && pnpm start

See docs/configuration.md for the full environment variable reference, Slack app manifest, token rotation, and Docker deployment.

Documentation

Document Contents
Configuration Environment variables, Slack manifest, token rotation, Docker
Architecture Composition root, agent providers, rendering, workspace routing, memory model, project structure
Slash commands & controls All slash commands, stop controls, reaction lifecycle
Live E2E testing E2E setup, environment, running scenarios
Specs Detailed subsystem specifications

Scripts

Command Description
pnpm dev Run with nodemon + tsx
pnpm build Compile TypeScript
pnpm test Run Vitest test suite
pnpm start Run compiled output
pnpm typecheck Type-check without emitting
pnpm e2e Run all live Slack E2E cases
pnpm e2e -- <id> Run a specific scenario by id
pnpm e2e -- --interactive Interactive scenario picker
pnpm e2e -- --list List all discovered scenarios
pnpm e2e -- --search <term> Search/filter by keyword
pnpm db:generate Generate Drizzle migrations
pnpm db:migrate Apply migrations
pnpm db:studio Open Drizzle Studio

License

MIT © Innei, Released under the MIT License.

Personal Website · GitHub @Innei

About

A divine dance of AI in Slack — Kagura runs Claude Agent SDK natively in your workspace with thread-aware context, streaming UX, and persistent memory.

Topics

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Contributors

Languages