A Python-based AI-driven tool simulating a modern office environment with advanced task management, skill-based agent assignment, asynchronous communication, and a powerful real-time GUI monitor.
- Overview
- Key Features
- Screenshots (Conceptual)
- System Requirements
- Core GUI Module (
gui.py) - Installation and Setup
- Usage Guide
- File Structure
- Technical Notes
- Contributing
- License
- Contact
AI OfficeSim: Asynchronous Workplace Simulator is a Python application that models and simulates the dynamics of a modern digital office. It features advanced task management, a diverse team of AI-powered agents with unique roles and skills, asynchronous communication, and a comprehensive, real-time GUI for monitoring and interaction. The system is ideal for exploring collaborative workflows, AI delegation, and digital teamwork.
- 📋 Advanced Task Management:
- Create, assign, and track tasks with full lifecycle support.
- Task statuses:
Pending,In Progress,Blocked,Completed,Failed. - Task priorities:
Low,Medium,High,Critical. - Task submission and management directly from the GUI.
- 🤖 Diverse AI Agents:
- Simulates a full digital team: CEO/Integrator, Web Developer, UX/UI Designer, Copywriter, AI Graphic Designer, Data Analyst, Project Manager, Marketing Strategist, QA/Feedback, Mobile Tester, AI Chatbot, Client Advisor, Hosting/DevOps.
- Each agent has a unique role, skills, personality traits, and preferred tools.
- Agents autonomously process, delegate, and communicate about tasks.
- Agents can use local LLMs (Ollama/Qwen3), OpenAI, or built-in heuristics for AI responses.
- 🗣️ Asynchronous Communication Bus:
- Realistic, non-blocking message passing between agents for coordination, information sharing, and delegation.
- All communication is logged and visible in the GUI.
- 🖥️ Modern Real-Time GUI (Tkinter + Matplotlib):
- Large, resizable main window with:
- Task Submission: Add new tasks with title, description, and priority.
- Agent Information: Browse all agents, their roles, and skills.
- Task Status: Live log of all task status changes.
- Task List: Overview of all tasks, statuses, priorities, and assignees.
- Results & Code: Multi-tab notebook for:
- Results (task outputs)
- HTML, CSS, JavaScript code (generated by agents)
- Reports (agent details, project summaries, etc.)
- Conference Room: Real-time, scrollable log of agent-to-agent communication.
- Agent Bar: Scrollable row of agent buttons for quick access to agent details.
- Charts: Visualize agent work time and task status distribution (Matplotlib).
- State Management: Save/load simulation state from the GUI.
- All popups replaced by in-GUI tabs for seamless workflow.
- Large, resizable main window with:
- 🧠 Skill-Based Task Assignment:
- Tasks are automatically assigned to the most suitable agent(s) based on required and available skills.
- 📊 Analytics and Reporting:
- Built-in charts for agent activity and task status.
- Detailed agent and project reports available in the GUI.
- 💬 Full English Interface:
- All labels, logs, and messages are in English.
The GUI features a modern, multi-pane layout with tabs for results, code, and reports, a live conference room, and interactive charts.
- Python Version: Python 3.8 or higher
- Required Libraries:
tkinter(standard with Python)matplotlibrequests(for Ollama integration, optional)openai(for OpenAI integration, optional)llama-cpp-python(for local Llama models, optional)
- Recommended: Modern OS, 1920x1080+ screen for best GUI experience
Install dependencies:
pip install matplotlib
# Optional:
pip install requests openai llama-cpp-python- The GUI is implemented in
gui.pyusing Tkinter and Matplotlib. - All windows, tabs, and logs are integrated into a single, resizable main window.
- No popups: all agent details, code, and results are shown in the Results & Code notebook.
- The GUI is launched via the
run_gui()function frommain.py.
- Clone the Repository:
git clone <repository-url> cd <repository-directory>
- Install Dependencies (see above)
- Run the Application:
python main.py
- Launch the application with
python main.py. - Use the GUI to:
- Add new tasks (title, description, priority)
- Browse and inspect all agents and their skills
- Track task status and agent activity in real time
- View all agent communication in the Conference Room
- See all results, code, and reports in the Results & Code notebook
- Visualize agent work time and task status with charts
- Save/load the simulation state at any time
- All agent actions, communications, and results are visible in the main window.
- The simulation runs until stopped or all tasks are completed.
main.py: Core simulation logic, agent/task management, communication bus, GUI launchagents.py: Agent classes, roles, skills, AI logic (Ollama/OpenAI/heuristics)tasks.py: Task and status definitionsgui.py: Modern Tkinter GUI with all-in-one window, charts, logs, and tabsstorage.py: State save/load logicrequirements.txt: DependenciesREADME.markdown: This documentation
- All-in-one GUI: No popups, all information is in the main window for maximum usability.
- Agent AI: Agents can use local LLMs (Ollama/Qwen3), OpenAI, or built-in logic for task processing and communication.
- Extensible: Add new agent types, skills, or task types by editing
agents.pyandtasks.py. - Charts: Real-time Matplotlib charts for agent work time and task status.
- In-Memory Data: All data is in memory; use save/load for persistence.
- Concurrency: Uses
asynciofor agent logic and communication.
Contributions are welcome! Ideas for new agent types, smarter AI, new GUI features, or integrations are encouraged.
- Fork the repository.
- Create a new branch for your feature (
git checkout -b feature/YourFeature). - Make your changes and commit (
git commit -m 'Feature: ...'). - Push and open a Pull Request.
Please follow PEP 8, use type hints, and comment your code.
This project is licensed under the MIT License. See the LICENSE file for details.
Project concept by Adrian Lesniak. For questions, feedback, or issues, please open an issue on GitHub or contact the repository owner.
🚀 Simulating the future of work, one asynchronous task at a time!






