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.
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 (orpip install -r requirements.txtif you only want the dependencies without thedslcommand)
DSL is an open research project exploring natural language interfaces to persistent distributed systems.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c46e5944ad416e711148545b3049f8c941979aabfbd61835ae04809629ac6e5a
|
|
| MD5 |
0ad4d13216d6ba011f6b358993a41b7d
|
|
| BLAKE2b-256 |
8a4ad5f04a82bf651a86d667d8bbae10c28c6e44889d44706d5198f85143e18c
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
440f87bbe1ef2c1c2b9cfff62e20c941c85251524373c22f1e0494cbbf185a5b
|
|
| MD5 |
71f4d93eeec574e17986ea5840899348
|
|
| BLAKE2b-256 |
2079065a3ae735e23931558eb98089d80e263cb07724258ed7206f4dd0463907
|