autokitteh

module
v0.11.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 17, 2024 License: Apache-2.0

README

Top banner

AutoKitteh is a developer platform for workflow automation and orchestration. It is an easy-to-use, code-based alternative to no/low-code platforms (such as Zapier, Workato, Make.com, n8n) with unlimited flexibility.

You write in vanilla Python, we make it durable 🪄

In addition, it is a durable execution platform for long-running and reliable workflows. It is based on Temporal, hiding many of its infrastructure and coding complexities.

AutoKitteh can be self-hosted, and has a cloud offering as well.

Once installed, AutoKitteh is a scalable "serverless" platform (with batteries included) for DevOps, FinOps, MLOps, SOAR, productivity tasks, critical backend business processes, and more.


GitHub License Go Reference Go Report Card

GitHub Commit Activity CI Status

YouTube Channel LinkedIn

High-Level Architecture

Architecture diagram

Platform: A scalable server that provides interfaces for building projects (workflows), deploying them, triggering the code with webhooks or schedulers, executing the code as durable workflows, and managing these workflows.

API: AutoKitteh is an API-first platform. All services are available via gRPC / HTTP.

Built-in integrations: Slack, GitHub, Twilio, ChatGPT, Gemini, Gmail, Google Calendar, HTTP, gRPC and many more. It's easy to add new integrations.

Supported programming languages: Python, Starlark (a dialect of Python), and JavaScript (coming soon).

Discover how it works (in detail).

User Interfaces

  • Command Line Interface

  • Visual Studio Code Extension - Build and manage workflows

    VS Code screenshot

  • Web UI

    Web UI screenshot

Why You Should Give AutoKitteh a Test Drive

AutoKitteh provides a full set of advanced engineering features out-of-the-box. You can focus on writing the business logic, we take care of the rest:

  • Secure, seamless, bidirectional API integrations
  • User-friendly management, monitoring, and debugging
  • Standalone and distributed system reliability
  • Automated recovery without state loss
  • Built-in durability for long-running workflows
  • Readiness for world-class scalability needs

Getting Started

See our quickstart guide, which covers:

  • Installation
  • Starting a self-hosted server
  • Creating and deploying a project
  • Resilience demo

The open-source AutoKitteh server is used mostly for self-hosted and on-prem installations.

Our managed cloud iPaaS offering is currently in beta - for details, contact us at meow@autokitteh.com.

Build From Source

The following requires Go version 1.23 or greater.

$ git clone https://github.com/autokitteh/autokitteh.git
$ cd autokitteh
$ make ak
$ cp ./bin/ak /usr/local/bin
$ ak version

Build Requirements (Full Builds Only)

  • buf
  • docker
  • go >= 1.23
  • golangci-lint (auto-downloaded during builds if missing)
  • shellcheck (auto-pulled via docker during builds if missing)
  • gofumpt
  • gotestsum (used by Makefile intead of "go test" if detected)
  • jq (for advanced output formatting)
  • atlasgo (for new DB migrations)
  • nodejs >= 20 (only if updating the UI)

Contact Us

Directories

