ductor
Control Claude Code, Codex CLI and Gemini CLI from Telegram. Live streaming, persistent memory, cron jobs, webhooks, Docker sandboxing.
File Explorer
Download Latest Version (.zip)- 1-bug-report.yml
- 2-feature-request.yml
- config.yml
- malice-scan.sh
- publish.yml
- security-audit.yml
- ductor-quick-actions.jpeg
- ductor-start.jpeg
- api.md
- background.md
- bot.md
- bus.md
- cleanup.md
- cli.md
- cli_commands.md
- config_reload.md
- cron.md
- files.md
- heartbeat.md
- infra.md
- logging.md
- matrix.md
- messenger.md
- multiagent.md
- orchestrator.md
- security.md
- service_management.md
- session.md
- setup_wizard.md
- skill_system.md
- supervisor.md
- tasks.md
- text.md
- webhook.md
- workspace.md
- architecture.md
- automation.md
- config.md
- developer_quickstart.md
- installation.md
- matrix-setup.md
- README.md
- slack-setup.md
- system_overview.md
- RULES-all-clis.md
- RULES-claude-only.md
- RULES-codex-only.md
- RULES-gemini-only.md
- RULES-all-clis.md
- RULES-claude-only.md
- RULES-codex-only.md
- RULES-gemini-only.md
- MAINMEMORY.md
- RULES.md
- RULES.md
- output-patterns.md
- workflows.md
- init_skill.py
- package_skill.py
- quick_validate.py
- LICENSE.txt
- SKILL.md
- RULES.md
- RULES.md
- RULES.md
- ask_agent.py
- ask_agent_async.py
- create_agent.py
- edit_shared_knowledge.py
- list_agents.py
- remove_agent.py
- RULES.md
- _shared.py
- cron_add.py
- cron_edit.py
- cron_list.py
- cron_remove.py
- cron_time.py
- RULES-all-clis.md
- RULES-claude-only.md
- RULES-codex-only.md
- RULES-gemini-only.md
- file_info.py
- list_files.py
- process_video.py
- read_document.py
- RULES.md
- transcribe_audio.py
- _shared.py
- ask_parent.py
- cancel_task.py
- create_task.py
- delete_task.py
- list_tasks.py
- resume_task.py
- RULES.md
- RULES.md
- _shared.py
- RULES-all-clis.md
- RULES-claude-only.md
- RULES-codex-only.md
- RULES-gemini-only.md
- webhook_add.py
- webhook_edit.py
- webhook_list.py
- webhook_remove.py
- webhook_rotate_token.py
- webhook_test.py
- _tool_shared.py
- RULES.md
- JOIN_NOTIFICATION.md
- RULES.md
- RULES.md
- __init__.py
- crypto.py
- server.py
- __init__.py
- models.py
- observer.py
- __init__.py
- adapters.py
- bus.py
- cron_sanitize.py
- envelope.py
- lock_pool.py
- __init__.py
- observer.py
- __init__.py
- _log_redact.py
- antigravity_cache.py
- antigravity_cache_observer.py
- antigravity_discovery.py
- antigravity_events.py
- antigravity_provider.py
- antigravity_runtime.py
- auth.py
- base.py
- claude_provider.py
- coalescer.py
- codex_cache.py
- codex_cache_observer.py
- codex_discovery.py
- codex_events.py
- codex_provider.py
- executor.py
- factory.py
- gemini_cache.py
- gemini_cache_observer.py
- gemini_events.py
- gemini_provider.py
- gemini_utils.py
- grok_cache.py
- grok_cache_observer.py
- grok_discovery.py
- grok_events.py
- grok_provider.py
- init_wizard.py
- model_cache.py
- param_resolver.py
- process_registry.py
- service.py
- stream_events.py
- timeout_controller.py
- types.py
- __init__.py
- agents.py
- api_cmd.py
- docker.py
- install.py
- lifecycle.py
- service.py
- status.py
- __init__.py
- dependency_queue.py
- execution.py
- manager.py
- observer.py
- __init__.py
- allowed_roots.py
- browser.py
- image_processor.py
- prompt.py
- storage.py
- tags.py
- __init__.py
- observer.py
- chat.toml
- cli.toml
- commands.toml
- wizard.toml
- chat.toml
- cli.toml
- commands.toml
- wizard.toml
- chat.toml
- cli.toml
- commands.toml
- wizard.toml
- chat.toml
- cli.toml
- commands.toml
- wizard.toml
- chat.toml
- cli.toml
- commands.toml
- wizard.toml
- chat.toml
- cli.toml
- commands.toml
- wizard.toml
- chat.toml
- cli.toml
- commands.toml
- wizard.toml
- chat.toml
- cli.toml
- commands.toml
- wizard.toml
- __init__.py
- check.py
- loader.py
- __init__.py
- atomic_io.py
- base_observer.py
- base_task_observer.py
- boot_id.py
- docker.py
- docker_extras.py
- env_secrets.py
- file_watcher.py
- fs.py
- inflight.py
- install.py
- json_store.py
- pidlock.py
- platform.py
- process_tree.py
- recovery.py
- restart.py
- service.py
- service_base.py
- service_linux.py
- service_logs.py
- service_macos.py
- service_windows.py
- startup_state.py
- task_runner.py
- updater.py
- version.py
- __init__.py
- bot.py
- buttons.py
- credentials.py
- file_browser.py
- formatting.py
- id_map.py
- media.py
- message_queue.py
- sender.py
- startup.py
- streaming.py
- transport.py
- typing.py
- __init__.py
- bot.py
- id_map.py
- sender.py
- startup.py
- streaming.py
- transport.py
- logo_text.png
- welcome.png
- __init__.py
- abort.py
- app.py
- buttons.py
- callbacks.py
- chat_tracker.py
- dedup.py
- edit_streaming.py
- file_browser.py
- formatting.py
- handlers.py
- media.py
- message_dispatch.py
- middleware.py
- sender.py
- startup.py
- streaming.py
- topic.py
- transport.py
- typing.py
- upgrade_handler.py
- welcome.py
- __init__.py
- callback_router.py
- commands.py
- multi.py
- notifications.py
- protocol.py
- registry.py
- send_opts.py
- __init__.py
- bus.py
- commands.py
- health.py
- internal_api.py
- models.py
- registry.py
- shared_knowledge.py
- stack.py
- supervisor.py
- __init__.py
- cron_selector.py
- model_selector.py
- models.py
- session_selector.py
- task_selector.py
- utils.py
- __init__.py
- commands.py
- core.py
- directives.py
- flows.py
- hooks.py
- injection.py
- lifecycle.py
- memory_flush.py
- observers.py
- providers.py
- registry.py
- __init__.py
- content.py
- paths.py
- __init__.py
- key.py
- manager.py
- named.py
- __init__.py
- hub.py
- models.py
- registry.py
- __init__.py
- response_format.py
- __init__.py
- quiet_hours.py
- __init__.py
- auth.py
- manager.py
- models.py
- observer.py
- server.py
- __init__.py
- cron_tasks.py
- init.py
- loader.py
- paths.py
- project_roots.py
- rules_selector.py
- skill_sync.py
- __init__.py
- __main__.py
- _banner.txt
- commands.py
- config.py
- config_reload.py
- errors.py
- log_context.py
- logging_config.py
- run.py
- __init__.py
- test_crypto.py
- test_server_e2e.py
- test_server_files.py
- __init__.py
- test_observer.py
- __init__.py
- test_adapters.py
- test_bus.py
- test_envelope.py
- test_interagent_inject_rr18.py
- test_lock_pool.py
- test_observers_wire.py
- test_transport_routing.py
- __init__.py
- test_observer.py
- __init__.py
- test_antigravity_discovery.py
- test_antigravity_provider.py
- test_auth.py
- test_auth_extended.py
- test_claude_provider.py
- test_coalescer.py
- test_coalescer_extended.py
- test_codex_cache.py
- test_codex_cache_observer.py
- test_codex_discovery.py
- test_codex_events.py
- test_codex_provider.py
- test_docker_wrap.py
- test_env_injection.py
- test_executor_timeout.py
- test_factory.py
- test_gemini_cache.py
- test_gemini_cache_observer.py
- test_gemini_events.py
- test_gemini_provider.py
- test_gemini_utils.py
- test_grok_discovery.py
- test_grok_provider.py
- test_init_wizard.py
- test_install.py
- test_log_redact.py
- test_param_resolver.py
- test_parse_response.py
- test_process_registry.py
- test_providers.py
- test_service.py
- test_service_extended.py
- test_stream_events.py
- test_timeout_controller.py
- test_transcription_env.py
- test_types.py
- __init__.py
- test_backward_compatibility_integration.py
- test_cli_parameters_config.py
- test_timeout_config.py
- __init__.py
- test_cron_add_tool.py
- test_cron_edit_tool.py
- test_cron_remove_tool.py
- test_cron_routing.py
- test_dependency_queue.py
- test_execution.py
- test_execution_params.py
- test_manager.py
- test_manager_schema.py
- test_observer.py
- test_observer_params.py
- __init__.py
- test_allowed_roots.py
- test_image_processor.py
- test_prompt.py
- test_storage.py
- test_tags.py
- __init__.py
- conftest.py
- test_flow.py
- test_heartbeat_targets.py
- test_observer.py
- __init__.py
- test_loader.py
- test_matrix_report.py
- __init__.py
- conftest.py
- test_atomic_io.py
- test_boot_id.py
- test_docker.py
- test_docker_extras.py
- test_docker_mounts.py
- test_docker_published_ports.py
- test_env_secrets.py
- test_inflight.py
- test_install.py
- test_pidlock.py
- test_recovery.py
- test_restart.py
- test_service.py
- test_service_linux.py
- test_service_macos.py
- test_service_windows.py
- test_startup_state.py
- test_task_runner.py
- test_updater.py
- test_version.py
- __init__.py
- test_cli_parameter_flow.py
- test_cron_quiet_hours.py
- test_cron_with_overrides.py
- test_webhook_quiet_hours.py
- __init__.py
- test_buttons.py
- test_credentials.py
- test_formatting.py
- test_group_mention.py
- test_id_map.py
- test_media.py
- test_notification_routing.py
- test_sender.py
- test_streaming.py
- test_transport.py
- __init__.py
- test_bot.py
- test_id_map.py
- test_sender.py
- test_transport.py
- __init__.py
- test_abort.py
- test_app.py
- test_buttons.py
- test_channel_whitelist.py
- test_chat_tracker.py
- test_dedup.py
- test_edit_streaming.py
- test_file_browser.py
- test_formatting.py
- test_handlers.py
- test_media.py
- test_message_dispatch.py
- test_middleware.py
- test_notification_routing.py
- test_response_format.py
- test_sender.py
- test_startup_lifecycle.py
- test_stream_factory.py
- test_streaming.py
- test_topic.py
- test_transport.py
- test_typing.py
- test_welcome.py
- __init__.py
- test_commands.py
- test_multi.py
- test_registry.py
- __init__.py
- test_async_reply_to_silent.py
- test_bus.py
- test_commands.py
- test_health.py
- test_internal_api.py
- test_models.py
- test_registry.py
- test_shared_knowledge.py
- test_supervisor.py
- __init__.py
- conftest.py
- test_codex_cache_integration.py
- test_commands.py
- test_core.py
- test_core_provider_info.py
- test_cron_selector.py
- test_directives.py
- test_error_no_reset.py
- test_flows.py
- test_hooks.py
- test_injection.py
- test_interagent.py
- test_memory_flush.py
- test_model_selector.py
- test_optional_model_observers.py
- test_providers.py
- test_registry.py
- test_scene.py
- test_selector_utils.py
- test_upgrade.py
- __init__.py
- test_content.py
- test_paths.py
- test_paths_extended.py
- __init__.py
- test_key.py
- test_manager.py
- test_manager_extended.py
- test_migration.py
- test_named_recovery.py
- test_provider_isolation.py
- test_provider_sessions.py
- __init__.py
- test_api_endpoints.py
- test_hub.py
- test_models.py
- test_priority.py
- test_registry.py
- __init__.py
- test_normalize_tool_name.py
- test_notification_formatters.py
- test_technical_footer.py
- __init__.py
- test_quiet_hours.py
- __init__.py
- conftest.py
- test_auth.py
- test_flow.py
- test_manager.py
- test_models.py
- test_models_schema.py
- test_observer.py
- test_observer_overrides.py
- test_server.py
- test_tool_validation.py
- __init__.py
- test_cron_tasks.py
- test_init.py
- test_loader.py
- test_paths.py
- test_paths_extended.py
- test_project_roots.py
- test_rule_docs.py
- test_rule_sync.py
- test_rules_selector.py
- test_skill_sync.py
- test_transcribe_tool.py
- test_zone2_tools.py
- __init__.py
- conftest.py
- test_commands.py
- test_config.py
- test_config_reload.py
- test_errors.py
- test_integration.py
- test_logging_config.py
- test_main.py
- test_matrix_message_queue.py
- test_run.py
- .gitignore
- .pre-commit-config.yaml
- AGENTS.md
- CLAUDE.md
- config.example.json
- Dockerfile.sandbox
- GEMINI.md
- justfile
- LICENSE
- llms.txt
- pyproject.toml
- README.md
- run_tests_debug.sh
- uv.lock
# Installation Guide
git clone https://github.com/PleasePrompto/ductor
Downloads the entire project code from GitHub to your computer.
cd ductor
Moves into the project folder you just downloaded.
2. Official Install Script
Easy Recommended- pipx Installs Python-based CLI tools into isolated environments.
pipx install ductor # or: uv tool install ductor
Installs the CLI tool into an isolated environment via pipx.
Pulled directly from this repo's README.
3. Docker
Easy- Git Needed to download the project code from GitHub.
- Docker Desktop Needed to build and run containers. Install it and keep it running in the background.
ductor docker enable # Enable Docker sandbox
Type this command into your terminal and run it.
ductor docker rebuild # Rebuild sandbox container
Type this command into your terminal and run it.
ductor docker mount /p # Add host mount
Type this command into your terminal and run it.
ductor docker extras # List optional sandbox packages
Type this command into your terminal and run it.
Pulled directly from this repo's README.
4. Python
Easypip install .
Installs the package published on PyPI directly β no need to clone the source.
python <μ€νν νμΌλͺ
>.py # READMEμμ μ νν μ€ν νμΌλͺ
μ νμΈνμΈμ
Runs the Python script (or module).
