Skip to content

Ductor

Status: Active Type: Personal AI assistant — Telegram bot with persistent workspace


What it is

Multi-agent AI system running in Docker (ductor-sandbox). Main agent coordinates sub-agents, cron jobs, webhooks, and tools. Communicates via Telegram.


Architecture

Host: ~/.ductor/  (mounted as /ductor inside container)
  ├── workspace/          — agent working area
  │   ├── tools/          — cron, webhook, media, agent, task, user tools
  │   ├── skills/         — custom skill modules
  │   ├── cron_tasks/     — scheduled task definitions
  │   ├── memory_system/  — MAINMEMORY.md + mem0 semantic memory
  │   └── wiki/           — LLM wiki (this site)
  ├── agents.json         — sub-agent configs + bot tokens
  ├── config/config.json  — runtime config
  ├── sessions.json       — per-chat session state
  └── logs/               — runtime logs

Memory System

Layer Tool Description
Short-term MAINMEMORY.md Flat markdown, always in context
Semantic mem0 (qdrant + MiniLM-L6) Vector search over memories
Compiled Wiki (this site) Structured, cross-referenced knowledge

Local ML Models (6)

Cached at /ductor/.cache/huggingface/hub, accessible via tools/ml_tools.py:

  • analyze_sentiment — positive/negative/neutral
  • extract_entities — ORG/PER/LOC/MISC
  • translate_id_en — Indonesian to English
  • summarize — condense long text
  • classify_zero_shot — custom labels without retraining
  • answer_question — extractive Q&A

Cron Jobs (personality)

Job Schedule Description
ductor-pulse 09:00/14:00/20:00 WIB Proactive check-ins, jokes, voice notes
ductor-reader 03:00 WIB Autonomous reading — philosophy, finance, tech

Infrastructure

  • Git: GIT_CONFIG_GLOBAL=/ductor/.gitconfig (Muhammad Tsaqif Mukhayyar)
  • GitHub: gh CLI authenticated as mukhayyar
  • Cloudflare: API token in /ductor/.env
  • S3: IDCloudHost primary, Cloudflare R2 fallback
  • Google: gws CLI authenticated as [email protected]