Path Synopsis
backend
svc
cmd
ak
AK is the autokitteh command-line interface and local server.
AK is the autokitteh command-line interface and local server.
docgen
DocGen is an internal tool that auto-generates Docusaurus markdown files about the AutoKitteh CLI tool for https://docs.autokitteh.com.
DocGen is an internal tool that auto-generates Docusaurus markdown files about the AutoKitteh CLI tool for https://docs.autokitteh.com.
aws
internal/extrazap
Package extrazap provides helper functions for initializing Zap loggers, as well as associating and extracting them with/from context objects.
Package extrazap provides helper functions for initializing Zap loggers, as well as associating and extracting them with/from context objects.
slack/api/apps
Package apps is a lightweight wrapper over the "apps" methods in Slack's Web API: https://api.slack.com/methods?filter=apps.
Package apps is a lightweight wrapper over the "apps" methods in Slack's Web API: https://api.slack.com/methods?filter=apps.
slack/api/auth
Package auth is a lightweight wrapper over the "auth" methods in Slack's Web API: https://api.slack.com/methods?filter=auth.
Package auth is a lightweight wrapper over the "auth" methods in Slack's Web API: https://api.slack.com/methods?filter=auth.
slack/api/bookmarks
Package bookmarks is a lightweight wrapper over the "bookmarks" methods in Slack's Web API: https://api.slack.com/methods?filter=bookmarks.
Package bookmarks is a lightweight wrapper over the "bookmarks" methods in Slack's Web API: https://api.slack.com/methods?filter=bookmarks.
slack/api/bots
Package bots is a lightweight wrapper over the "bots" methods in Slack's Web API: https://api.slack.com/methods?filter=bots.
Package bots is a lightweight wrapper over the "bots" methods in Slack's Web API: https://api.slack.com/methods?filter=bots.
slack/api/chat
Package chat is a lightweight wrapper over the "chat" methods in Slack's Web API: https://api.slack.com/methods?filter=chat.
Package chat is a lightweight wrapper over the "chat" methods in Slack's Web API: https://api.slack.com/methods?filter=chat.
slack/api/conversations
Package conversations is a lightweight wrapper over the "conversations" methods in Slack's Web API: https://api.slack.com/methods?filter=conversations.
Package conversations is a lightweight wrapper over the "conversations" methods in Slack's Web API: https://api.slack.com/methods?filter=conversations.
slack/api/reactions
Package reactions is a lightweight wrapper over the "reactions" methods in Slack's Web API: https://api.slack.com/methods?filter=reactions.
Package reactions is a lightweight wrapper over the "reactions" methods in Slack's Web API: https://api.slack.com/methods?filter=reactions.
slack/api/users
Package users is a lightweight wrapper over the "users" methods in Slack's Web API: https://api.slack.com/methods?filter=users.
Package users is a lightweight wrapper over the "users" methods in Slack's Web API: https://api.slack.com/methods?filter=users.
slack/events
Package events implements handlers for Slack's Events API: see https://api.slack.com/apis/connections/events-api and https://api.slack.com/events?ref=apis&filter=Events.
Package events implements handlers for Slack's Events API: see https://api.slack.com/apis/connections/events-api and https://api.slack.com/events?ref=apis&filter=Events.
internal
backend/gormkitteh
TODO: Make public?
TODO: Make public?
backend/sessions/sessioncalls
Adapted from https://github.com/dynajoe/temporal-terraform-demo/blob/main/heartbeat/heartbeat.go.
Adapted from https://github.com/dynajoe/temporal-terraform-demo/blob/main/heartbeat/heartbeat.go.
backend/sessions/sessionworkflows/modules/testtools
This closely follows https://github.com/google/starlark-go/tree/master/lib/time.
This closely follows https://github.com/google/starlark-go/tree/master/lib/time.
backend/sessions/sessionworkflows/modules/time
This closely follows https://github.com/google/starlark-go/tree/master/lib/time.
This closely follows https://github.com/google/starlark-go/tree/master/lib/time.
kittehs
Taken from https://github.com/egtann/strip-wildcard-prefix/blob/main/strip_wildcard.go.
Taken from https://github.com/egtann/strip-wildcard-prefix/blob/main/strip_wildcard.go.
manifest
Description of the manifest schema.
Description of the manifest schema.
resolver
Package resolver contains functions that resolve names and ID strings of autokitteh entities to their concrete SDK types.
Package resolver contains functions that resolve names and ID strings of autokitteh entities to their concrete SDK types.
xdg
Package XDG manages autokitteh's configuration and data directories, which are used to store optional files such as ".env", "config.yaml" (see the CLI command "ak config"), "fake_secrets_manager.json" (if you opt-out of using a real secrets manager), SaaS client credentials, etc.
Package XDG manages autokitteh's configuration and data directories, which are used to store optional files such as ".env", "config.yaml" (see the CLI command "ak config"), "fake_secrets_manager.json" (if you opt-out of using a real secrets manager), SaaS client credentials, etc.
runtimes
pythonrt
gRPC server that accepts calls from the Python runner
gRPC server that accepts calls from the Python runner
sdk
sdktypes
Package sdktypes contains all the data types used by the autokitteh SDK.
Package sdktypes contains all the data types used by the autokitteh SDK.
tests
web

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL