Skip to main content

Declarative AI agent framework - build agent applications in YAML

Project description

Digitorn

Digitorn is an interpreter for AI agents. Install it once, write a YAML manifest, run it. Same model as python for .py or node for .js.

app:
  app_id: hello

agents:
  - id: main
    role: assistant
    brain:
      provider: deepseek
      model: deepseek-chat
      backend: openai_compat
      config:
        api_key: "{{env.DEEPSEEK_API_KEY}}"
        base_url: "https://api.deepseek.com/v1"
    system_prompt: "Reply with one short sentence."
digitorn dev deploy hello.yaml --scope user
digitorn dev chat hello -m "ping"
# pong

That YAML is the entire app. No Python loop to wire up. No SDK glue code. No context-window bookkeeping. No tool dispatcher to implement. The interpreter handles all of it.

Why declarative

Every layer of the stack has moved from imperative to declarative because the declarative version scales better, audits cleaner, and removes glue code:

  • Bash scripts → Terraform
  • docker run → Kubernetes manifests
  • jQuery → React
  • Manual SQL → ORM and migration specs

AI agents are the next layer. Writing the orchestration loop, the tool dispatcher, the retry policy, the sandbox, and the cost cap by hand is the bash-scripts-for-infra of the agent era. Digitorn makes the manifest the source of truth and runs everything from it.

What the interpreter handles

A single digitorn start brings every primitive a production agent needs:

  • 23 modules: filesystem, shell, web, http, RAG, vector, database, LSP, MCP, channels (webhook / cron / email / slack / discord / voice / ...), memory, workspace, widgets, ...
  • 16 middleware: secret masking, content filter, RAG injection, retry, circuit breaker, dedup, audit, ...
  • Multi-agent orchestration with sub-agent spawning
  • OS-level sandbox (Landlock / seccomp / Job Objects)
  • Credentials vault (OAuth2, API key, mTLS, ...)
  • Real-time event stream over Socket.IO
  • Behavior engine with declarative rules

Adding a new capability to your agent is one YAML key, not a pip install plus integration code.

Install

Windows

irm https://digitorn.ai/install.ps1 | iex

macOS / Linux

curl -fsSL https://digitorn.ai/install.sh | sh

The installer fetches Python 3.12 via uv, installs the digitorn CLI, registers a background service (Windows Service / launchd / systemd), and starts the interpreter on http://127.0.0.1:8000.

Already have Python 3.12?

pip install digitorn         # or: uv tool install digitorn
digitorn service install
digitorn service start

First steps

digitorn doctor                       # check the environment
digitorn init my-app && cd my-app     # scaffold a project
digitorn dev deploy app.yaml          # push to the local interpreter
digitorn dev chat my-app              # interactive chat

Full reference: docs.digitorn.ai.

Requirements

  • Windows 10+, macOS 12+, or a recent Linux distro
  • Python 3.12 (the installer fetches it via uv if missing)
  • 2 GB free disk space for the model cache (embeddings, ONNX runtimes)
  • Outbound HTTPS for LLM providers and MCP servers you choose to use

Operating the interpreter

digitorn service status               # is it running?
digitorn service logs                 # last 50 lines
digitorn service stop                 # stop until next boot
digitorn service start                # start again
digitorn service uninstall            # remove the service

Logs:

  • Windows: Event Viewer (Applications and Services Logs > DigitornDaemon)
  • macOS: ~/Library/Logs/digitorn/
  • Linux: journalctl --user -u digitorn

The interpreter also writes structured logs to ~/.digitorn/logs/.

Development

git clone https://github.com/mbathe/digitorn-bridge
cd digitorn-bridge
uv sync                               # or: poetry install
uv run digitorn start                 # foreground, with the venv's deps

License

Apache 2.0. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

digitorn-1.0.1.tar.gz (2.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

digitorn-1.0.1-py3-none-any.whl (3.0 MB view details)

Uploaded Python 3

File details

Details for the file digitorn-1.0.1.tar.gz.

File metadata

  • Download URL: digitorn-1.0.1.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for digitorn-1.0.1.tar.gz
Algorithm Hash digest
SHA256 40bc0679eb30b7444090853dff4df34bb3569899731b3f3da722dea82f10b068
MD5 c1e51910abf4bd7acb3dd09962ab169c
BLAKE2b-256 de0bdab5f31b3772e908b4f17e576b3a65855bc48b03df06c10935b73bcc20f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for digitorn-1.0.1.tar.gz:

Publisher: release.yml on mbathe/digitorn-bridge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file digitorn-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: digitorn-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for digitorn-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 07010bd73f8907aa9dfc69d58fd27669fd0cf1122fa3bba09c49e46fa36054bc
MD5 cc042f6bf18a6db0ca29361c672e4fe8
BLAKE2b-256 039c5e67cf223b357c420e19f79a72acb9fd8bcb897ac025f08c0448e9a22b05

See more details on using hashes here.

Provenance

The following attestation bundles were made for digitorn-1.0.1-py3-none-any.whl:

Publisher: release.yml on mbathe/digitorn-bridge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page