Metadata-Version: 2.4
Name: dana
Version: 0.5.6rc2
Summary: Dana programming language for Domain-Aware Neurosymbolic Agents
Author-email: Christopher Nguyen <ctn@aitomatic.com>
Maintainer-email: Vinh Luong <vinh@aitomatic.com>, Annie Ha <annie@aitomatic.com>, Lam Nguyen <lam@aitomatic.com>, Roy Vu <roy@aitomatic.com>, Sang Dinh <sang@aitomatic.com>
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE.md
Requires-Dist: aisuite[anthropic,azure,groq,huggingface,ollama,openai]>=0.1.11
Requires-Dist: google-cloud-aiplatform
Requires-Dist: httpx>=0.27.0
Requires-Dist: llama-index
Requires-Dist: openai>=1.55.3
Requires-Dist: lark
Requires-Dist: pandas
Requires-Dist: matplotlib
Requires-Dist: seaborn
Requires-Dist: sqlalchemy
Requires-Dist: aiohttp
Requires-Dist: aioconsole
Requires-Dist: websockets
Requires-Dist: python-dotenv
Requires-Dist: pyyaml
Requires-Dist: structlog
Requires-Dist: prompt-toolkit
Requires-Dist: pygments
Requires-Dist: textual
Requires-Dist: pyperclip
Requires-Dist: playwright
Requires-Dist: fastapi
Requires-Dist: uvicorn
Requires-Dist: pytest
Requires-Dist: pytest-asyncio
Requires-Dist: pytest-mock
Requires-Dist: lsprotocol
Requires-Dist: pygls
Requires-Dist: python-a2a==0.5.9
Requires-Dist: tqdm
Requires-Dist: aicapture
Requires-Dist: python-lsp-server[all]>=1.13.0
Requires-Dist: pyright>=1.1.403
Requires-Dist: jedi>=0.19.2
Requires-Dist: llama-index-embeddings-openai>=0.3.1
Requires-Dist: llama-index-llms-cohere>=0.5.0
Requires-Dist: llama-index-vector-stores-duckdb>=0.4.6
Requires-Dist: llama-index-vector-stores-postgres>=0.5.5
Requires-Dist: llm-code-executor
Requires-Dist: mcp
Requires-Dist: openai>=1.55.3
Requires-Dist: jedi>=0.19.2
Requires-Dist: lark
Requires-Dist: lsprotocol
Requires-Dist: pygls
Requires-Dist: pyright>=1.1.403
Requires-Dist: python-lsp-server[all]>=1.13.0
Requires-Dist: matplotlib
Requires-Dist: numpy>=2.2.3
Requires-Dist: pandas
Requires-Dist: seaborn
Requires-Dist: sqlalchemy
Requires-Dist: aiohttp
Requires-Dist: aioconsole
Requires-Dist: websockets
Requires-Dist: loguru>=0.7.3
Requires-Dist: python-dotenv
Requires-Dist: pyyaml
Requires-Dist: structlog
Requires-Dist: tqdm
Requires-Dist: prompt-toolkit
Requires-Dist: pygments
Requires-Dist: pyperclip
Requires-Dist: textual
Requires-Dist: playwright
Requires-Dist: fastapi
Requires-Dist: uvicorn
Requires-Dist: pytest
Requires-Dist: pytest-asyncio
Requires-Dist: pytest-mock
Requires-Dist: python-a2a>=0.5.9
Requires-Dist: aicapture
Requires-Dist: textual-dev>=1.7.0
Requires-Dist: opencv-python>=4.11.0.86
Requires-Dist: pillow>=11.1.0
Requires-Dist: pymupdf>=1.25.3
Requires-Dist: llama-index-embeddings-azure-openai>=0.3.9
Requires-Dist: llama-index-llms-azure-openai>=0.3.4
Requires-Dist: llama-index-embeddings-ibm>=0.3.1
Requires-Dist: llama-search>=0.3.4
Requires-Dist: build>=1.3.0
Requires-Dist: twine>=6.1.0
Requires-Dist: ruff>=0.13.0
Provides-Extra: dev
Requires-Dist: mypy; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: pylint; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: pexpect; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: textual-dev>=1.7.0; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Provides-Extra: docs
Requires-Dist: mkdocs; extra == "docs"
Requires-Dist: mkdocs-material; extra == "docs"
Requires-Dist: mkdocs-mermaid2-plugin; extra == "docs"
Requires-Dist: mkdocs-section-index; extra == "docs"
Requires-Dist: mkdocstrings; extra == "docs"
Requires-Dist: mkdocstrings-python; extra == "docs"
Requires-Dist: mkdocs-git-revision-date-localized-plugin; extra == "docs"
Requires-Dist: pymdown-extensions[extra]; extra == "docs"
Requires-Dist: mkdocs-gen-files; extra == "docs"
Requires-Dist: mkdocs-literate-nav; extra == "docs"
Requires-Dist: doc8; extra == "docs"
Requires-Dist: linkcheckmd; extra == "docs"
Requires-Dist: mkdocs-htmlproofer-plugin; extra == "docs"
Requires-Dist: mkdocs-awesome-nav; extra == "docs"
Requires-Dist: mkdocs-include-markdown-plugin; extra == "docs"
Requires-Dist: mkdocs-macros-plugin; extra == "docs"
Requires-Dist: mkdocs-print-site-plugin; extra == "docs"
Requires-Dist: mkdocs-redirects; extra == "docs"
Requires-Dist: mkdocs-table-reader-plugin; extra == "docs"
Dynamic: license-file

