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.2.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.2-py3-none-any.whl (3.0 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: digitorn-1.0.2.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.2.tar.gz
Algorithm Hash digest
SHA256 9ee3391b56957bfc331ae38b4375f89de122ca12b1ed2999c1699d76bf951fc4
MD5 7536477b39ee25a2860b6d25337299e5
BLAKE2b-256 ab8db7716314eb29629873666a108199f4f8a93297853449e28097513a3f4c3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for digitorn-1.0.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: digitorn-1.0.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 cec39d3f226e91209656bdb3d252149f7fa9ecbb399fbe5306326520c141f6d9
MD5 156ea3b63b3c2abe6da334657f14c381
BLAKE2b-256 3c41da1cfb93c9728958de578a22411897a7b576ded68cdd6b4448c94c85ab54

See more details on using hashes here.

Provenance

The following attestation bundles were made for digitorn-1.0.2-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