anaksor-ocr
Sokheng · Kit
Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…

Kestra Technologies’ open-source orchestration platform for data, AI and infrastructure workflows. You write each flow in YAML, and a schedule or an event starts it. The notes cover Docker, Kubernetes, the cloud templates, Claude Code, Codex and Cursor.
Kestra is an open-source project on GitHub in the Developer category, listed by Mindket. It is free. This is version 2, last updated on . Install it from GitHub as its README says. Get Mindket’s setup notes on your Mindket account, as a zip.
docker run --pull=always --rm -it -p 8080:8080 --user=root \ --name kestra \ -v kestra_data:/app/storage \
And 1 more in Where to use it
Kestra is an open-source orchestration platform for data, AI and infrastructure workflows, made by Kestra Technologies. A flow is a YAML file of tasks, and a trigger starts it on a schedule, on an event or from an API call. Its plugins run scripts in Python, Node.js, R, Go or Shell, query databases and call APIs. You can build the same flow in a YAML editor, a no-code editor or the built-in AI Copilot, and all three stay in sync. A coding agent such as Claude Code can write and deploy flows too.
Data and platform engineers who run pipelines, scripts and infrastructure jobs on a schedule or on events, and want them kept as code in Git. Teams leaving Apache Airflow get a skill that ports a DAG to a Kestra flow. Developers who already work in Claude Code, Codex or Cursor can describe a flow and let the agent deploy it.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Data teams | Data engineers | Build ELT pipelines as flows, with retries and Slack alerts | An engineer asks Copilot in Plan mode to extract from Salesforce, transform with dbt on DuckDB, load into Snowflake and post a Slack summary. |
| Platform and DevOps | Platform engineers | Keep flows in Git and deploy them from a pipeline | A CI job runs kestractl flows validate on the flows folder, then deploys it with --override. |
| Event-driven backends | Backend developers | Start a flow when a file lands or a message arrives | A blueprint watches the incoming/ prefix of an S3 bucket every minute and runs a Python script when files land there. |
| AI teams | AI engineers | Let an outside agent run flows as tools over MCP | A team adds an McpToolTrigger to a flow, and Claude Code can then call it as a named tool. |
| Airflow users | Data engineers | Port DAGs with the migrate-airflow-kestra skill | An engineer asks the agent to migrate dags/ingest_pipeline.py from Airflow and write the flow to kestra/. |
Skip the open-source edition if each person needs a login and a role of their own. It has one basic-auth account that everyone shares, and RBAC, SSO and multi-tenancy belong to the paid Enterprise Edition.
The open-source edition is a server you host, and you reach it from a browser, a terminal or your editor. Kestra also offers Kestra Cloud, a managed platform.
The installation page also covers a single VM on AWS, Google Cloud, Azure or DigitalOcean, and a standalone JAR.
Get it saves a zip of Mindket’s setup notes in your downloads folder, with each platform’s and agent’s steps from Kestra’s docs. The quickest route is one Docker command.
| Need | Detail |
|---|---|
| Docker | Running before you start. The Quickstart recommends Docker Desktop |
| Windows | WSL enabled |
| Machine | At least 2 vCPUs and 4 GiB of memory |
| Port 8080 | Free, since the UI opens there |
| For a coding agent | Node.js for npx, a terminal on macOS or Linux (WSL on Windows) and a running Kestra 2.0 instance |
docker run --pull=always --rm -it -p 8080:8080 --user=root \ --name kestra \ -v kestra_data:/app/storage \ -v kestra_db:/app/data \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /tmp:/tmp \ kestra/kestra:latest-slim server local
On Windows, the README gives versions of the command for PowerShell, CMD and WSL, and the kit’s Docker notes copy all three. This is the README’s first flow.
id: hello_world
namespace: dev
tasks:
- id: say_hello
type: io.kestra.plugin.core.log.Log
message: "Hello, World!"Each flow has an id, a namespace and a list of tasks. Add a triggers list and it starts by itself. The Docs MCP page shows the shape of a blueprint that runs a Python script when files land in an S3 bucket.
id: s3_trigger
namespace: company.team
tasks:
- id: process
type: io.kestra.plugin.scripts.python.Script
# ...
triggers:
- id: watch
type: io.kestra.plugin.aws.s3.Trigger
bucket: your-bucket
prefix: incoming/
interval: PT1MIn the UI, the editor checks your YAML as you type and draws the flow as a live graph. The Copilot sidebar has Ask, Edit and Plan modes, and Edit and Plan change nothing until you approve. From a terminal, kestractl checks, deploys and runs flows. These are the Claude Code Quickstart’s lines.
kestractl flows validate ./flows/ kestractl flows deploy ./flows/ --override kestractl executions run tutorial github_stars --wait
Kestra runs on your machine. Claude Code has the Docs MCP server, the two skills and a kestractl context. You type the Quickstart’s prompt:
Use kestra-flow to write a flow in the tutorial namespace that calls https://api.github.com/repos/kestra-io/kestra every hour and logs the star count. Save it as ./flows/github_stars.yaml. Then use kestra-ops to deploy it to my Kestra instance, run it, and tell me the result.
Claude Code writes the flow file, then deploys and runs it.
To write it, Claude Code looks up the HTTP and Log task schemas on the Docs MCP server. kestractl validates, deploys and runs the flow. In the UI, github_stars appears in the tutorial namespace with one execution that logs the star count. Its Schedule trigger keeps it running every hour, so disable the trigger or delete the flow when you finish.
If you are new. Orchestration means one tool starts your jobs, runs their steps in order, retries what fails and keeps the logs. In Kestra each job is a flow, and the UI shows every run with its logs and outputs. Start with the Docker command. Then paste the hello_world flow, run it and read the log line it writes. The AI Copilot can draft a flow for you once you give Kestra a Google Gemini key, the provider the open-source edition supports.
For experts. Kestra 2.0 splits the control plane from the data plane. Workers no longer touch the database. Each holds a gRPC stream to a Worker Controller, so it can run in another region or inside a restricted network. In the open-source edition that channel is plaintext and unauthenticated by default, and the controller hands each worker the instance’s encryption key. Keep workers and controllers on a trusted network, and set the shared kestra.grpc.basic-auth credentials to stop unknown workers. They add no TLS, and anyone who can capture the traffic can read them.
Task outputs now sit in their own storage, out of the execution record. For locked-down production, the Docker page calls an exact version tag such as v<X.X.X> the best choice. latest is a rolling tag whose support ends at the next stable release, about two months on, and latest-lts follows the long-term support line. Workers deployed without Docker need their plugins as JAR files first, and kestractl plugins download fetches them from Maven Central.
Moving from 1.x has a migration guide, and the migrate-kestra-2 skill guides a Kestra 1.3 instance and its flows through the upgrade. ForEach and ForEachItem became one Loop task, and trigger conditions are now written as when. For CI, the kestractl page gives flows validate-by-query --all --output json as a gate. It checks every flow on the instance and exits non-zero on violations.
The open-source edition runs on servers you control, and a few things reach out or need care.
This kit holds setup notes only. Mindket wrote them. Kestra itself runs from its Docker image, its Helm charts and its deployment templates, all from Kestra's repository: https://github.com/kestra-io/kestra
These notes are not made or endorsed by Kestra Technologies. The README calls Kestra "an open-source, event-driven orchestration platform for data, AI, and infrastructure workflows." The documentation is at https://kestra.io/docs
License: Apache-2.0. The LICENSE file (https://github.com/kestra-io/kestra/blob/develop/LICENSE) is the Apache License 2.0 and ends with "Copyright 2019 Kestra Technologies." The README says "Kestra is licensed under the Apache 2.0 License © Kestra Technologies." These notes cover the open-source edition. The Enterprise Edition is a separate paid offer that pulls its images from a private registry, and the notes name it only where a command differs.
The README presents Kestra 2.0 as a major release with breaking changes. A flow written for 1.x may need changes: https://kestra.io/docs/migration-guide/v2.0.0
kestra/kestra. The -slim variant ships without plugins and, on a local server, installs each plugin the first time a flow needs it. The README names Maven Central as the source. Sources: https://github.com/kestra-io/kestra/blob/develop/README.md and https://kestra.io/docs/installation/dockerSKILL.md files that npx skills add writes into your project) and kestractl, the Kestra command line. Source: https://kestra.io/docs/claude-code-quickstartnpx, a terminal on macOS or Linux (WSL on Windows) and a running Kestra 2.0 instance. Source: https://kestra.io/docs/claude-code-quickstartThe Quickstart gives this one command for a local instance. It needs Docker to be running.
docker run --pull=always --rm -it -p 8080:8080 --user=root \
--name kestra \
-v kestra_data:/app/storage \
-v kestra_db:/app/data \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp:/tmp \
kestra/kestra:latest-slim server local
Open http://localhost:8080 once the logs show Main server is running at http://...:8080, and create your user. Source: https://kestra.io/docs/quickstart
The Quickstart calls this setup "for local evaluation". Before others or other networks can reach Kestra, follow the security hardening guide: https://kestra.io/docs/security-hardening
kestractl in Claude CodeThe Docker command has --pull=always and the Compose file pull_policy: always, so running docker run or docker compose up again pulls the current image. Moving from 1.x to 2.0 has its own guide, and the migrate-kestra-2 skill guides a Kestra 1.3 instance through it. Source: https://kestra.io/docs/develop-with-ai/agent-skills
To stop the single container, press Ctrl+C. --rm removes the container, and the volumes stay. To start fresh, the Quickstart gives:
docker volume rm kestra_data kestra_db
Source: https://kestra.io/docs/quickstart
The docs give no removal steps for Docker Compose, the skills or the MCP entry. These notes are Mindket's, not Kestra's: the Compose file names two volumes, postgres-data and kestra-data. The skill installer writes to .claude/skills/ for Claude Code and to .agents/skills/ for Cursor and Codex, so the skill folders in those places are what to delete. Remove the kestra MCP entry with your agent's own MCP commands or config file.
Kestra sends anonymous usage data by default, in two separate streams. The server-side report covers host data (CPU, RAM, OS, JVM and a machine fingerprint), the plugins installed, flow counts and task and trigger types, execution counts and durations, and common data such as server type, version, time zone and URL. The UI sends its own report from the browser. Both must be set to false to stop all of it:
kestra:
anonymous-usage-report:
enabled: false
ui-anonymous-usage-report:
enabled: false
Source: https://kestra.io/docs/administrator-guide/usage
kestra-flow, kestra-flow-hardening and migrate-airflow-kestra skills need curl and network access to https://api.kestra.io. The page says kestra-flow and migrate-airflow-kestra fetch the live flow schema from there. Source: https://kestra.io/docs/develop-with-ai/agent-skillsREADME.md 7 KB setup/ai-copilot.md 4 KB setup/claude-code.md 6 KB setup/cloud-and-kubernetes.md 7 KB setup/codex.md 3 KB setup/cursor.md 3 KB setup/docker-compose.md 4 KB setup/docker.md 6 KB setup/flow-mcp-servers.md 4 KB setup/kestractl.md 5 KB setup/other-agents.md 4 KB setup/vscode.md 4 KB
Updated by Mindket to the current version of this kit.
Listed GitHub projects in the same category that share the most topics with this one.
| Product | Stars | Activity | Language | License | Last change |
|---|---|---|---|---|---|
| Kestra This page | 30,168 | Active | Java | Apache-2.0 | |
| DiffineryShares devops · ai-agents | 82 | Active | TypeScript | Apache-2.0 | |
| agent-desktopShares automation · ai-agents | 19,705 | Active | Rust | Apache-2.0 |
Posts and comments that name this project on Hacker News, Bluesky, X, Reddit, Facebook and YouTube, found by a weekly search and on Trendshift. Mindket doesn’t write or check them. Open one to read it where it was posted.
Sokheng · Kit
Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…
Qwen · Kit
Qwen2.5-7B-Instruct as GGUF files in eight quantization sizes, to chat with locally through llama.cpp. For people who want a capable 7.6B model on their own co…
ACE-Step · Kit
Generates music from text with a 4B diffusion decoder, 50 steps and guidance control, aiming for higher audio quality than the base. For creators with a GPU of…
vercel-labs · Kit
Enables AI agents to read and interact with desktop applications on macOS, Windows, and Linux using accessibility trees instead of screenshots. It provides a C…
codician-team · Kit
Hosts Git repositories, pull requests, code review and GitHub Actions workflows on your own Cloudflare account, with guarded accounts for AI coding agents.
alirezarezvani · Skill
Adds 411 ready-made skills for Claude Code and other coding agents, grouped by role from engineering and product to marketing, finance and compliance. Installs…