<div align="center">
  <img src="docs/.archive/0804/images/dana-logo.jpg" alt="Dana Logo" width="80">
</div>

# Dana: The World’s First Agentic OS  

## Out-of-the-box Expert Agent Development. From idea to deployment. Deterministic and grounded in your domain knowledge.

---

## Why Dana?  

Most frameworks make you choose:  
- **Too rigid** → narrow, specialized agents.  
- **Too generic** → LLM wrappers that fail in production.  
- **Too much glue** → orchestration code everywhere.  

Dana gives you the missing foundation:  
- **Deterministic** → reproducible results you can trust.  
- **Contextual** → memory and knowledge grounding built in.  
- **Concurrent** → parallel by default, no async headaches.  
- **Composed** → workflows as first-class, not bolted on.  
- **Local-first** → runs entirely on your laptop, private and fast.  

---

## Install and launch Dana 

💡 **Tip:** Always activate your virtual environment before running or installing anything for Dana.

```bash
# Activate your virtual environment (recommended)
source venv/bin/activate  # On macOS/Linux
# or
venv\Scripts\activate     # On Windows

pip install dana
dana studio #Launch Dana Agent Studio
dana repl #Launch Dana Repl
```

- For detailed setup (Python versions, OS quirks, IDE integration), see [Install Guide](docs/install.md).  
- To build from source or set up development, see [Tech Setup](docs/tech-setup.md).  

---

## What’s Included in v0.5  

- **Dana Agent Studio** → Browser app (`dana studio`) to create, test, and deploy agents with visual workflows and a chat UI.  
- **Dana Agent-Native Programming Language** → Python-like `.na` language with built-in runtime for deterministic, concurrent, knowledge-grounded agents.  

Full release notes → [v0.5 Release](docs/releases/v0.5.md)  

---

## First Expert Agent in 4 Steps  

1. **Define an Agent**  
   ```dana
   agent RiskAdvisor
   ```  

2. **Add Resources**  
   ```dana
   resource_financial_docs = get_resources("rag", sources=["10-K.pdf", "Q2.xlsx"])
   ```  

3. **Follow an Expert Workflow**  
   ```dana
   def analyze(...): return ...
   def score(...): return ...  
   def recommend(...): return ...
   
   def wf_risk_check(resources) = analyze | score | recommend

   result = RiskAdvisor.solve("Identify liquidity risks", resources=[resource_financial_docs], workflows=[wf_risk_check])
   
   print(result)
   ```  

4. **Run or Deploy**  
   ```bash
   dana run my_agent.na       # Run locally
   dana deploy my_agent.na    # Deploy as REST API
   ```  

For a full walkthrough → [Quickstart Guide](docs/quickstart.md)  

---

## Learn More  

- [Core Concepts](docs/core-concepts.md) → Agents, Resources, Workflows, Studio.  
- [Cookbook](docs/cookbook/README.md) → Recipes for workflows, pipelines, error recovery, multi-agent chat.  
- [Reference](docs/reference/language.md) → Language syntax and semantics.  
- [Primers](docs/primers/README.md) → Optional deep dives into language design.  

---

## Community  

- 💬 [Discussions](https://github.com/aitomatic/dana/discussions)  
- 🐞 [Issues](https://github.com/aitomatic/dana/issues)  
- 🎙️ [Discord](https://discord.gg/dana)  

Enterprise support → [sales@aitomatic.com](mailto:sales@aitomatic.com)  

---

## License  

Dana is released under the [MIT License](LICENSE.md).  
© 2025 Aitomatic, Inc.  
