Metadata-Version: 2.4
Name: re.md
Version: 1.1.2
Summary: Re.mind - Context management CLI
Author-email: Carlos Paniagua <carlosgpp@proton.me>
License: AGPL-3.0
Project-URL: Homepage, https://github.com/cgpp5/Re.mind
Project-URL: Repository, https://github.com/cgpp5/Re.mind
Project-URL: Bug Tracker, https://github.com/cgpp5/Re.mind/issues
Keywords: markdown,context,notebook,cli,knowledge-management,obsidian,pkm
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
Classifier: Operating System :: OS Independent
Classifier: Environment :: Console
Classifier: Topic :: Utilities
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# 🧠 Re.mind

**Re.mind is a context management CLI that lets users funnel conversational and technical data into a local Markdown vault, empowering LLMs to ground their responses by extracting exactly the information they need.**

[![PyPI version](https://img.shields.io/pypi/v/re.md.svg)](https://pypi.org/project/re.md/)
[![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)

It transforms raw conversational data from ChatGPT, Claude, Gemini or Copilot into structured documents that can then be edited with tools like ObsidianMD. It creates a semantic index that AI agents can use to query documentation with millimeter precision without the need to copy and paste files to multiple locations.

---

## 🚀 Key Features

* **100% Local:** Your data lives on your hard drive (`Re.mind vault/`).
* **Simplicity:** Based on Markdown and 100% compatible with Obsidian.
* **Semantic Navigation (Dot Notation):** Access any heading or knowledge block using efficient logical paths (`project.folder.file.heading`).
* **Hybrid Tagging System:** Native support for inline `#hashtags` that are automatically indexed globally.
* **Context Friendly:** Designed for an LLM to extract exact context blocks on demand, reducing token consumption.

---

## 📦 Installation

Re.mind is written in Python and distributed via PyPI. It requires Python 3.9 or higher.

```bash
pip install re.md
```

---

## 🛠️ Workflow and Commands

The core loop of Re.mind is encapsulated in writing (ingestion and indexing) and reading (querying and extraction).

### 1. Installation

* **`remind install`**
  Sets up the Re.mind vault base directory and deploys the `.agents/skills/remind/SKILL.md` file.
  ```bash
  $ remind install
  ```
* **`remind config --set-vault <path>`**
  Configures a custom location for your Re.mind vault globally. The CLI will remember this path across all your terminal sessions. It accepts both absolute and relative paths.
  ```bash
  $ remind config --set-vault "~/My_Custom_Vault"
  $ remind config --set-vault "./local_vault"
  ```
  
### 2. Data Management (Write)
  
* **`remind init <name>`**
  Initializes a new project notebook in your Vault. Creates the technical structure (`.remind/`) and generates the unique project hash.
  ```bash
  $ remind init "Trading Bot"
  ```

* **`remind import`**
  Scans the global `import/` folder looking for `.csv` or `.json` exports (Google Takeout, Copilot, Claude or OpenAI) and generates clean, chronologically structured Markdown notebooks in a temporary inbox (`_Inbox_`). Smartly avoids duplicates.
  ```bash
  $ remind import
  ```

* **`remind index [project_hash]`**
  The core engine. Scans the folder structure, detects blocks, extracts inline hashtags (e.g., `#architecture`), and rebuilds the semantic map (`map.index`) and the auxiliary coordinate files (`sidecars`). 
  *Note: Always run this after manually reorganizing or editing your Markdown files in Obsidian.*
  ```bash
  $ remind index tradinbot4a2
  ```

* **`remind write [logical_path[ --file <temp_file>`**
  Creates a new node or overwrites an existing one. It requires a path to a temporary file containing the content to ensure 100% reliability with multi-line strings and special characters.

* **`remind append [logical_path[ --file <temp_file>`**
  Appends content from a temporary file to the end of an existing node. This is the most efficient way to update large documents without rewriting the entire file.

### 3. Query and Extraction (Read)

* **`remind map [logical_path]`**
  Displays a visual tree with the structure of the indexed knowledge. With no arguments, it shows the global state of the Vault.
  ```bash
  $ remind map tradinbot4a2.fe
  ```

* **`remind tag <hash> list`** | **`remind tag <hash> <tag>`**
  Transversal search system. Lists all tags in a project sorted by popularity, or searches for a specific tag, returning the exact paths of the documents that contain it.
  ```bash
  $ remind tag tradinbot4a2 list
  $ remind tag tradinbot4a2 architecture
  ```

* **`remind me <paths>`**
  The key command for knowledge extraction. Breaks through the index layer to go directly to the hard drive and spit out the exact text via the terminal. Supports brace expansion `{}` syntax to extract multiple nodes simultaneously.
  ```bash
  $ remind me tradinbot4a2.fe.spec.{fsadx1a,fsbol2b}
  ```

---

## 🏗️ Internal Architecture

Re.mind abstracts complexity through a system of short names (Slugs) and a coordinate map (Sidecars).

Every Markdown file has a hidden twin JSON file in the `.remind/sidecars/` folder. This file acts as a spatial coordinate system: it maps the exact start and end lines of every heading and the tags the document contains, allowing the `remind me` command to extract surgical snippets without having to parse heavy text files in real-time.

---

## 🤝 Contributing

If you want to collaborate, clone the repository and install it in editable mode:

```bash
git clone https://github.com/cgpp5/Re.mind.git
cd Re.mind
pip install -e .
```

---

## 📄 License

This project is licensed under the GNU Affero General Public License v3.0. See the `LICENSE` file for details.
