This article provides a hands-on coding guide to explore nanobot, a lightweight personal AI agent framework. It details recreating core subsystems like the agent loop, tool execution, memory persistence, skills loading, session management, subagent spawning, and cron scheduling. The tutorial uses OpenAI’s gpt-4o-mini and demonstrates building a multi-step research pipeline capable of file operations, long-term memory storage, and concurrent background tasks. The goal is to understand not just how to *use* nanobot, but how to *extend* it with custom tools and architectures.
This article details the creation of 'Stevens', a personal AI assistant built using a single SQLite table to store 'memories' and cron jobs to ingest data and generate daily briefs. It emphasizes a simple architecture leveraging Val.town for hosting and highlights the benefits of broader context for personal AI tools.
An article detailing five lesser-known features of systemd timers, such as single-instance execution, second-resolution timing, monotonic events, manual triggering, and automatic reporting on failing services.
- **systemd Timers**: Modern replacement for cron with more control, flexibility, and higher resolution.
- **One Instance at a Time**: Automatically prevents multiple timer instances from running simultaneously to avoid resource conflicts.
- **Second-Resolution Timing**: Enables one-second resolution (vs. cron's one-minute) by setting `AccuracySec=1` in the timer file.
- **Monotonic Events**: Triggers timers based on system events like boot-up (`OnBootSec`) or clock changes (`OnClockChange`).
- **Manually Trigger Timed Tasks**: Launch timers and services manually for testing (`sudo systemctl start name-of-your.timer` or `name-of-your.service`).
- **Automatically Report on Failing Services**: Use `OnFailure` directive in service files to send notifications upon failure, supporting multiple notification methods (e.g., email, Slack).
- **systemd-analyze Calendar**: Normalizes dates and times for use in `OnCalendar` statements.