Skip to main content

DisSysLab — build continuous offices of AI agents in plain English.

Project description

DSL — Build Your Own Office of AI Agents

AI tools answer when you ask. What if a network of AI agents worked for you all the time?

🎓 New to DisSysLab? Start here

Take the 5-minute micro-course

Then read Getting started


DSL lets you build an office of AI agents that runs continuously and never stops until you tell it to. Your agents monitor sources, analyze data, control devices, and store results for you, all the time.


Situation Room

A Situation Room scanning live news and social media in real time. You didn't write any code. You wrote two plain English documents.


Get Started in 3 Commands

git clone https://github.com/kmchandy/DisSysLab.git && cd DisSysLab
pip install -e .
export ANTHROPIC_API_KEY='your-key'

dsl run gallery/org_intelligence_briefing/

pip install -e . installs DisSysLab in editable mode and puts the dsl command on your PATH. dsl run reads your plain English files, shows you the routing, asks "Does this look right?", and starts your office. Run dsl doctor first if you want to check your setup, or dsl gallery to browse the offices that ship with the repo.


Two Paths Forward

Path A — Describe your office in plain English: Job Descriptions and Org Chart

You write job descriptions and an org chart. No programming required.

The job descriptions — what each agent does:

# Role: analyst

You are a news analyst who receives posts and articles and sends
items to an editor or a discard.

Your job is to decide if each item is relevant to significant
political developments or economic events — specifically involving
topics such as Trump, Congress, Senate, elections, the Federal Reserve,
tariffs, inflation, markets, Ukraine, Iran, trade policy, or the
broader economy.

Exclude celebrity gossip, sports, entertainment, and personal
opinions with no broader political or economic significance.

If the item is relevant, send to editor.
Otherwise send to discard.
# Role: editor

You are a senior editor who receives posts and articles and sends
items to a situation_room.

Your job is to rate each item for its significance — CRITICAL, HIGH,
MEDIUM, or LOW — and rewrite it as a crisp one-paragraph briefing note.
Note whether the item came from social media or news. Preserve the
source, url, timestamp, and author fields. Put your significance rating
in a field called "significance" and your summary in the "text" field.

Always send results to situation_room.

The org chart — who connects to whom:

Sources: bluesky(max_posts=None, lifetime=None),
         al_jazeera(max_articles=10, poll_interval=600),
         bbc_world(max_articles=10, poll_interval=600)
Sinks: intelligence_display(max_items=8),
       jsonl_recorder(path="situation_room.jsonl")

Agents:
Alex is an analyst.
Morgan is an editor.

Connections:
bluesky's destination is Alex.
al_jazeera's destination is Alex.
bbc_world's destination is Alex.
Alex's editor is Morgan.
Alex's discard is jsonl_recorder.
Morgan's situation_room are intelligence_display and jsonl_recorder.

That's it. Change the topics, change the agents, change the sources. The office is yours.

Offices can contain offices. An office is a building block which you can put into a network with other offices — a news office feeding a strategy office, a research office feeding an editorial office. Each office is a black box: the organization only knows what goes in and what comes out. You can build organizations of arbitrary complexity, one office at a time, reusing offices across different networks.

Go to the gallery to run an existing office and build your own.


Path B — Learn how distributed systems work

Interested in how DSL works under the hood? DSL is also a Python framework for building distributed systems — concurrent agents, message queues, routing, and termination detection. See examples/ for a module sequence that takes you from your first network to building distributed systems from scratch.


Requirements

  • Python 3.9+
  • Anthropic API key (get one here)
  • Install with pip install -e . from this repo (or pip install -r requirements.txt if you only want the dependencies without the dsl command)

DSL is an open research project exploring natural language interfaces to persistent distributed systems.

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

dissyslab-1.0.2.tar.gz (130.2 kB view details)

Uploaded Source

Built Distribution

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

dissyslab-1.0.2-py3-none-any.whl (166.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dissyslab-1.0.2.tar.gz
  • Upload date:
  • Size: 130.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for dissyslab-1.0.2.tar.gz
Algorithm Hash digest
SHA256 c46e5944ad416e711148545b3049f8c941979aabfbd61835ae04809629ac6e5a
MD5 0ad4d13216d6ba011f6b358993a41b7d
BLAKE2b-256 8a4ad5f04a82bf651a86d667d8bbae10c28c6e44889d44706d5198f85143e18c

See more details on using hashes here.

File details

Details for the file dissyslab-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: dissyslab-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 166.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for dissyslab-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 440f87bbe1ef2c1c2b9cfff62e20c941c85251524373c22f1e0494cbbf185a5b
MD5 71f4d93eeec574e17986ea5840899348
BLAKE2b-256 2079065a3ae735e23931558eb98089d80e263cb07724258ed7206f4dd0463907

See more details on using hashes here.

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