[!WARNING]
Jackadi is currently in an alpha state and is provided with no guarantees or warranties.
You're welcome to try it out and give feedback.
But, it must not be used in production or in any environment where reliability, security, or data integrity are required.
By using Jackadi at this stage, you acknowledge the risks and potential for breaking changes.
What is Jackadi?
Jackadi is a developer-first distributed task execution platform designed for developers with a plugin system. Jackadi is client/server based.
The main motivation is to create a framework where developers write tasks as pure code without abstractions or hidden behaviors. Task writing is meant to be natural and direct.
Key principles:
Pure Go Approach: Tasks are written as Go code with no hidden behaviors - what you write is what you get.
No Runtime Dependencies: Tasks have no runtime dependencies on other tasks; all dependencies are resolved at compile-time.
No Abstractions: Task writing is natural for Go developers with minimal framework-specific knowledge needed.
Flexible Use Cases: From simple package installation to complex workflows like server management and upgrades.
Features
Feature
Description
Distributed Task Execution
Execute tasks across multiple nodes from a central manager.
Plugin System
Extend functionality through custom Go plugins.
Advanced Targeting
Target nodes via list, glob, regex, advanced query.
Specs Collection
Gather and store system information from nodes.
Security
mTLS, node acceptance workflow, protection against rogue nodes.
Developer-Friendly
Tasks/specs are Go function registered with a simple SDK.
# Start the manager
manager --mtls=false
# Start an node
node --id="node1" --mtls=false
# Accept the node connection (if not using auto-accept)
jack nodes list
jack nodes accept node1
# The node should be now in "accepted" list
jack nodes list
# Check nodes health
jack nodes health
# Run a task
jack run node1 cmd.run "echo hello"