MCPcopy Index your code
hub / github.com/dkron-io/dkron

github.com/dkron-io/dkron @v4.1.1 sqlite

repository ↗ · DeepWiki ↗ · release v4.1.1 ↗
10,957 symbols 35,056 edges 183 files 639 documented · 6%
README

Dkron

Dkron - Distributed, fault tolerant job scheduling system for cloud native environments GoDoc Actions Status Gitter Gurubase

Website: http://dkron.io/

Dkron is a distributed cron service, easy to setup and fault tolerant with focus in:

  • Easy: Easy to use with a great UI
  • Reliable: Completely fault tolerant
  • Highly scalable: Able to handle high volumes of scheduled jobs and thousands of nodes

Dkron is written in Go and leverage the power of the Raft protocol and Serf for providing fault tolerance, reliability and scalability while keeping simple and easily installable.

Dkron is inspired by the google whitepaper Reliable Cron across the Planet and by Airbnb Chronos borrowing the same features from it.

Dkron runs on Linux, OSX and Windows. It can be used to run scheduled commands on a server cluster using any combination of servers for each job. It has no single points of failure due to the use of the Gossip protocol and fault tolerant distributed databases.

You can use Dkron to run the most important part of your company, scheduled jobs.

Installation

Installation instructions

Full, comprehensive documentation is accessible on the Dkron website

Quickstart

Deploying Dkron using Docker

The best way to test and develop dkron is using docker, you will need Docker with Docker compose installed before proceeding.

docker compose up -d

The UI should be available on http://localhost:8080/ui.

Using Dkron

To add jobs to the system read the API docs.

Scaling the cluster

To add more Dkron instances to the cluster:

docker compose up -d --scale dkron-server=4
docker compose up -d --scale dkron-agent=10

Development

To develop Dkron, you can deploy the cluster with local changes applied with the following steps:

  1. Clone the repository.

  2. Run the docker compose:

    bash docker compose -f docker-compose.dev.yml up

Email Testing

For testing email notifications during development, Mailpit is included in the development docker-compose setup. Mailpit provides a local SMTP server that captures outgoing emails without sending them to real recipients.

Start Mailpit with the development environment:

docker compose -f docker-compose.dev.yml up mailpit

Or run it standalone:

docker run -p 8025:8025 -p 1025:1025 axllent/mailpit

View captured emails at: http://localhost:8025

For more information, see docs/EMAIL_TESTING.md.

Testing CI Locally

To validate that your changes will pass in GitHub Actions before pushing:

./scripts/test-ci-locally.sh

This script: - Starts Mailpit (simulating the CI service container) - Runs tests with the same configuration as GitHub Actions - Provides clear pass/fail results - Allows you to inspect emails in the Mailpit UI

See .github/TESTING.md for more information about CI testing.

Frontend development

Dkron dashboard is built using React Admin as a single page application.

To start developing the dashboard enter the ui directory and run npm install to get the frontend dependencies and then start the local server with npm start it should start a new local web server and open a new browser window serving de web ui.

Make your changes to the code, then run make ui to generate assets files. This is a method of embedding resources in Go applications.

Resources

Chef cookbook https://supermarket.chef.io/cookbooks/dkron

Python Client Library https://github.com/oldmantaiter/pydkron

Ruby client https://github.com/jobandtalent/dkron-rb

PHP client https://github.com/gromo/dkron-php-adapter

Terraform provider https://github.com/bozerkins/terraform-provider-dkron

Manage and run jobs in Dkron from your django project https://github.com/surface-security/django-dkron

Contributors

Made with contrib.rocks.

Get in touch

  • Twitter: @dkronio
  • Chat: https://gitter.im/distribworks/dkron
  • Email: support at dkron.io

Extension points exported contracts — how you extend this code

Executor (Interface)
Executor is the interface that we're exposing as a plugin. [12 implementers]
plugin/executor.go
Processor (Interface)
Processor is an interface that wraps the Process method. Plugins must implement this interface. [6 implementers]
plugin/execution_processor.go
DkronGRPCClient (Interface)
DkronGRPCClient defines the interface that any gRPC client for dkron should implement. [2 implementers]
dkron/grpc_client.go
Storage (Interface)
Storage is the interface that should be used by any storage engine implemented for dkron. It contains the minimum set of [1 …
dkron/storage.go
Transport (Interface)
Transport is the interface that wraps the ServeHTTP method. [1 implementers]
dkron/api.go
DkronGRPCServer (Interface)
DkronGRPCServer defines the basics that a gRPC server should implement. [1 implementers]
dkron/grpc.go
ClientInterface (Interface)
The interface specification for the client above. [1 implementers]
client/client.go
LogApplier (FuncType)
LogApplier is the definition of a function that can apply a Raft log
dkron/fsm.go

Core symbols most depended-on inside this repo

k
called by 483
dkron/ui-dist/assets/index-70b10796.js
A
called by 483
dkron/ui-dist/assets/index-6c350c99.js
T
called by 483
dkron/ui-dist/assets/index-0a2dc820.js
ae
called by 420
dkron/ui-dist/assets/index-0a2dc820.js
o
called by 405
dkron/ui-dist/assets/index-70b10796.js
o
called by 405
dkron/ui-dist/assets/index-6c350c99.js
o
called by 379
dkron/ui-dist/assets/index-0a2dc820.js
join
called by 266
dkron/agent.go

Shape

Function 9,276
Method 1,392
Struct 164
Class 62
Interface 51
TypeAlias 7
FuncType 5

Languages

TypeScript86%
Go14%

Modules by API surface

dkron/ui-dist/assets/index-70b10796.js3,542 symbols
dkron/ui-dist/assets/index-6c350c99.js3,535 symbols
dkron/ui-dist/assets/index-0a2dc820.js2,263 symbols
client/client.go257 symbols
gen/proto/types/v1/dkron.pb.go197 symbols
gen/proto/types/v1/pro.pb.go130 symbols
gen/proto/types/v1/dkron_grpc.pb.go71 symbols
gen/proto/types/v1/pro_grpc.pb.go51 symbols
dkron/agent.go46 symbols
dkron/store.go39 symbols
gen/proto/types/v1/executor.pb.go36 symbols
gen/proto/types/v1/executor_grpc.pb.go32 symbols

Dependencies from manifests, versioned

cloud.google.com/gov0.123.0 · 1×
cloud.google.com/go/auth/oauth2adaptv0.2.8 · 1×
cloud.google.com/go/compute/metadatav0.9.0 · 1×
cloud.google.com/go/pubsubv1.50.2 · 1×
github.com/Azure/azure-sdk-for-gov44.0.0+incompatible · 1×
github.com/Azure/go-autorestv14.2.0+incompatible · 1×
github.com/Azure/go-autorest/autorestv0.11.18 · 1×
github.com/Azure/go-autorest/autorest/adalv0.9.24 · 1×
github.com/Azure/go-autorest/autorest/azure/authv0.5.0 · 1×

For agents

$ claude mcp add dkron \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact