Metadata-Version: 2.4
Name: arc-memory
Version: 0.6.0
Summary: Arc Memory - Local bi-temporal knowledge graph for code repositories
Project-URL: Homepage, https://www.arc.computer
Project-URL: Repository, https://github.com/Arc-Computer/arc-memory
Project-URL: Bug Tracker, https://github.com/Arc-Computer/arc-memory/issues
Author-email: Jarrod Barnes <jbarnes850@gmail.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Version Control :: Git
Requires-Python: >=3.10
Requires-Dist: aiohttp<4.0.0,>=3.8.0
Requires-Dist: apsw<4.0.0,>=3.40.0
Requires-Dist: cryptography<44.0.0,>=43.0.0
Requires-Dist: gitpython<4.0.0,>=3.1.30
Requires-Dist: gql<4.0.0,>=3.4.0
Requires-Dist: keyring<24.0.0,>=23.13.1
Requires-Dist: markdown-it-py<3.0.0,>=2.2.0
Requires-Dist: networkx<4.0.0,>=3.0
Requires-Dist: pydantic<3.0.0,>=2.0.0
Requires-Dist: pyjwt<3.0.0,>=2.6.0
Requires-Dist: python-dotenv<2.0.0,>=1.0.0
Requires-Dist: pyyaml<7.0.0,>=6.0
Requires-Dist: requests<3.0.0,>=2.28.0
Requires-Dist: rich<14.0.0,>=13.0.0
Requires-Dist: tqdm<5.0.0,>=4.65.0
Requires-Dist: typer<0.10.0,>=0.9.0
Requires-Dist: zstandard<0.21.0,>=0.20.0
Provides-Extra: cli
Requires-Dist: keyring<24.0.0,>=23.13.1; extra == 'cli'
Requires-Dist: rich<14.0.0,>=13.0.0; extra == 'cli'
Requires-Dist: tqdm<5.0.0,>=4.65.0; extra == 'cli'
Requires-Dist: typer<0.10.0,>=0.9.0; extra == 'cli'
Provides-Extra: dev
Requires-Dist: black<24.0.0,>=23.3.0; extra == 'dev'
Requires-Dist: isort<6.0.0,>=5.12.0; extra == 'dev'
Requires-Dist: mypy<2.0.0,>=1.3.0; extra == 'dev'
Requires-Dist: pre-commit<4.0.0,>=3.3.2; extra == 'dev'
Requires-Dist: pytest-asyncio<0.22.0,>=0.21.0; extra == 'dev'
Requires-Dist: pytest-cov<5.0.0,>=4.1.0; extra == 'dev'
Requires-Dist: pytest<8.0.0,>=7.3.1; extra == 'dev'
Requires-Dist: responses<0.24.0,>=0.23.1; extra == 'dev'
Requires-Dist: ruff<0.1.0,>=0.0.272; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-material<10.0.0,>=9.0.0; extra == 'docs'
Requires-Dist: mkdocs<2.0.0,>=1.4.0; extra == 'docs'
Requires-Dist: mkdocstrings<0.21.0,>=0.20.0; extra == 'docs'
Provides-Extra: frameworks
Requires-Dist: langchain-core<0.2.0,>=0.1.0; extra == 'frameworks'
Requires-Dist: langchain-openai<0.1.0,>=0.0.1; extra == 'frameworks'
Requires-Dist: langchain<0.1.0,>=0.0.267; extra == 'frameworks'
Requires-Dist: langgraph<0.1.0,>=0.0.15; extra == 'frameworks'
Requires-Dist: openai<2.0.0,>=1.0.0; extra == 'frameworks'
Provides-Extra: langchain
Requires-Dist: langchain-core<0.2.0,>=0.1.0; extra == 'langchain'
Requires-Dist: langchain-openai<0.1.0,>=0.0.1; extra == 'langchain'
Requires-Dist: langchain<0.1.0,>=0.0.267; extra == 'langchain'
Provides-Extra: langgraph
Requires-Dist: langchain-core<0.2.0,>=0.1.0; extra == 'langgraph'
Requires-Dist: langchain-openai<0.1.0,>=0.0.1; extra == 'langgraph'
Requires-Dist: langgraph<0.1.0,>=0.0.15; extra == 'langgraph'
Provides-Extra: openai
Requires-Dist: openai<2.0.0,>=1.0.0; extra == 'openai'
Provides-Extra: telemetry
Requires-Dist: posthog<4.0.0,>=3.0.1; extra == 'telemetry'
Provides-Extra: test
Requires-Dist: pytest-asyncio<0.22.0,>=0.21.0; extra == 'test'
Requires-Dist: pytest-cov<5.0.0,>=4.1.0; extra == 'test'
Requires-Dist: pytest<8.0.0,>=7.3.1; extra == 'test'
Requires-Dist: responses<0.24.0,>=0.23.1; extra == 'test'
Description-Content-Type: text/markdown

