Skip to content

Fawzy-AI-Explorer/ObsidianMate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

301 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ObsidianMate Logo

ObsidianMate 🧠✨

Python FastAPI Google ADK License

ObsidianMate is an intelligent, AI-powered assistant designed to supercharge your Obsidian note-taking workflow. Leveraging the power of Large Language Models (LLMs) like Gemini and GPT-4o, it acts as a "second brain" that helps you organize thoughts, summarize conversations, and interact directly with your Obsidian vault.


πŸ“– Table of Contents


🧐 Project Overview

Problem Statement

Managing a growing knowledge base in Obsidian can be overwhelming. Users often struggle to quickly summarize discussions, organize unstructured thoughts into structured notes, and interact with their vault without breaking their flow.

Solution Statement

ObsidianMate provides a unified AI agent interface that integrates directly with your workflow. It can hold conversations, filter irrelevant information, generate smart notes, and perform actions within your Obsidian vault using the Model Context Protocol (MCP).

Value Statement

  • Boost Productivity: Automate the tedious process of summarizing and formatting notes.
  • Seamless Integration: Interact with your vault using natural language.
  • Flexible AI: Powered by Google's ADK, supporting multiple LLM backends.

πŸš€ Features

  • πŸ€– Intelligent Chat Agent: A general-purpose assistant capable of answering questions and helping with brainstorming.
  • πŸ“ Smart Notes Pipeline: Automatically filters irrelevant chit-chat from conversations and summarizes key points into clean, Markdown-formatted notes.
  • πŸ“‚ Obsidian Integration: Directly interacts with your Obsidian vault to read and manage notes (powered by MCP).
  • πŸ“Ί YouTube Transcript Support: Extract transcripts from YouTube videos for summarization and analysis.
  • 🎨 Excalidraw Support (Coming Soon): Future integration for handling visual notes and diagrams.

πŸ— Architecture

ObsidianMate is built on a modular agentic architecture using the Google Agent Development Kit (ADK).

  1. Root Agent (ObsidianMate Agent): The main entry point that orchestrates tasks.
  2. Sub-Agents: Specialized agents for specific tasks:
    • Chat Agent: Handles general queries.
    • Smart Notes Agent: Processes and summarizes text.
    • Obsidian Interaction Agent: Manages vault operations via MCP.
    • YouTube Transcript Agent: Extracts transcripts from YouTube videos.
  3. Tools & MCP: Uses the Model Context Protocol to securely connect to external tools like the Obsidian API and Dockerized services.
  4. Backend: A robust FastAPI server manages sessions and API endpoints.
obsidian_agents

πŸ“‚ Project Structure

ObsidianMate/
β”œβ”€β”€ config/             # Configuration files (YAML)
β”œβ”€β”€ docker/             # Docker configurations for MCP servers
β”œβ”€β”€ scripts/            # Helper scripts for setup and running
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ controllers/    # Business logic controllers
β”‚   β”œβ”€β”€ core/           # Core agent logic and tools
β”‚   β”‚   β”œβ”€β”€ obsidian_mate/
β”‚   β”‚   β”‚   β”œβ”€β”€ agent.py        # Root agent definition
β”‚   β”‚   β”‚   └── sub_agents/     # Specialized sub-agents
β”‚   β”‚   └── tools/              # Tool implementations
β”‚   β”œβ”€β”€ models/         # Data models and enums
β”‚   β”œβ”€β”€ routes/         # FastAPI route definitions
β”‚   β”œβ”€β”€ stores/         # Data storage and LLM templates
β”‚   └── utils/          # Utility functions
β”œβ”€β”€ main.py             # Application entry point
β”œβ”€β”€ pyproject.toml      # Project metadata and build config
└── requirements.txt    # Python dependencies

πŸ›  Installation

Prerequisites

  • Python 3.12 or higher
  • Docker (for MCP servers)
  • An Obsidian Vault

Steps

  1. Clone the Repository

    git clone https://github.com/Fawzy-AI-Explorer/ObsidianMate.git
    cd ObsidianMate
  2. Set up a Virtual Environment

    python3 -m venv .venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
  3. Install Dependencies

    pip install -r requirements.txt
  4. Configuration

    • Ensure you have your GOOGLE_API_KEY and OBSIDIAN_API_KEY set in your environment or configuration files.
    • Check config/config.yaml for application settings.
  5. Start MCP Servers (Docker)

    The project uses Docker containers for MCP servers (Obsidian and YouTube Transcript).

    cd docker
    cp .env.example .env  # Configure your keys in .env
    docker-compose up -d
    cd ..

πŸ’» Usage

Running the API Server

You can start the FastAPI server using the provided script:

sh scripts/run_app.sh

This will start the server at http://0.0.0.0:8000.

Running with ADK Web

To use the Google ADK visual interface for testing and debugging agents:

adk web

Essential Tools and Utilities

  • Docker: Used to run the Obsidian MCP server. Ensure Docker is running before starting the agent if you plan to use vault interactions.
  • Google ADK: The core framework driving the agent's behavior.

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the project.
  2. Create your feature branch (git checkout -b feature/AmazingFeature).
  3. Commit your changes (git commit -m 'Add some AmazingFeature').
  4. Push to the branch (git push origin feature/AmazingFeature).
  5. Open a Pull Request.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ‘₯ Contributors

Thanks to all the amazing people who have contributed to this project!


πŸ‘ Acknowledgments

Special thanks to the open-source community and the teams behind FastAPI, Google ADK, and Obsidian.

About

AI second brain that converts chat & media to clean Markdown notes and manages your Obsidian vault using natural language.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors