
jarvis
This is my personal assistant Mark 2
Repository Info
About This Server
This is my personal assistant Mark 2
Model Context Protocol (MCP) - This server can be integrated with AI applications to provide additional context and capabilities, enabling enhanced AI interactions and functionality.
Documentation
🧰 AI Agent Service Toolkit
A full toolkit for running an AI agent service built with LangGraph, FastAPI and Streamlit.
It includes a LangGraph agent, a FastAPI service to serve it, a client to interact with the service, and a Streamlit app that uses the client to provide a chat interface. Data structures and settings are built with Pydantic.
This project offers a template for you to easily build and run your own agents using the LangGraph framework. It demonstrates a complete setup from agent definition to user interface, making it easier to get started with LangGraph-based projects by providing a full, robust toolkit.
🎥 Watch a video walkthrough of the repo and app
Overview
Try the app!

Quickstart
Run directly in python
# At least one LLM API key is required
echo 'OPENAI_API_KEY=your_openai_api_key' >> .env
# uv is recommended but "pip install ." also works
pip install uv
uv sync --frozen
# "uv sync" creates .venv automatically
source .venv/bin/activate
python src/run_service.py
# In another shell
source .venv/bin/activate
streamlit run src/streamlit_app.py
Run with docker
echo 'OPENAI_API_KEY=your_openai_api_key' >> .env
docker compose watch
Architecture Diagram
Key Features
- LangGraph Agent and latest features: A customizable agent built using the LangGraph framework. Implements the latest LangGraph v0.3 features including human in the loop with
interrupt(), flow control withCommand, long-term memory withStore, andlanggraph-supervisor. - FastAPI Service: Serves the agent with both streaming and non-streaming endpoints.
- Advanced Streaming: A novel approach to support both token-based and message-based streaming.
- Streamlit Interface: Provides a user-friendly chat interface for interacting with the agent.
- Multiple Agent Support: Run multiple agents in the service and call by URL path. Available agents and models are described in
/info - Asynchronous Design: Utilizes async/await for efficient handling of concurrent requests.
- Content Moderation: Implements LlamaGuard for content moderation (requires Groq API key).
- RAG Agent: A basic RAG agent implementation using ChromaDB - see docs.
- Feedback Mechanism: Includes a star-based feedback system integrated with LangSmith.
- Docker Support: Includes Dockerfiles and a docker compose file for easy development and deployment.
- Testing: Includes robust unit and integration tests for the full repo.
Key Files
The repository is structured as follows:
src/agents/: Defines several agents with different capabilitiessrc/schema/: Defines the protocol schemasrc/core/: Core modules including LLM definition and settingssrc/service/service.py: FastAPI service to serve the agentssrc/client/client.py: Client to interact with the agent servicesrc/streamlit_app.py: Streamlit app providing a chat interfacetests/: Unit and integration tests
Setup and Usage
-
Clone the repository:
git clone https://github.com/JoshuaC215/agent-service-toolkit.git cd agent-service-toolkit -
Set up environment variables: Create a
.envfile in the root directory. At least one LLM API key or configuration is required. See the.env.examplefile for a full list of available environment variables, including a variety of model provider API keys, header-based authentication, LangSmith tracing, testing and development modes, and OpenWeatherMap API key. -
You can now run the agent service and the Streamlit app locally, either with Docker or just using Python. The Docker setup is recommended for simpler environment setup and immediate reloading of the services when you make changes to your code.
Additional setup for specific AI providers
- Setting up Ollama
- Setting up VertexAI
- Setting up RAG with ChromaDB
Building or customizing your own agent
To customize the agent for your own use case:
- Add your new agent to the
src/agentsdirectory. You can copyresearch_assistant.pyorchatbot.pyand modify it to change the agent's behavior and tools. - Import and add your new agent to the
agentsdictionary insrc/agents/agents.py. Your agent can be called by/<your_agent_name>/invokeor/<your_agent_name>/stream. - Adjust the Streamlit interface in
src/streamlit_app.pyto match your agent's capabilities.
Docker Setup
This project includes a Docker setup for easy development and deployment. The compose.yaml file defines three services: postgres, agent_service and streamlit_app. The Dockerfile for each service is in their respective directories.
For local development, we recommend using docker compose watch. This feature allows for a smoother development experience by automatically updating your containers when changes are detected in your source code.
-
Make sure you have Docker and Docker Compose (>=2.23.0) installed on your system.
-
Create a
.envfile from the.env.example. At minimum, you need to provide an LLM API key (e.g., OPENAI_API_KEY).cp .env.example .env # Edit .env to add your API keys -
Build and launch the services in watch mode:
docker compose watchThis will automatically:
- Start a PostgreSQL database service that the agent service connects to
- Start the agent service with FastAPI
- Start the Streamlit app for the user interface
-
The services will now automatically update when you make changes to your code:
- Changes in the relevant python files and directories will trigger updates for the relevant services.
- NOTE: If you make changes to the
pyproject.tomloruv.lockfiles, you will need to rebuild the services by runningdocker compose up --build.
-
Access the Streamlit app by navigating to
http://localhost:8501in your web browser. -
The agent service API will be available at
http://0.0.0.0:8080. You can also use the OpenAPI docs athttp://0.0.0.0:8080/redoc. -
Use
docker compose downto stop the services.
This setup allows you to develop and test your changes in real-time without manually restarting the services.
Building other apps on the AgentClient
The repo includes a generic src/client/client.AgentClient that can be used to interact with the agent service. This client is designed to be flexible and can be used to build other apps on top of the agent. It supports both synchronous and asynchronous invocations, and streaming and non-streaming requests.
See the src/run_client.py file for full examples of how to use the AgentClient. A quick example:
from client import AgentClient
client = AgentClient()
response = client.invoke("Tell me a brief joke?")
response.pretty_print()
# ================================== Ai Message ==================================
#
# A man walked into a library and asked the librarian, "Do you have any books on Pavlov's dogs and Schrödinger's cat?"
# The librarian replied, "It rings a bell, but I'm not sure if it's here or not."
Development with LangGraph Studio
The agent supports LangGraph Studio, a new IDE for developing agents in LangGraph.
You can simply install LangGraph Studio, add your .env file to the root directory as described above, and then launch LangGraph studio pointed at the root directory. Customize langgraph.json as needed.
Local development without Docker
You can also run the agent service and the Streamlit app locally without Docker, just using a Python virtual environment.
-
Create a virtual environment and install dependencies:
pip install uv uv sync --frozen source .venv/bin/activate -
Run the FastAPI server:
python src/run_service.py -
In a separate terminal, run the Streamlit app:
streamlit run src/streamlit_app.py -
Open your browser and navigate to the URL provided by Streamlit (usually
http://localhost:8501).
Projects built with or inspired by agent-service-toolkit
The following are a few of the public projects that drew code or inspiration from this repo.
- PolyRAG - Extends agent-service-toolkit with RAG capabilities over both PostgreSQL databases and PDF documents.
- alexrisch/agent-web-kit - A Next.JS frontend for agent-service-toolkit
- raushan-in/dapa - Digital Arrest Protection App (DAPA) enables users to report financial scams and frauds efficiently via a user-friendly platform.
Please create a pull request editing the README or open a discussion with any new ones to be added! Would love to include more projects.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request. Currently the tests need to be run using the local development without Docker setup. To run the tests for the agent service:
-
Ensure you're in the project root directory and have activated your virtual environment.
-
Install the development dependencies and pre-commit hooks:
pip install uv uv sync --frozen pre-commit install -
Run the tests using pytest:
pytest
License
This project is licensed under the MIT License - see the LICENSE file for details.
Quick Start
Clone the repository
git clone https://github.com/ebetancourt/jarvisInstall dependencies
cd jarvis
npm installFollow the documentation
Check the repository's README.md file for specific installation and usage instructions.
Repository Details
Recommended MCP Servers
Discord MCP
Enable AI assistants to seamlessly interact with Discord servers, channels, and messages.
Knit MCP
Connect AI agents to 200+ SaaS applications and automate workflows.
Apify MCP Server
Deploy and interact with Apify actors for web scraping and data extraction.
BrowserStack MCP
BrowserStack MCP Server for automated testing across multiple browsers.
Zapier MCP
A Zapier server that provides automation capabilities for various apps.