Metadata-Version: 2.4
Name: arka-agent
Version: 0.1.4
Summary: Cross-platform AI agent — 70+ skills, MCP server, media tools, local-first routing
Author: Sumit Mishra
License: MIT
Project-URL: Homepage, https://github.com/Sumit884-byte/arka
Project-URL: Repository, https://github.com/Sumit884-byte/arka
Project-URL: Documentation, https://arka-agent.mintlify.site
Project-URL: Issues, https://github.com/Sumit884-byte/arka/issues
Keywords: ai,agent,cli,assistant,llm
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Utilities
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: platformdirs>=4.0
Requires-Dist: cryptography>=42.0
Requires-Dist: qrcode>=7.4
Requires-Dist: feedparser>=6.0
Provides-Extra: chat
Requires-Dist: agno[google,groq,ollama]>=2.5.0; extra == "chat"
Requires-Dist: openai>=1.0.0; extra == "chat"
Requires-Dist: ddgs; extra == "chat"
Requires-Dist: trafilatura; extra == "chat"
Requires-Dist: beautifulsoup4; extra == "chat"
Requires-Dist: sympy; extra == "chat"
Requires-Dist: geopy; extra == "chat"
Provides-Extra: voice
Requires-Dist: vosk; extra == "voice"
Requires-Dist: sounddevice; extra == "voice"
Provides-Extra: pdf
Requires-Dist: requests; extra == "pdf"
Provides-Extra: pdf-tools
Requires-Dist: pypdf>=4.0; extra == "pdf-tools"
Requires-Dist: Pillow>=10.0; extra == "pdf-tools"
Requires-Dist: reportlab>=4.0; extra == "pdf-tools"
Requires-Dist: pymupdf>=1.24; extra == "pdf-tools"
Provides-Extra: charts
Requires-Dist: matplotlib>=3.8; extra == "charts"
Provides-Extra: ascii
Requires-Dist: pyfiglet>=1.0.0; extra == "ascii"
Provides-Extra: data
Requires-Dist: faker>=24.0; extra == "data"
Requires-Dist: openpyxl>=3.1; extra == "data"
Provides-Extra: lakehouse
Requires-Dist: duckdb>=1.0; extra == "lakehouse"
Provides-Extra: lakehouse-spark
Requires-Dist: pyspark>=3.5; extra == "lakehouse-spark"
Requires-Dist: delta-spark>=3.2; extra == "lakehouse-spark"
Provides-Extra: drawings
Requires-Dist: Pillow>=10.0; extra == "drawings"
Requires-Dist: pymupdf>=1.24; extra == "drawings"
Provides-Extra: video
Requires-Dist: Pillow>=10.0; extra == "video"
Requires-Dist: edge-tts>=6.1; extra == "video"
Requires-Dist: python-pptx>=1.0; extra == "video"
Requires-Dist: huggingface_hub>=0.28; extra == "video"
Provides-Extra: layered-video
Requires-Dist: Pillow>=10.0; extra == "layered-video"
Requires-Dist: rembg>=2.0; extra == "layered-video"
Provides-Extra: 3d
Requires-Dist: numpy>=1.26; extra == "3d"
Requires-Dist: trimesh>=4.0; extra == "3d"
Provides-Extra: 3d-ai
Requires-Dist: gradio_client>=1.0; extra == "3d-ai"
Provides-Extra: vision
Requires-Dist: Pillow>=10.0; extra == "vision"
Provides-Extra: image-filter
Requires-Dist: Pillow>=10.0; extra == "image-filter"
Requires-Dist: sentence-transformers>=3.0; extra == "image-filter"
Requires-Dist: scikit-learn>=1.4; extra == "image-filter"
Provides-Extra: whatsapp
Requires-Dist: selenium>=4.0; extra == "whatsapp"
Requires-Dist: pywhatkit>=5.4; extra == "whatsapp"
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == "dev"
Requires-Dist: ruff==0.15.22; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: twine>=5.0; extra == "dev"
Provides-Extra: mcp-server
Requires-Dist: mcp>=1.0; extra == "mcp-server"
Provides-Extra: observability
Requires-Dist: opentelemetry-api>=1.27.0; extra == "observability"
Requires-Dist: opentelemetry-sdk>=1.27.0; extra == "observability"
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.27.0; extra == "observability"
Provides-Extra: apple-fm
Requires-Dist: apple-fm-sdk; extra == "apple-fm"
Provides-Extra: all
Requires-Dist: arka-agent[3d,3d-ai,charts,chat,drawings,observability,pdf,pdf-tools,video,voice,whatsapp]; extra == "all"
Dynamic: license-file

<p align="center">
  <a href="https://github.com/Sumit884-byte/arka">
    <img src="https://img.shields.io/github/stars/Sumit884-byte/arka?style=for-the-badge&logo=github&label=Star%20the%20repo" alt="Star the repo" />
  </a>
</p>

<p align="center">
  <img src="docs/logo/mark.svg" alt="Arka" width="72" height="72" />
</p>

<h1 align="center">Arka</h1>

<p align="center">
  <strong>Your terminal, upgraded.</strong><br />
  Plain English → <strong>70+ local skills</strong>, zero-token routing first,<br />
  then a 24-provider LLM failover when you need it.
</p>

<p align="center">
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT" /></a>
  <a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.11%2B-blue.svg" alt="Python 3.11+" /></a>
  <a href="https://pypi.org/project/arka-agent/"><img src="https://img.shields.io/pypi/v/arka-agent.svg" alt="PyPI" /></a>
  <a href="https://pepy.tech/projects/arka-agent"><img src="https://static.pepy.tech/badge/arka-agent" alt="Downloads" /></a>
  <a href="https://github.com/Sumit884-byte/arka"><img src="https://img.shields.io/github/stars/Sumit884-byte/arka?style=social" alt="GitHub stars" /></a>
  <a href="https://arka-agent.mintlify.site"><img src="https://img.shields.io/badge/docs-Mintlify-0B0B0F?logo=readme&logoColor=white" alt="Docs" /></a>
