Logbot: Infrastructure plugins (Archive + Cron + Git) #3
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Competitor
Kind/Documentation
Kind/Enhancement
Kind/Epic
Kind/Feature
Kind/Security
Kind/Story
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Scope/Core
Scope/Cross-Plugin
Scope/Plugin-System
Scope/Single-Plugin
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
ultanio/cobot#3
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Three "mechanism, not policy" plugins that compose into a logbot — a cobot instance that logs channel messages without needing an LLM.
Plugins
Archive
archive.write(channel, timestamp, data)interfacearchive.on_writeCron
cron.register("name", "*/12 * * *", callback)cron.on_tickheartbeatGit
git.commit_and_push(paths, message)as reusable serviceComposition
Other Scenarios
Open Question
No-LLM mode: How should cobot run without an LLM provider? Options:
mode: passivein configagent.respondbecomes no-op when no LLM plugin registeredDepends on #2 (session observers)
Additional Details from Design Discussion (2026-02-13)
Telegram Plugin Architecture
The telegram plugin exposes extension points for downstream plugins:
Full Data Flow
Message Context (passed to extension points)
External Plugin: cobot-telegram
Telegram plugin lives in separate repo to keep core minimal:
bridio/cobot-telegrampip install git+https://github.com/bridio/cobot-telegrampython-telegram-botlibraryWizard Integration
Plugins can contribute to
cobot wizard initvia:wizard_section()- describes the plugin for the wizardwizard_configure(config)- interactive setup returning config dictDetails from Telegram discussion 2026-02-13, filed by Doxios 🦊
Architecture Review: Logbot Infrastructure Plugins
Verdict: APPROVE (with minor revisions)
This proposal aligns well with Cobot's plugin architecture. The "mechanism, not policy" approach is exactly right.
✅ What Works Well
archive.on_writefollows the pattern established byfiledrop.before_write📋 Suggested Plugin Structure
🔌 Interface Proposal
Add to
interfaces.py:🛠 Implementation Notes
Archive Plugin:
Config schema:
format(jsonl|markdown|csv),rotation(daily|hourly|none),base_pathCron Plugin:
Use
croniterlibrary for cron expression parsing. Run background asyncio task.Git Plugin:
Config:
repo_path,auto_push,remote(default: origin)❓ Open Questions
mode: passivein config. The agent loop should check for LLM capability and skiprespond()if none exists. Simpler than special-casing everywhere.Cron asyncio integration: Needs careful design. Suggestion:
CronPlugin.start()spawns a background task, but usesasyncio.create_task()or threading depending on whether agent runs async.Dependency on #2: Session observers aren't strictly required for v1. Archive can hook
on_message_receiveddirectly. Session observers would be a nice-to-have for cleaner separation.📦 External Telegram Plugin
Agreed that Telegram should be in a separate repo (
bridio/cobot-telegram). The extension points design from @doxios's comment is solid —telegram.on_message,telegram.on_mediaetc. follow the established pattern.Summary
mode: passiveReady to implement once interfaces are finalized.
Reviewed by Cobot Plugin Architecture Reviewer 🔌
🔄 Status Update: Cron Plugin Merged
The cron plugin has been implemented and merged via #35 and #42. Here's how it relates to this issue:
✅ Cron Plugin — DONE
Implemented in
cobot/plugins/cron/:What was proposed:
What was implemented:
Key differences:
add_job()API exists for dynamic registration)isolated(spawns subagent) andmain_session(injects into main loop)For the logbot use case, we'd need to extend cron to support:
This is a small addition — I can add
mode: directthat calls a plugin method directly.🔲 Archive Plugin — NOT YET IMPLEMENTED
Still needed:
Config:
🔲 Git Plugin — NOT YET IMPLEMENTED
Still needed:
Config:
🔲 No-LLM Mode — NOT YET IMPLEMENTED
For logbot to work without an LLM, we need:
Proposal: Split This Issue
This issue covers 4 things. I suggest:
mode: directfor callback-style jobs (#XX)Or we can keep this open as a tracking issue for the "logbot" pattern.
What do you prefer?
Updated by Doxios 🦊
✅ Issue Split Complete
This issue has been split into focused issues:
The logbot pattern can be implemented once #44, #45, #46, and #47 are complete.
Closing this issue as the work is now tracked separately.