PyRunner
A self-hosted Python script automation platform. Upload a script, schedule it, monitor it — nothing else to configure
File Explorer
Download Latest Version (.zip)- bug_report.yml
- config.yml
- feature_request.yml
- ci.yml
- dependabot.yml
- PULL_REQUEST_TEMPLATE.md
- __init__.py
- base.py
- local.py
- sandboxed.py
- __init__.py
- migrate_db.py
- plugin_apply_restart.py
- plugin_doctor.py
- plugin_preflight.py
- plugin_uninstall.py
- pyrunner_qcluster.py
- restart_workers.py
- restore_backup.py
- sandbox_check.py
- seed_example_plugin.py
- setup.py
- setup_default_env.py
- __init__.py
- 0001_initial.py
- 0002_add_scheduling_models.py
- 0003_add_package_operation.py
- 0004_secret.py
- 0005_add_webhook_token.py
- 0006_notification_settings.py
- 0007_phase7_settings.py
- 0008_worker_heartbeat.py
- 0009_script_archive.py
- 0010_globalsettings_setup_completed.py
- 0011_registration_and_invites.py
- 0012_password_reset_token.py
- 0013_add_tags.py
- 0014_worker_settings.py
- 0015_datastore.py
- 0016_globalsettings_admin_url_slug.py
- 0017_datastore_api_token.py
- 0018_add_weekly_monthly_schedule.py
- 0019_s3_storage_settings.py
- 0020_s3_backup_schedule.py
- 0021_field_updates.py
- 0022_claude_settings.py
- 0023_claude_usage.py
- 0024_recaptcha_settings.py
- 0025_globalsettings_update_checked_at_and_more.py
- 0026_run_pid.py
- 0027_plugin.py
- 0028_workspace_seam.py
- 0029_workspace_backfill.py
- 0030_workspace_membership.py
- 0031_membership_backfill.py
- 0032_datastore_per_workspace_unique.py
- 0033_secret_per_workspace_unique.py
- 0034_apitoken_workspace.py
- 0035_backfill_null_scoped_workspaces.py
- 0036_sandbox_isolation_settings.py
- 0037_sandbox_policy_hierarchy.py
- 0038_plugin_ownership.py
- 0039_channels_subsystem.py
- 0040_channels_inbound.py
- 0041_pyai_settings.py
- 0042_cache_table.py
- 0043_ai_providers.py
- 0044_remove_date_time_format.py
- 0045_alter_globalsettings_sandbox_capability_and_more.py
- 0046_alter_channel_daily_reply_cap.py
- 0047_s3_backup_size_bigint_and_registration_helptext.py
- 0048_databases.py
- 0049_secret_providers.py
- 0050_api_token_scope.py
- 0051_plugin_public_pages.py
- 0052_script_libraries.py
- 0053_storage_connections.py
- __init__.py
- __init__.py
- ai_provider.py
- api_token.py
- channel.py
- claude_usage.py
- database.py
- datastore.py
- environment.py
- library.py
- package.py
- plugin.py
- public_page.py
- run.py
- schedule.py
- script.py
- secret.py
- secret_provider.py
- settings.py
- storage_connection.py
- tag.py
- user.py
- workspace.py
- __init__.py
- api.py
- __init__.py
- pyrunner_ai.py
- pyrunner_datastore.py
- pyrunner_db.py
- pyrunner_notify.py
- pyrunner_storage.py
- __init__.py
- base.py
- handlers.py
- inbound.py
- telegram.py
- __init__.py
- runtime.py
- tools.py
- __init__.py
- aws_sm.py
- base.py
- cache.py
- custom.py
- doppler.py
- infisical.py
- vault.py
- __init__.py
- backup_schedule_service.py
- backup_service.py
- channel_service.py
- claude_service.py
- dashboard_service.py
- database_explorer.py
- database_service.py
- datastore_service.py
- datastore_token.py
- encryption_service.py
- environment_service.py
- library_service.py
- log_service.py
- notification_service.py
- plugin_doctor.py
- plugin_service.py
- recaptcha_service.py
- retention_service.py
- s3_service.py
- sandbox.py
- schedule_service.py
- setup_service.py
- system_info_service.py
- task_service.py
- update_service.py
- worker_config.py
- __init__.py
- workspace_tags.py
- __init__.py
- api.py
- auth.py
- cpanel.py
- internal.py
- setup.py
- __init__.py
- channels_internal.py
- databases_internal.py
- datastore_internal.py
- datastores.py
- decorators.py
- plugins.py
- storage_internal.py
- __init__.py
- api_tokens.py
- auth.py
- backup.py
- changelog.py
- channel_webhooks.py
- channels.py
- dashboard.py
- databases.py
- datastores.py
- decorators.py
- environments.py
- libraries.py
- logs.py
- ownership.py
- plugins.py
- public_pages.py
- pyai.py
- runs.py
- scripts.py
- secrets.py
- services.py
- settings.py
- setup.py
- tags.py
- tasks.py
- users.py
- webhooks.py
- workspaces.py
- __init__.py
- admin.py
- apps.py
- changelog.py
- context_processors.py
- email.py
- executor.py
- formatting.py
- forms.py
- logging.py
- middleware.py
- ratelimit.py
- tasks.py
- test_ai_providers.py
- test_authz_hardening.py
- test_backup_cli.py
- test_brand_tracker_plugin.py
- test_channels.py
- test_cleanup_finish.py
- test_cleanup_group_b.py
- test_container_stats.py
- test_databases.py
- test_datastore_internal.py
- test_general_settings.py
- test_helper_cutover.py
- test_libraries.py
- test_libraries_plugins.py
- test_libraries_ui.py
- test_nit_cleanups.py
- test_ops_correctness.py
- test_password_validation.py
- test_plugin_api.py
- test_plugin_dev_mode.py
- test_plugin_doctor.py
- test_plugin_metadata.py
- test_plugin_ownership.py
- test_plugin_sdk.py
- test_plugin_secret_attach.py
- test_pyai.py
- test_qdrant_backup_plugin.py
- test_ratelimit.py
- test_restart_workers.py
- test_run_backend.py
- test_run_hardening.py
- test_run_list_errors.py
- test_run_reconciliation.py
- test_sandbox_stage1.py
- test_sandbox_stage2.py
- test_sandbox_stage2b.py
- test_sandbox_stage3.py
- test_schedule_service.py
- test_schedule_timezone_history.py
- test_script_form_defaults.py
- test_sdk_showcase_plugin.py
- test_secret_providers.py
- test_storage.py
- test_superuser_required.py
- test_tenancy_stage0.py
- test_tenancy_stage1.py
- test_tenancy_stage2.py
- test_tenancy_stage3.py
- test_tenancy_stage4.py
- test_tenancy_stage5.py
- test_weekly_monthly.py
- test_workspace_seam.py
- test_youtube_scout_plugin.py
- test_yt_comments_plugin.py
- tests.py
- tz.py
- init-data-db.sh
- plugins.md
- icon.svg
- _field.html
- index.html
- public_report.html
- __init__.py
- api.py
- apps.py
- CHANGELOG.md
- CLAUDE.md
- forms.py
- LICENSE
- plugin.json
- provisioning.py
- README.md
- tests.py
- urls.py
- views.py
- worker_body.py
- index.html
- __init__.py
- apps.py
- plugin.json
- README.md
- urls.py
- views.py
- icon.svg
- index.html
- __init__.py
- apps.py
- CLAUDE.md
- plugin.json
- README.md
- urls.py
- views.py
- icon.svg
- _field.html
- index.html
- __init__.py
- apps.py
- CHANGELOG.md
- CLAUDE.md
- demo_seed.py
- forms.py
- LICENSE
- plugin.json
- provisioning.py
- README.md
- tests.py
- urls.py
- views.py
- worker_body.py
- index.html
- __init__.py
- apps.py
- collector_script.py
- plugin.json
- README.md
- urls.py
- views.py
- icon.svg
- index.html
- __init__.py
- apps.py
- CHANGELOG.md
- CLAUDE.md
- forms.py
- LICENSE
- plugin.json
- provisioning.py
- README.md
- tests.py
- urls.py
- views.py
- worker_body.py
- icon.svg
- _field.html
- index.html
- __init__.py
- apps.py
- CHANGELOG.md
- CLAUDE.md
- forms.py
- LICENSE
- oauth.py
- plugin.json
- provisioning.py
- README.md
- tests.py
- urls.py
- views.py
- worker_body.py
- __init__.py
- README.md
- __init__.py
- asgi.py
- middleware.py
- qconfig.py
- settings.py
- urls.py
- version.py
- wsgi.py
- library_form.js
- script_form.js
- toast.js
- fav.ico
- accept_invite.html
- change_password.html
- forgot_password.html
- invite_invalid.html
- login.html
- reset_password.html
- create.html
- created.html
- list.html
- create.html
- edit.html
- list.html
- create.html
- detail.html
- edit.html
- list.html
- monitor.html
- table.html
- _json_examples.html
- create.html
- detail.html
- edit.html
- entry_create.html
- entry_edit.html
- list.html
- create.html
- detail.html
- edit.html
- list.html
- packages.html
- create.html
- detail.html
- edit.html
- list.html
- revision.html
- detail.html
- list.html
- restarting.html
- upload.html
- chat.html
- _status_badge.html
- detail.html
- list.html
- _form_main.html
- _form_sidebar.html
- create.html
- detail.html
- edit.html
- list.html
- schedule_history.html
- _value_source_fields.html
- create.html
- edit.html
- list.html
- list.html
- usage.html
- create.html
- edit.html
- list.html
- detail.html
- list.html
- members.html
- _owner_filter.html
- _owner_pill.html
- _pagination.html
- _provider_pill.html
- _sidebar.html
- changelog.html
- dashboard.html
- logs.html
- settings.html
- tasks.html
- users.html
- run_completed.html
- run_completed.txt
- test_email.html
- admin_setup.html
- setup.html
- 404.html
- 500.html
- _beta_badge.html
- base.html
- styles.css
- inter-latin-variable.woff2
- Inter-OFL.txt
- jetbrains-mono-latin-variable.woff2
- JetBrainsMono-OFL.txt
- styles.css
- .gitignore
- package-lock.json
- package.json
- postcss.config.js
- tailwind.config.js
- base.html
- __init__.py
- apps.py
- .dockerignore
- .editorconfig
- .env.example
- .gitattributes
- .gitignore
- .pre-commit-config.yaml
- brainstorm.md
- CHANGELOG.md
- CODE_OF_CONDUCT.md
- CONTRIBUTING.md
- docker-compose.coolify.yml
- docker-compose.dev.yml
- docker-compose.postgres.yml
- docker-compose.sandbox-test.yml
- docker-compose.yml
- Dockerfile
- entrypoint.sh
- LICENSE
- manage.py
- pyproject.toml
- README.md
- requirements.txt
- run-local-postgres.ps1
- run-local.ps1
- run-local.sh
- run-plugin-dev.ps1
- SECURITY.md
- yt-analyer.py
# Installation Guide
git clone https://github.com/hassancs91/PyRunner
Downloads the entire project code from GitHub to your computer.
cd PyRunner
Moves into the project folder you just downloaded.
2. Docker
Easy Recommended- 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.
docker compose up -d
Builds and starts all defined containers (server, database, etc.) at once, in the background.
docker run --rm --entrypoint python hasanaboulhasan/pyrunner:latest \
Runs the built image as an actual container.
docker run -d \
Runs the built image as an actual container.
Pulled directly from this repo's README.
3. Node.js
Easycd theme/static_src
This project's files live in a subfolder, so move into it first.
npm install
Downloads and installs the libraries listed in package.json.
npm start
Starts the development/run server.
4. Python
Easypip install -r requirements.txt
Installs the Python libraries listed in requirements.txt (or similar).
python manage.py runserver
Starts the Django development server.
