Agentic team management system
Project description
Standup is an agentic system to run a team composed of some agents and some humans under the supervision of a manager.
All team members (agents or humans) have access to two common substraits (both implemented via regular files):
- A task/project management system
- A system of peer to peer message queues
The team has a few stakeholders:
- Director - the human external to the system who directs/controls manager. Manager acts on the behalf of the Director. Team members don't know about the Director - they only talk to each other and the manager.
- Manager - the agent (with own .md file) which writes the team charter (as instructed by the director), interprets and enforces it. It typically will talk to the director to understand & clarify project specs, break it down in tasks of appropriate complexity, update internal task/management system, assign tasks to appropriate teammates based on complexity, expertise, and background, chooses the order in which tasks are to be done, and acts as first line of defense to take/resolve questions from teammates.
- One or more team mates - some human and some agents (for now, only agent). Each agent is basically a claude agent for now.
Team Charter
Charter is a document (md file) describng how the team should operate - it contains information about the cultural values, processes, operating procedures etc. It is written by the manager based on instructs from the director - manager can also propose changes to it and present them to Director for approval.
Roster
At any point of time, team has some members a file called roster.md enumerates the names of all the active members along with a short description of what they own and their roles in the team.
Tasks
There is a python file in scripts/task.py which contains machinery to manage tasks & projects. Tasks themselves are stored as files.
Chat
All messages sent to chat are also stored in sqlite and managed via a python script in scripts/chat.py
Mailboxes
Every teammate gets an outbox and an inbox. When it wants to send message to another teammate, it writes a message to own outbox. Messages that others are sending it come to its inbox. This is managed via scripts/mailbox.py
Only agent writes to its outbox, only daemon reads from outbox. Only daemon writes to any inbox, only the owner agent reads it.
Outbox message has format of (send_time, recipient, message) Inbox message has format of (send_time, sender, message)
Daemon
Daemon is an event loop (non-LLM) which listens to outboxes of all teammates and dispatches them to appropriate inbox of the recipient. Daemon also runs a web app server for the human director to interact with the team. This app shows a view of the projects/tasks as well as in a separate tab, a chat box. All messages sent from one member to another show up here for the director to observe. In addition, all events (e.g. assigning of tasks, task status changes, spawning o agents etc) also show up here.
More importantly, director can send messages to the manager through the chat box who can also respond back. If the manager has a question for the director (say because a teammate asked them something and they didn't know the answer), they can also send a message to director's mailbox.
Agent's Memory
All agents maintain a folder called memory with a few kinds of files:
-
Journals - here they can write one or more .journal.md files where they periodically write down relevant memories - understanding, decisions, open questions, lessons, goals etc.
-
Notes - here they contain many files about variety of topics of their choice as {name}.note.md.
-
Feedback - one file for every other team mate they have worked with, containing feedback for them based on the quality of their work
-
Context - a single context.md file which contains a summary of their current short session state - when the agent comes back up the next time, they minimally read this file to get going.
Repos
A team has one or more shared git repos (including a special repo called meta)
which contains standup related files to govern the team. Agents, when working
on a repo, clone the repo in their own directory, work in a branch, and raise
the PR against the main repo.
CI
Every team has a CI agent with own mailboxes. Whenever an agent wants to raise a PR against the main repo, they send a message to CI. CI agent can choose to run tests
Directory Structure
root - workspace - - # cloned copy of repos this agent is working on - - - repos - .git ... - .git ... - - .git - charter.md - scripts - - - run.py # special script that starts daemon - team - roster.md - - bio.md - state.yaml - outbox/ out_1.csv # outbox, one is active, older are archived out_2.csv - inbox/ in_1.csv in_2.csv - journals - 1.journal.md - 2.journal.md - notes - .note.md - .note.md - feedback - .md - .md - context.md - logs/ - 1.worklog.md # contains full log of all prompts of this agent - 2.worklog.md - - db.sqlite
State file
Every agent gets a state file. This stores metadata like:
- PID: the pid of the process executing this agent right now (or None)
- in_cursor: id of the message in inbox until which processed (we try to do at least once processing so id is incremented after finishing the action)
- out_cursor: next id of the message to be sent in outbox
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
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 delegate_ai-0.1.0.tar.gz.
File metadata
- Download URL: delegate_ai-0.1.0.tar.gz
- Upload date:
- Size: 367.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9cb820cbc4dd9b6f685a60999e19f20bfc55e09aa8630cf09b886986567c3479
|
|
| MD5 |
e0777f1fea351529a2ab3dead7591fa1
|
|
| BLAKE2b-256 |
d58d4d2f46acd263961236969d728430cc67fad2c131fed8102fae4cb6c68a25
|
File details
Details for the file delegate_ai-0.1.0-py3-none-any.whl.
File metadata
- Download URL: delegate_ai-0.1.0-py3-none-any.whl
- Upload date:
- Size: 142.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ef7f88ff1b22d63ced362eaee743c12947c9271cf29b3b510e216690e9d4709
|
|
| MD5 |
9f42225a4e188a6632d1364930ee2b43
|
|
| BLAKE2b-256 |
2f9d4f67cc06d97557c6da5d9f20593b7e492d7685e6753d7ed66d9f4dbcc948
|