# Kagura AI
[](https://pypi.org/project/kagura-ai/)
[](https://pypi.org/project/kagura-ai/)
[](https://pypi.org/project/kagura-ai/)
[](https://codecov.io/gh/JFK/kagura-ai)
[](https://github.com/JFK/kagura-ai/actions)
> **The Python-First AI Agent SDK**
Build production-ready AI agents with one decorator. Full type safety, built-in tools, and comprehensive testing framework.
```bash
pip install kagura-ai[full]
```
---
## ⚡ Quick Start (30 seconds)
```python
from kagura import agent
@agent
async def translator(text: str, lang: str = "ja") -> str:
'''Translate to {{ lang }}: {{ text }}'''
result = await translator("Hello World", lang="ja")
print(result) # "こんにちは世界"
```
That's it. One decorator, type hints, done.
---
## 🎯 Why Kagura AI?
### Built for Python Developers
| What You Need | Other SDKs | Kagura AI |
|---------------|------------|-----------|
| **Simple API** | 50+ lines config | **1 decorator** ✅ |
| **Type Safety** | Runtime errors | **pyright strict** ✅ |
| **Memory System** | Manual setup | **Built-in** ✅ |
| **Web Search** | External plugins | **Built-in** ✅ |
| **Code Execution** | Unsafe | **Sandboxed** ✅ |
| **Testing** | DIY | **Framework included** ✅ |
### Designed for Production
```python
from kagura import agent
from pydantic import BaseModel
class Analysis(BaseModel):
sentiment: str
keywords: list[str]
confidence: float
@agent(enable_memory=True, tools=["web_search"])
async def analyzer(text: str) -> Analysis:
'''Analyze sentiment and extract keywords from: {{ text }}
Use web_search(query) if you need current information.
'''
# Type-safe, memory-enabled, web-connected
result = await analyzer("Latest AI trends")
print(result.sentiment) # IDE autocomplete works!
```
---
## 🚀 Core Features
### 1. One-Line Agent Creation
```python
@agent
async def summarizer(text: str) -> str:
'''Summarize in 3 points: {{ text }}'''
```
### 2. Type-Safe Structured Output
```python
from pydantic import BaseModel
class Report(BaseModel):
summary: str
action_items: list[str]
@agent
async def meeting_analyzer(transcript: str) -> Report:
'''Analyze meeting: {{ transcript }}'''
report = await meeting_analyzer("...")
for item in report.action_items: # Fully typed!
print(f"TODO: {item}")
```
### 3. Built-in Tools
```python
@agent(tools=["web_search", "web_fetch"])
async def researcher(topic: str) -> str:
'''Research {{ topic }} using:
- web_search(query): Brave Search API
- web_fetch(url): Scrape webpage content
'''
```
Built-in tools include: file operations, web search, code execution, YouTube data, and more.
### 4. Memory Management
```python
@agent(enable_memory=True)
async def assistant(message: str) -> str:
'''You remember our conversation.
User says: {{ message }}'''
# Multi-turn conversation with context
await assistant("My favorite color is blue")
await assistant("What's my favorite color?") # Remembers!
```
### 5. Custom Tools
```python
from kagura import tool, agent
@tool
async def search_database(query: str) -> list[dict]:
'''Search internal database'''
return db.query(query)
@agent(tools=[search_database])
async def data_agent(question: str) -> str:
'''Answer using database: {{ question }}'''
```
### 6. Multi-LLM Support
```python
# OpenAI
@agent(model="gpt-4o")
async def translator(text: str) -> str: ...
# Anthropic
@agent(model="claude-3-5-sonnet-20241022")
async def writer(prompt: str) -> str: ...
# Google
@agent(model="gemini/gemini-2.0-flash")
async def analyzer(text: str) -> str: ...
```
100+ models via LiteLLM integration.
---
## 💼 Real-World Use Cases
### SDK Integration Examples
#### Web Application (FastAPI)
```python
from fastapi import FastAPI
from kagura import agent
app = FastAPI()
@agent
async def support_bot(question: str) -> str:
'''Answer customer support question: {{ question }}'''
@app.post("/api/support")
async def handle_support(question: str):
response = await support_bot(question)
return {"answer": response}
```
#### Data Pipeline
```python
from kagura import agent
@agent(tools=["web_search"])
async def data_enricher(company_name: str) -> dict:
'''Enrich company data for: {{ company_name }}
Steps:
1. Search web for company information
2. Extract: industry, size, location, description
3. Return as structured data
'''
# Use in your ETL pipeline
enriched = await data_enricher("Anthropic")
```
#### Automation Script
```python
from kagura import agent, workflow
@agent
async def email_classifier(email: str) -> str:
'''Classify email as: urgent/important/spam
Email: {{ email }}'''
@workflow.chain
async def inbox_automation(emails: list[str]):
for email in emails:
category = await email_classifier(email)
# Route based on category
```
---
## 🎨 Advanced Features
### Multimodal Analysis
```python
@agent
async def image_analyzer(image_path: str, question: str) -> str:
'''Analyze image and answer: {{ question }}
Image: {{ image_path }}'''
result = await image_analyzer("chart.png", "What's the trend?")
# Uses Gemini Vision API automatically
```
### Document RAG
```python
from kagura.core.memory import MemoryRAG
@agent(enable_memory=True)
async def doc_qa(question: str) -> str:
'''Answer based on indexed documents
Use rag_search(query) to find relevant information.
'''
# Index once
rag = MemoryRAG()
await rag.index_directory("./docs")
# Query anytime
answer = await doc_qa("What does Q3 report say about sales?")
```
### Agent Testing
```python
from kagura.testing import AgentTestCase
class TestMyAgent(AgentTestCase):
async def test_translation(self):
result = await translator("Hello", lang="ja")
# Semantic assertions (LLM-powered)
self.assert_semantic_match(
result,
"Japanese greeting"
)
```
### Cost Tracking
```python
from kagura.observability import track_cost
@agent
@track_cost
async def expensive_agent(query: str) -> str:
'''Complex analysis: {{ query }}'''
# Automatic cost tracking
# View with: kagura monitor stats
```
---
## 🎮 Bonus: Interactive Chat
Want to try Kagura without writing code?
```bash
kagura chat
```
You get a Claude Code-like experience with all features built-in:
```
[You] > Read report.pdf and summarize
[AI] > (Analyzes PDF with Gemini Vision)
Key findings:
1. Revenue up 23% YoY
2. New market expansion successful
3. Engineering team doubled
[You] > Search for similar reports
[AI] > (Uses Brave Search, finds relevant content)
[You] > Create a comparison chart
[AI] > (Writes Python code, executes in sandbox, shows chart)
```
All file operations, web search, code execution, and multimodal analysis work automatically.
---
## 📦 Installation
### Basic
```bash
pip install kagura-ai
```
### With All Features (Recommended)
```bash
pip install kagura-ai[full] # Memory + Web + Multimodal + Auth + MCP
```
### Pick What You Need
```bash
pip install kagura-ai[ai] # Memory + Routing + Context Compression
pip install kagura-ai[web] # Web search + Multimodal
pip install kagura-ai[auth] # OAuth2
pip install kagura-ai[mcp] # Claude Desktop integration
```
### Environment Setup
```bash
# At least one LLM API key required
export OPENAI_API_KEY=sk-...
# Optional features
export BRAVE_SEARCH_API_KEY=... # Web search
export GOOGLE_API_KEY=... # Multimodal (Gemini)
```
---
## 📚 Documentation
### For Developers (SDK)
- [API Reference](docs/api/) - All decorators, classes, functions
- [SDK Guide](docs/sdk-guide.md) - @agent, @tool, memory, workflows
- [Examples](./examples/) - 30+ code examples
### For Users (Chat)
- [Chat Guide](docs/chat-guide.md) - Interactive chat features
- [Quick Start](docs/quickstart.md) - Get started in 5 minutes
### Integration
- [MCP Integration](docs/en/guides/claude-code-mcp-setup.md) - Claude Desktop setup
- [Testing Guide](docs/en/tutorials/14-testing.md) - Test your agents
---
## 🏗️ Architecture
Built on proven technologies:
- **LLM**: OpenAI SDK (direct) + LiteLLM (100+ providers)
- **Memory**: ChromaDB (vector storage)
- **Validation**: Pydantic v2
- **Testing**: pytest + custom framework
- **Type Safety**: pyright strict mode
**Quality Metrics**:
- 1,300+ tests (90%+ coverage)
- 100% typed
- Production-ready
---
## 🔧 Development
```bash
# Setup
git clone https://github.com/JFK/kagura-ai.git
cd kagura-ai
uv sync --all-extras
# Test
pytest -n auto
# Type check
pyright src/kagura/
# Lint
ruff check src/
```
See [CONTRIBUTING.md](./CONTRIBUTING.md) for details.
---
## 🗺️ Roadmap
### Recently Released (v2.7.x)
- ✅ Streaming support (90% faster UX)
- ✅ User config system (`kagura init`)
- ✅ Personal tools (news, weather, recipes, events)
- ✅ MCP full integration (15 built-in tools)
- ✅ Context compression (handle 10,000+ messages)
### Coming in v3.0
- 🔄 Documentation refresh (SDK-first)
- 🔄 Enhanced Meta Agent (`/create` in chat)
- 🔄 Cost visibility (`/stats` in chat)
### Future (v3.1+)
- 🔮 Auto-discovery & intent detection
- 🔮 Voice interface
- 🔮 Google Workspace integration
---
## 📄 License
Apache License 2.0 - see [LICENSE](./LICENSE)
---
## 🌸 About the Name
"Kagura (神楽)" is traditional Japanese performing art embodying harmony and creativity - principles at the heart of this SDK.
---
**Built with ❤️ for developers who want type-safe AI**
[GitHub](https://github.com/JFK/kagura-ai) • [PyPI](https://pypi.org/project/kagura-ai/) • [Documentation](https://www.kagura-ai.com/)
Raw data
{
"_id": null,
"home_page": null,
"name": "kagura-ai",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "ai, sdk, agents, llm, type-safe, production-ready, openai, anthropic, gemini, pydantic, async",
"author": null,
"author_email": "JFK <fumikazu.kiyota@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/08/d2/88b55017c2d6a4c6ed3ee8bdc6395e15982835c5e9a0d8c2c349623884cc/kagura-ai-3.0.8.tar.gz",
"platform": null,
"description": "# Kagura AI\n\n[](https://pypi.org/project/kagura-ai/)\n[](https://pypi.org/project/kagura-ai/)\n[](https://pypi.org/project/kagura-ai/)\n[](https://codecov.io/gh/JFK/kagura-ai)\n[](https://github.com/JFK/kagura-ai/actions)\n\n> **The Python-First AI Agent SDK**\n\nBuild production-ready AI agents with one decorator. Full type safety, built-in tools, and comprehensive testing framework.\n\n```bash\npip install kagura-ai[full]\n```\n\n---\n\n## \u26a1 Quick Start (30 seconds)\n\n```python\nfrom kagura import agent\n\n@agent\nasync def translator(text: str, lang: str = \"ja\") -> str:\n '''Translate to {{ lang }}: {{ text }}'''\n\nresult = await translator(\"Hello World\", lang=\"ja\")\nprint(result) # \"\u3053\u3093\u306b\u3061\u306f\u4e16\u754c\"\n```\n\nThat's it. One decorator, type hints, done.\n\n---\n\n## \ud83c\udfaf Why Kagura AI?\n\n### Built for Python Developers\n\n| What You Need | Other SDKs | Kagura AI |\n|---------------|------------|-----------|\n| **Simple API** | 50+ lines config | **1 decorator** \u2705 |\n| **Type Safety** | Runtime errors | **pyright strict** \u2705 |\n| **Memory System** | Manual setup | **Built-in** \u2705 |\n| **Web Search** | External plugins | **Built-in** \u2705 |\n| **Code Execution** | Unsafe | **Sandboxed** \u2705 |\n| **Testing** | DIY | **Framework included** \u2705 |\n\n### Designed for Production\n\n```python\nfrom kagura import agent\nfrom pydantic import BaseModel\n\nclass Analysis(BaseModel):\n sentiment: str\n keywords: list[str]\n confidence: float\n\n@agent(enable_memory=True, tools=[\"web_search\"])\nasync def analyzer(text: str) -> Analysis:\n '''Analyze sentiment and extract keywords from: {{ text }}\n\n Use web_search(query) if you need current information.\n '''\n\n# Type-safe, memory-enabled, web-connected\nresult = await analyzer(\"Latest AI trends\")\nprint(result.sentiment) # IDE autocomplete works!\n```\n\n---\n\n## \ud83d\ude80 Core Features\n\n### 1. One-Line Agent Creation\n\n```python\n@agent\nasync def summarizer(text: str) -> str:\n '''Summarize in 3 points: {{ text }}'''\n```\n\n### 2. Type-Safe Structured Output\n\n```python\nfrom pydantic import BaseModel\n\nclass Report(BaseModel):\n summary: str\n action_items: list[str]\n\n@agent\nasync def meeting_analyzer(transcript: str) -> Report:\n '''Analyze meeting: {{ transcript }}'''\n\nreport = await meeting_analyzer(\"...\")\nfor item in report.action_items: # Fully typed!\n print(f\"TODO: {item}\")\n```\n\n### 3. Built-in Tools\n\n```python\n@agent(tools=[\"web_search\", \"web_fetch\"])\nasync def researcher(topic: str) -> str:\n '''Research {{ topic }} using:\n - web_search(query): Brave Search API\n - web_fetch(url): Scrape webpage content\n '''\n```\n\nBuilt-in tools include: file operations, web search, code execution, YouTube data, and more.\n\n### 4. Memory Management\n\n```python\n@agent(enable_memory=True)\nasync def assistant(message: str) -> str:\n '''You remember our conversation.\n\n User says: {{ message }}'''\n\n# Multi-turn conversation with context\nawait assistant(\"My favorite color is blue\")\nawait assistant(\"What's my favorite color?\") # Remembers!\n```\n\n### 5. Custom Tools\n\n```python\nfrom kagura import tool, agent\n\n@tool\nasync def search_database(query: str) -> list[dict]:\n '''Search internal database'''\n return db.query(query)\n\n@agent(tools=[search_database])\nasync def data_agent(question: str) -> str:\n '''Answer using database: {{ question }}'''\n```\n\n### 6. Multi-LLM Support\n\n```python\n# OpenAI\n@agent(model=\"gpt-4o\")\nasync def translator(text: str) -> str: ...\n\n# Anthropic\n@agent(model=\"claude-3-5-sonnet-20241022\")\nasync def writer(prompt: str) -> str: ...\n\n# Google\n@agent(model=\"gemini/gemini-2.0-flash\")\nasync def analyzer(text: str) -> str: ...\n```\n\n100+ models via LiteLLM integration.\n\n---\n\n## \ud83d\udcbc Real-World Use Cases\n\n### SDK Integration Examples\n\n#### Web Application (FastAPI)\n\n```python\nfrom fastapi import FastAPI\nfrom kagura import agent\n\napp = FastAPI()\n\n@agent\nasync def support_bot(question: str) -> str:\n '''Answer customer support question: {{ question }}'''\n\n@app.post(\"/api/support\")\nasync def handle_support(question: str):\n response = await support_bot(question)\n return {\"answer\": response}\n```\n\n#### Data Pipeline\n\n```python\nfrom kagura import agent\n\n@agent(tools=[\"web_search\"])\nasync def data_enricher(company_name: str) -> dict:\n '''Enrich company data for: {{ company_name }}\n\n Steps:\n 1. Search web for company information\n 2. Extract: industry, size, location, description\n 3. Return as structured data\n '''\n\n# Use in your ETL pipeline\nenriched = await data_enricher(\"Anthropic\")\n```\n\n#### Automation Script\n\n```python\nfrom kagura import agent, workflow\n\n@agent\nasync def email_classifier(email: str) -> str:\n '''Classify email as: urgent/important/spam\n\n Email: {{ email }}'''\n\n@workflow.chain\nasync def inbox_automation(emails: list[str]):\n for email in emails:\n category = await email_classifier(email)\n # Route based on category\n```\n\n---\n\n## \ud83c\udfa8 Advanced Features\n\n### Multimodal Analysis\n\n```python\n@agent\nasync def image_analyzer(image_path: str, question: str) -> str:\n '''Analyze image and answer: {{ question }}\n\n Image: {{ image_path }}'''\n\nresult = await image_analyzer(\"chart.png\", \"What's the trend?\")\n# Uses Gemini Vision API automatically\n```\n\n### Document RAG\n\n```python\nfrom kagura.core.memory import MemoryRAG\n\n@agent(enable_memory=True)\nasync def doc_qa(question: str) -> str:\n '''Answer based on indexed documents\n\n Use rag_search(query) to find relevant information.\n '''\n\n# Index once\nrag = MemoryRAG()\nawait rag.index_directory(\"./docs\")\n\n# Query anytime\nanswer = await doc_qa(\"What does Q3 report say about sales?\")\n```\n\n### Agent Testing\n\n```python\nfrom kagura.testing import AgentTestCase\n\nclass TestMyAgent(AgentTestCase):\n async def test_translation(self):\n result = await translator(\"Hello\", lang=\"ja\")\n\n # Semantic assertions (LLM-powered)\n self.assert_semantic_match(\n result,\n \"Japanese greeting\"\n )\n```\n\n### Cost Tracking\n\n```python\nfrom kagura.observability import track_cost\n\n@agent\n@track_cost\nasync def expensive_agent(query: str) -> str:\n '''Complex analysis: {{ query }}'''\n\n# Automatic cost tracking\n# View with: kagura monitor stats\n```\n\n---\n\n## \ud83c\udfae Bonus: Interactive Chat\n\nWant to try Kagura without writing code?\n\n```bash\nkagura chat\n```\n\nYou get a Claude Code-like experience with all features built-in:\n\n```\n[You] > Read report.pdf and summarize\n\n[AI] > (Analyzes PDF with Gemini Vision)\n\n Key findings:\n 1. Revenue up 23% YoY\n 2. New market expansion successful\n 3. Engineering team doubled\n\n[You] > Search for similar reports\n\n[AI] > (Uses Brave Search, finds relevant content)\n\n[You] > Create a comparison chart\n\n[AI] > (Writes Python code, executes in sandbox, shows chart)\n```\n\nAll file operations, web search, code execution, and multimodal analysis work automatically.\n\n---\n\n## \ud83d\udce6 Installation\n\n### Basic\n\n```bash\npip install kagura-ai\n```\n\n### With All Features (Recommended)\n\n```bash\npip install kagura-ai[full] # Memory + Web + Multimodal + Auth + MCP\n```\n\n### Pick What You Need\n\n```bash\npip install kagura-ai[ai] # Memory + Routing + Context Compression\npip install kagura-ai[web] # Web search + Multimodal\npip install kagura-ai[auth] # OAuth2\npip install kagura-ai[mcp] # Claude Desktop integration\n```\n\n### Environment Setup\n\n```bash\n# At least one LLM API key required\nexport OPENAI_API_KEY=sk-...\n\n# Optional features\nexport BRAVE_SEARCH_API_KEY=... # Web search\nexport GOOGLE_API_KEY=... # Multimodal (Gemini)\n```\n\n---\n\n## \ud83d\udcda Documentation\n\n### For Developers (SDK)\n- [API Reference](docs/api/) - All decorators, classes, functions\n- [SDK Guide](docs/sdk-guide.md) - @agent, @tool, memory, workflows\n- [Examples](./examples/) - 30+ code examples\n\n### For Users (Chat)\n- [Chat Guide](docs/chat-guide.md) - Interactive chat features\n- [Quick Start](docs/quickstart.md) - Get started in 5 minutes\n\n### Integration\n- [MCP Integration](docs/en/guides/claude-code-mcp-setup.md) - Claude Desktop setup\n- [Testing Guide](docs/en/tutorials/14-testing.md) - Test your agents\n\n---\n\n## \ud83c\udfd7\ufe0f Architecture\n\nBuilt on proven technologies:\n\n- **LLM**: OpenAI SDK (direct) + LiteLLM (100+ providers)\n- **Memory**: ChromaDB (vector storage)\n- **Validation**: Pydantic v2\n- **Testing**: pytest + custom framework\n- **Type Safety**: pyright strict mode\n\n**Quality Metrics**:\n- 1,300+ tests (90%+ coverage)\n- 100% typed\n- Production-ready\n\n---\n\n## \ud83d\udd27 Development\n\n```bash\n# Setup\ngit clone https://github.com/JFK/kagura-ai.git\ncd kagura-ai\nuv sync --all-extras\n\n# Test\npytest -n auto\n\n# Type check\npyright src/kagura/\n\n# Lint\nruff check src/\n```\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for details.\n\n---\n\n## \ud83d\uddfa\ufe0f Roadmap\n\n### Recently Released (v2.7.x)\n- \u2705 Streaming support (90% faster UX)\n- \u2705 User config system (`kagura init`)\n- \u2705 Personal tools (news, weather, recipes, events)\n- \u2705 MCP full integration (15 built-in tools)\n- \u2705 Context compression (handle 10,000+ messages)\n\n### Coming in v3.0\n- \ud83d\udd04 Documentation refresh (SDK-first)\n- \ud83d\udd04 Enhanced Meta Agent (`/create` in chat)\n- \ud83d\udd04 Cost visibility (`/stats` in chat)\n\n### Future (v3.1+)\n- \ud83d\udd2e Auto-discovery & intent detection\n- \ud83d\udd2e Voice interface\n- \ud83d\udd2e Google Workspace integration\n\n---\n\n## \ud83d\udcc4 License\n\nApache License 2.0 - see [LICENSE](./LICENSE)\n\n---\n\n## \ud83c\udf38 About the Name\n\n\"Kagura (\u795e\u697d)\" is traditional Japanese performing art embodying harmony and creativity - principles at the heart of this SDK.\n\n---\n\n**Built with \u2764\ufe0f for developers who want type-safe AI**\n\n[GitHub](https://github.com/JFK/kagura-ai) \u2022 [PyPI](https://pypi.org/project/kagura-ai/) \u2022 [Documentation](https://www.kagura-ai.com/)\n",
"bugtrack_url": null,
"license": null,
"summary": "Python-First AI Agent SDK - Build production AI with one decorator",
"version": "3.0.8",
"project_urls": null,
"split_keywords": [
"ai",
" sdk",
" agents",
" llm",
" type-safe",
" production-ready",
" openai",
" anthropic",
" gemini",
" pydantic",
" async"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "5e8c7b32c4d02865a20de9011a15ad7511a0e8e217ad65f163be9a213f9b0b80",
"md5": "e53b8d404533c95c3b4445ca1cc4f22c",
"sha256": "592384f298144595f8dacb2a2771b295f9ac699a5702f475da8d6a7105916c5a"
},
"downloads": -1,
"filename": "kagura_ai-3.0.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e53b8d404533c95c3b4445ca1cc4f22c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 240959,
"upload_time": "2025-10-22T16:27:30",
"upload_time_iso_8601": "2025-10-22T16:27:30.782096Z",
"url": "https://files.pythonhosted.org/packages/5e/8c/7b32c4d02865a20de9011a15ad7511a0e8e217ad65f163be9a213f9b0b80/kagura_ai-3.0.8-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "08d288b55017c2d6a4c6ed3ee8bdc6395e15982835c5e9a0d8c2c349623884cc",
"md5": "b3eadbdb44395335a23fafd0e1b5ac8b",
"sha256": "8332cf4bda8a9d4e6d14533a9919a02b341e70717c474e3f5ee5a2505661fa78"
},
"downloads": -1,
"filename": "kagura-ai-3.0.8.tar.gz",
"has_sig": false,
"md5_digest": "b3eadbdb44395335a23fafd0e1b5ac8b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 205179,
"upload_time": "2025-10-22T16:27:32",
"upload_time_iso_8601": "2025-10-22T16:27:32.365295Z",
"url": "https://files.pythonhosted.org/packages/08/d2/88b55017c2d6a4c6ed3ee8bdc6395e15982835c5e9a0d8c2c349623884cc/kagura-ai-3.0.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-22 16:27:32",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "kagura-ai"
}