
The Librarian is a privacy-first knowledge steward that runs entirely on your own hardware—typically a Raspberry Pi paired with a Meshtastic node. Communities can load their local Library with PDFs, text files, videos, and field guides, then ask questions in natural language over Wi-Fi or the Cyberpony Express mesh. Because everything is offline, the Librarian keeps working when the public internet fails.
Source, issues, and roadmaps live at github.com/High-Desert-Institute/Librarian.
A radically simplified, free, open-source, Meshtastic-focused digital librarian built with just two Python scripts.
Before contributing, please read the relevant styleguide files in styleguides/:
styleguides/README.md - Styleguide overviewstyleguides/cli-development.md - CLI logging and interpretability guidelinesstyleguides/python-cli-development.md - Python-specific CLI development practicesstyleguides/java-cli-development.md - Java-specific CLI development practicesThen follow the application-specific requirements found in project-specification.md.
The Librarian is a radically simplified self-contained, off-grid digital assistant designed to operate on a Raspberry Pi 5. It consists of just two Python scripts that work together through CSV message files.
Script 1: message_monitor.py - Monitors Meshtastic radio and logs all messages to CSV files
Script 2: response_generator.py - Monitors CSV files and generates responses for librarian mentions
Librarian/
├── AGENTS.md # Redirects to README.md for agent orientation
├── project-specification.md # Detailed technical specification and requirements
├── project-roadmap.md # Simplified development roadmap
├── social-context.md # Social context, partnerships, and community impact
├── README.md # This file - project overview and current status
├── message_monitor.py # Message monitoring script
├── response_generator.py # Response generation script
├── requirements.txt # Python dependencies
├── messages/ # CSV files organized by radio hardware ID
│ ├── radio_001/ # Radio hardware ID directory
│ │ ├── dm_user123.csv # Direct message chat
│ │ ├── group_decomp25.csv # Group chat
│ │ └── ...
│ ├── radio_002/ # Second radio hardware ID
│ │ └── ...
│ └── ...
├── logs/ # Log files
│ ├── message_monitor.log
│ └── response_generator.log
└── styleguides/ # Development style guides
├── README.md # Styleguide overview
├── cli-development.md # CLI logging and interpretability guidelines
├── java-cli-development.md # Java-specific CLI development practices
└── python-cli-development.md # Python-specific CLI development practices
The project has been radically simplified to focus on core functionality with maximum transparency and debuggability.
project-roadmap.md)The immediate next steps include:
message_monitor.py with Meshtastic integrationresponse_generator.py with CSV monitoringThe simplified development plan is detailed in project-roadmap.md, which includes:
The simplified system consists of just two key components:
message_monitor.py): USB serial communication with LoRa radio, logs all messages to CSV filesresponse_generator.py): Monitors CSV files, detects DMs and “librarian” mentions, generates responses via local chatbotmessages/{hardware_id}/state, timestamp, sender, message, message_id, chat_type, chat_idOnce development is complete, installation will be:
pip install -r requirements.txtpython message_monitor.py (terminal 1)python response_generator.py (terminal 2)Both scripts follow CLI-first development principles:
Message Monitor Commands:
python message_monitor.py # Normal operation
python message_monitor.py --test # Simulation mode
python message_monitor.py --status # Show system status
Response Generator Commands:
python response_generator.py # Normal operation
python response_generator.py --test # Simulation mode
python response_generator.py --status # Show system status
Both scripts can run in simulation mode for testing without hardware:
message_monitor.py --test creates test CSV files with sample messagesresponse_generator.py --test processes test messages and generates responsesmessage_monitor.log and response_generator.logBefore contributing, please read the styleguides listed at the top of this README and the detailed technical requirements in project-specification.md.
CRITICAL: Always update this README.md file whenever:
This README.md serves as the primary human-readable documentation and must remain current with all project changes. It should include:
project-specification.md: Complete technical specification (simplified architecture)project-roadmap.md: Simplified development timeline (5 phases)social-context.md: Social context, partnerships, and community impactstyleguides/: Development best practicesThis project is free and open-source. See the project specification for licensing details.
For questions about the project, please refer to the project specification and roadmap documents. The project follows a simplified development approach with clear phases and milestones.
Last updated: December 2024 Current phase: Simplified Architecture Planning Next milestone: Phase 1.1 - Message Monitor Script Implementation