Metadata-Version: 2.4
Name: mnemo-secondbrain
Version: 0.2.0
Summary: Personal knowledge graph system for Obsidian vaults with hybrid search
Author-email: jini92 <jini92@users.noreply.github.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/jini92/MAISECONDBRAIN
Project-URL: Repository, https://github.com/jini92/MAISECONDBRAIN
Project-URL: Issues, https://github.com/jini92/MAISECONDBRAIN/issues
Keywords: knowledge-graph,obsidian,second-brain,graphrag,semantic-search
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Text Processing :: General
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: networkx>=3.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: numpy>=1.24
Requires-Dist: rich>=13.0
Requires-Dist: click>=8.0
Provides-Extra: api
Requires-Dist: fastapi>=0.100; extra == "api"
Requires-Dist: uvicorn>=0.20; extra == "api"
Provides-Extra: embeddings
Requires-Dist: openai>=1.0; extra == "embeddings"
Provides-Extra: local
Requires-Dist: ollama>=0.1; extra == "local"
Provides-Extra: sbert
Requires-Dist: sentence-transformers>=2.2; extra == "sbert"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Requires-Dist: build; extra == "dev"
Provides-Extra: all
Requires-Dist: fastapi>=0.100; extra == "all"
Requires-Dist: uvicorn>=0.20; extra == "all"
Requires-Dist: openai>=1.0; extra == "all"
Requires-Dist: sentence-transformers>=2.2; extra == "all"
Dynamic: license-file

# Mnemo — Personal Knowledge Graph for Obsidian

[![PyPI version](https://badge.fury.io/py/mnemo-secondbrain.svg)](https://pypi.org/project/mnemo-secondbrain/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)

> Turn your Obsidian vault into a queryable knowledge graph with hybrid search (vector + graph traversal).

## Features

- **Automatic Graph Building** — Parses `[[wikilinks]]`, YAML frontmatter, and tags from your Obsidian vault into a NetworkX knowledge graph
- **Hybrid Search** — Combines vector similarity search with graph-based multi-hop traversal
- **Ontology Classification** — Auto-classifies entities (Person, Concept, Project, Tool, Insight, etc.)
- **Knowledge Collectors** — Web clipping, trust evaluation, and automated knowledge pipeline
- **REST API** — FastAPI server for programmatic access
- **Obsidian Plugin** — Companion plugin for in-vault queries (see `obsidian-plugin/`)
- **CLI Interface** — Full-featured command-line tool for graph operations

## Quick Start

### Installation

```bash
# Core (graph + CLI)
pip install mnemo-secondbrain

# With API server
pip install mnemo-secondbrain[api]

# With sentence-transformers embeddings
pip install mnemo-secondbrain[sbert]

# Everything
pip install mnemo-secondbrain[all]
```

### Configuration

Create a `config.yaml` (see `config.example.yaml`):

```yaml
vault_path: ~/Documents/MyVault
embedding:
  provider: sbert          # or "openai", "ollama"
  model: all-MiniLM-L6-v2
```

Or use environment variables:

| Variable | Description | Example |
|----------|-------------|---------|
| `MNEMO_VAULT_PATH` | Path to your Obsidian vault | `~/Documents/MyVault` |
| `OPENAI_API_KEY` | OpenAI API key (if using OpenAI embeddings) | `sk-...` |

### CLI Usage

```bash
# Build the knowledge graph from your vault
mnemo build

# Search your knowledge graph
mnemo search "machine learning fundamentals"

# Show graph statistics
mnemo stats

# Export graph
mnemo export --format graphml
```

### API Server

```bash
# Start the API server (requires mnemo-secondbrain[api])
mnemo serve --host 0.0.0.0 --port 8000
```

Endpoints:

| Method | Path | Description |
|--------|------|-------------|
| `GET` | `/api/search` | Hybrid search |
| `GET` | `/api/graph/stats` | Graph statistics |
| `GET` | `/api/graph/node/{id}` | Get node details |
| `GET` | `/api/graph/neighbors/{id}` | Get node neighbors |

### Obsidian Plugin

The companion Obsidian plugin lives in `obsidian-plugin/`. See its README for installation instructions. It connects to the Mnemo API server for in-vault search and graph visualization.

## Architecture

```
Obsidian Vault (Markdown + YAML + [[links]])
        ↓  parse
   NetworkX Graph (in-memory)
        ↓  embed
   Vector Index + Graph Index
        ↓  query
   Hybrid Search (vector + graph traversal)
        ↓  rerank
   Results with context
```

## Development

```bash
git clone https://github.com/jini92/MAISECONDBRAIN.git
cd MAISECONDBRAIN
pip install -e ".[dev,all]"
pytest
```

## License

MIT — see [LICENSE](LICENSE).