</p>

<p align="center">
  <a href="https://arka-agent.mintlify.site"><strong>Docs</strong></a>
  ·
  <a href="https://arka-agent.mintlify.site/quickstart"><strong>Quickstart</strong></a>
  ·
  <a href="https://pypi.org/project/arka-agent/"><strong>PyPI</strong></a>
  ·
  <a href="https://github.com/Sumit884-byte/arka"><strong>GitHub</strong></a>
</p>

---

## Install

```bash
uv tool install "arka-agent[chat]"   # or: pipx install "arka-agent[chat]"
arka setup
arka doctor
```

One-off without a global install:

```bash
uvx --from "arka-agent[chat]" arka doctor
```

Need the latest commit before the next PyPI release?

```bash
pipx install "arka-agent[chat] @ git+https://github.com/Sumit884-byte/arka.git"
```

> **Requirements:** Python 3.11+ · macOS / Linux full · Windows CLI works (fish unlocks the full router)  
> **Keys:** add a free Gemini or Groq key, or run Ollama locally — `arka free tier setup` helps.

---

## Quick start

```bash
arka ask "what is Rust?"
arka "convert 100 USD to INR"
arka council "should I learn Rust?"
arka quiz python
arka listen    # optional: "hey arka, what's the weather"
```

Connect Cursor / Claude over MCP:

```bash
arka mcp doctor && arka mcp install
```

More: [Quickstart](https://arka-agent.mintlify.site/quickstart) · [Skills](https://arka-agent.mintlify.site/guides/skills) · [MCP](https://arka-agent.mintlify.site/guides/mcp)

---

## Why Arka

| | |
| --- | --- |
| **Zero-token-first** | 120+ symbolic rules resolve common asks before any model is called |
| **70+ local skills** | Code, media, research, deploy, memory — plugins via `skill.json` |
| **24-provider failover** | Gemini → Groq → Ollama → OpenRouter and more |
| **Secure by default** | Injection checks, risky-action prompts, hard blocks on destructive shell |
| **Local-first** | Skills run on your machine; you choose which LLM providers see prompts |
| **MCP + HTTP API** | stdio/SSE tools for Cursor/Claude, REST on `:8765` |

---

## How it works

```text
  you type / speak
        │
        ▼
 ┌──────────────────┐     match      ┌─────────────────┐
 │ Symbolic router  │ ─────────────► │ Skill dispatcher │──► skill runs locally
 │ (zero LLM cost)  │                │ + security gate  │
 └────────┬─────────┘                └─────────────────┘
          │ no match
          ▼
 ┌──────────────────┐
 │ LLM failover     │  Gemini · Groq · Ollama · OpenRouter · …
 └──────────────────┘
```

Same path powers the CLI, MCP server, and remote API. Hosted/headless Linux can set `ARKA_HOSTED_MODE=1` to auto-block desktop/GUI/audio skills. Deploy with `arka deploy --all` (Cloud VM, Railway, Vercel, Netlify, Render).

<details>
<summary>Full architecture diagram</summary>

```mermaid
flowchart TD
    CLI["CLI / NL input"] --> SR["Symbolic router"]
    SR -->|"match"| SD["Skill dispatcher"]
    SR -->|"no match"| LLM["LLM failover chain"]
    LLM --> SD
    SD --> Skills["70+ skills"]
    SD --> MCP["MCP · REST · Telemetry"]
```

</details>

---

## Privacy

- Skills run **on your machine** — no hosted Arka account or shared demo instance
- Many requests never leave your machine (symbolic routing, zero tokens)
- LLM traffic goes only to providers **you** configure; force local-only with:

  ```bash
  arka run-only-local-llm "summarize this repo"
  arka hybrid config local-only
  ```

- Secrets live under your user config (`~/.config/arka/` / macOS Application Support / `%APPDATA%\arka\`)
- Memory defaults local; web content is sanitized; risky actions prompt `[y/N]`
- Telemetry defaults to local SigNoz (`127.0.0.1:4318`) — disable with `OTEL_SDK_DISABLED=true`

Details: [Security](https://arka-agent.mintlify.site/concepts/security) · [Memory](https://arka-agent.mintlify.site/guides/memory)

---

## Platforms

| Platform | Support |
| --- | --- |
| **macOS** | Full — recommended for daily use |
| **Linux** | Full |
| **Windows** | Python CLI works; [fish](https://fishshell.com) unlocks the full skill router (`scoop` / `winget`) |

---

## Develop from source

```bash
git clone https://github.com/Sumit884-byte/arka.git
cd arka
./scripts/refetch.sh --install
pip install -e ".[chat,dev]"
arka setup && arka doctor
```

Fork + PR: see [CONTRIBUTING.md](CONTRIBUTING.md). Local landing preview: [`landing/`](landing/).

---

## Contributing

Issues and PRs welcome — start with [good first issue](https://github.com/Sumit884-byte/arka/issues?q=label%3A%22good+first+issue%22).

```bash
gh repo fork Sumit884-byte/arka --clone
cd arka && pip install -e ".[chat,dev]" && pytest
gh pr create --repo Sumit884-byte/arka
```

If Arka is useful, [★ star the repo](https://github.com/Sumit884-byte/arka) — or `gh repo star Sumit884-byte/arka`.

## License

[MIT](LICENSE)
