Metadata-Version: 2.4
Name: daita-agents
Version: 1.2.2
Summary: A persistent data agent for grounded analysis and controlled automation across databases, files, and connected tools
Author-email: Daita <support@daita-tech.io>
License-Expression: MIT
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: <3.13,>=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: openai<3.0.0,>=2.45.0
Requires-Dist: anthropic<1.0.0,>=0.116.0
Requires-Dist: google-genai<3.0.0,>=2.22.0
Requires-Dist: asyncpg<1.0.0,>=0.30.0
Requires-Dist: sqlglot<30.15.0,>=30.14.0
Requires-Dist: keyring<26.0.0,>=25.0.0
Requires-Dist: rich<16.0.0,>=15.0.0
Requires-Dist: textual<9.0.0,>=8.2.8
Requires-Dist: XlsxWriter<4.0.0,>=3.2.5
Requires-Dist: httpx<1.0.0,>=0.28.1
Requires-Dist: httpx2<3.0.0,>=2.13.1
Requires-Dist: mcp==2.2.0
Requires-Dist: duckdb==1.5.5
Provides-Extra: dev
Requires-Dist: black>=26.1.0; extra == "dev"
Requires-Dist: build>=1.2.2; extra == "dev"
Requires-Dist: mypy>=1.15.0; extra == "dev"
Requires-Dist: openpyxl<4.0.0,>=3.1.0; extra == "dev"
Requires-Dist: pre-commit<5.0.0,>=4.0.0; extra == "dev"
Requires-Dist: pytest>=8.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.26.0; extra == "dev"
Requires-Dist: python-dotenv<2.0.0,>=1.2.2; extra == "dev"
Requires-Dist: ruff<0.17.0,>=0.16.2; extra == "dev"
Requires-Dist: setuptools==82.0.1; extra == "dev"
Requires-Dist: twine<8.0.0,>=7.0.0; extra == "dev"
Requires-Dist: types-openpyxl<4.0.0,>=3.1.0; extra == "dev"
Requires-Dist: wheel==0.47.0; extra == "dev"
Dynamic: license-file

![Daita data operations agent](assets/banner.png)

# Daita

**An autonomous data operations agent that learns your data systems.**

Data systems are more than tables. Daita maps their structure, learns the
business meaning you approve, and turns individual investigations into durable
jobs and recurring checks. It answers from current evidence and carries out
admitted actions. The goal is fully autonomous data operations within the
access, budgets, and actions you authorize.

## What Daita can do

- **Understand your data.** Explore SQLite and PostgreSQL catalogs, follow
  relationships between resources, and run durable data profiles without
  changing source data.
- **Answer across systems.** Query admitted databases, local CSV, TSV, JSON,
  NDJSON, and Parquet files, and remote MCP tools using current source evidence.
- **Carry work forward.** Run durable task graphs or set assignments to run
  once or regularly. Review their results in the inbox while a Daita host is open.
- **Improve with use.** Keep conversations, approved business knowledge,
  meanings tied to specific sources, and reusable Markdown procedures. An
  optional, explicit review can propose lessons from completed runs for you to accept.
- **Deliver useful output.** Create reports backed by evidence and CSV or XLSX
  exports, including exact relational snapshots.
- **Take controlled action.** Preview and approve scoped PostgreSQL updates or
  upserts, and admit specific remote MCP actions. Durable receipts support
  inspection and recovery when an outcome is uncertain.

Daita works with OpenAI, Anthropic, Gemini, Grok, Ollama, endpoints compatible
with OpenAI's API, and [supported model subscriptions](docs/SUBSCRIPTION_MODEL_SOURCES.md).

## Quick start

On supported macOS and Linux systems, install Daita with:

```bash
curl -fsSL https://daita-tech.io/install.sh | bash
```

The installer supplies its own Python runtime and starts onboarding when run
in a terminal. Run `daita` in a new terminal to return later.

The first launch guides you through creating an agent, configuring a model, and
optionally attaching a data source for reading. The launch directory becomes
the default local working directory; foreground Files tools also accept
explicit local paths.

Try asking:

```text
How do our customers, orders, and payments tables relate?
Profile the orders and payments tables without changing them.
Compare paid revenue by region across our admitted sources.
Every Monday, summarize last week's revenue and put the result in my inbox.
```

Use `/learn <material>` to teach Daita a business definition or procedure with
approval. `/jobs` shows durable work, `/routines` manages saved assignments, and
`/inbox` shows their results. `/artifacts` previews, saves, and deletes stored
files. `/sources` explores connections and relationships;
`@` narrows a question to one source. Type `/help` for the full command list.

Scheduled work progresses only while the terminal or `daita host --agent <name>`
keeps that agent open. One host can open an agent home at a time.

## Authority stays explicit

Database connections start with read access only. Daita validates SQL against
the current catalog, checks tool calls against current scope and permissions,
and treats source content, remote output, memory, and skills as untrusted input.
Saved knowledge helps interpret data; it cannot grant access or override
current source facts.

External effects require exact permissions and approval or a bounded standing
grant. Native writes use a preview from the current run and transactional
checks. Daita records effect receipts and never silently retries an uncertain
action.

See [relational writes](docs/RELATIONAL_WRITES.md),
[remote MCP connectivity](docs/MCP_CONNECTIVITY.md), and
[action receipts and recovery](docs/EFFECT_RECEIPTS.md) for the exact limits.

## Guides

| Topic | Guide |
| --- | --- |
| Local file access and edits | [Local computer files](docs/LOCAL_WORKSPACES.md) |
| Reports, exports, and provenance | [Artifacts](docs/ARTIFACTS.md) |
| Source scope and retained context | [Context and scope](docs/CONTEXT_AND_SCOPE.md) |
| Scheduled work, outcomes, and hosting | [Scheduled routines](docs/SCHEDULED_ROUTINES.md) |
| Durable investigations and task graphs | [Durable jobs](docs/DURABLE_JOBS.md) |
| Learning, business meaning, and procedures | [Learning and semantics](docs/LEARNING_AND_SEMANTICS.md) |
| Model setup and subscriptions | [Model sources](docs/SUBSCRIPTION_MODEL_SOURCES.md) |
| Python API walkthroughs | [Offline examples](examples/README.md) |
| Architecture and development | [Repository guide](AGENTS.md) · [Contributing](CONTRIBUTING.md) |
| Private vulnerability reporting | [Security policy](SECURITY.md) |

## Upgrade or uninstall

Close any running Daita terminal or host first. Run the Quick start command
again to upgrade a managed installation. To remove it, run:

```bash
curl -fsSL https://daita-tech.io/install.sh | bash -s -- --uninstall
```

Agent state under `~/.daita` is separate from the installation. Existing pipx
installations still use pipx for upgrades and removal. Daita 0.19.0 and earlier
belong to a different framework family and cannot be migrated into 1.x; preserve
that state before upgrading. See [local state compatibility](docs/LOCAL_STATE_UPGRADES.md).

## License

[MIT](LICENSE)