# Arc: The Memory Layer for Engineering Teams

<p align="center">
  <img src="public/Arc SDK Header.png" alt="Arc Logo"/>
</p>

<p align="center">
  <a href="https://www.arc.computer"><img src="https://img.shields.io/badge/website-arc.computer-blue" alt="Website"/></a>
  <a href="https://github.com/Arc-Computer/arc-memory/actions"><img src="https://img.shields.io/badge/tests-passing-brightgreen" alt="Tests"/></a>
  <a href="https://pypi.org/project/arc-memory/"><img src="https://img.shields.io/pypi/v/arc-memory" alt="PyPI"/></a>
  <a href="https://pypi.org/project/arc-memory/"><img src="https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12-blue" alt="Python"/></a>
  <a href="https://github.com/Arc-Computer/arc-memory/blob/main/LICENSE"><img src="https://img.shields.io/github/license/Arc-Computer/arc-memory" alt="License"/></a>
  <a href="https://docs.arc.computer"><img src="https://img.shields.io/badge/docs-mintlify-teal" alt="Documentation"/></a>
</p>

*Arc is the memory layer for engineering teams — it records **why** every change was made, predicts the blast-radius of new code before you merge, and feeds that context to agents so they can handle long-range refactors safely.*

## What The Arc SDK Does

1. **Record the why.**
   Arc's Temporal Knowledge Graph ingests commits, PRs, issues, and ADRs to preserve architectural intent and decision history—entirely on your machine.

2. **Model the system.**
   From that history Arc derives a **causal graph** of services, data flows, and constraints—a lightweight world-model that stays in sync with the codebase.

3. **Capture causal relationships.**
   Arc tracks decision → implication → code-change chains, enabling multi-hop reasoning to show why decisions were made and their predicted impact.

4. **Enhance PR reviews.**
   Arc's GitHub Actions integration surfaces decision trails and blast-radius hints directly in PR comments, giving reviewers instant context before they hit "Approve."

## Quick Start

```bash
# Install Arc Memory
pip install arc-memory[github]

# Build a knowledge graph from your repository
cd /path/to/your/repo
arc build --github

## Core Features

### Knowledge Graph

```bash
# Build with GitHub and Linear data
arc build --github --linear
```

### Decision Trails

```bash
# Show decision trail for a specific file and line
arc why file path/to/file.py 42

# Ask natural language questions
arc why query "What decision led to using SQLite instead of PostgreSQL?"
```

### GitHub Actions Integration

```bash
# Export knowledge graph for GitHub Actions
arc export <commit-sha> export.json --compress
```

## SDK for Developers

```python
from arc_memory import Arc

# Initialize Arc with your repository path
arc = Arc(repo_path="./")

# Ask a question about your codebase
result = arc.query("What were the major changes in the last release?")
print(f"Answer: {result.answer}")

# Find out why a specific piece of code exists
decision_trail = arc.get_decision_trail("src/auth/login.py", 42)
```

## Documentation

- [Getting Started Guide](./docs/getting_started.md) - Complete setup instructions
- [SDK Documentation](./docs/sdk/README.md) - Using the Arc Memory SDK
- [CLI Reference](./docs/cli/README.md) - Command-line interface details
- [Examples](./docs/examples/README.md) - Real-world usage examples

## Why It Matters

- **Faster onboarding** for new team members
- **Reduced knowledge loss** when developers leave
- **More efficient code reviews** with contextual insights
- **Safer refactoring** with impact prediction
- **Better agent coordination** through shared memory

## SDK for Developers and Agents

Arc Memory provides a clean, Pythonic SDK that enables both developers and AI agents to programmatically access the knowledge graph:

```python
from arc_memory import Arc

# Initialize Arc with your repository path
arc = Arc(repo_path="./")

# Ask a question about your codebase
result = arc.query("What were the major changes in the last release?")
print(f"Answer: {result.answer}")

# Find out why a specific piece of code exists
decision_trail = arc.get_decision_trail("src/core/auth.py", 42)
for entry in decision_trail:
    print(f"Decision: {entry.title}")
    print(f"Rationale: {entry.rationale}")

# Analyze the potential impact of a change
impact = arc.analyze_component_impact("file:src/api/endpoints.py")
for component in impact:
    print(f"Affected: {component.title} (Impact score: {component.impact_score})")
```

The SDK follows a framework-agnostic design with adapters for popular frameworks like LangChain and OpenAI, making it easy to integrate Arc Memory into your development workflows or AI applications.

## Privacy

Telemetry is disabled by default. Arc Memory respects your privacy and will only collect anonymous usage data if you explicitly opt in.

## License

MIT
