Highly extendable AI Web Chat UI from the community for the community.
⚠️ Early Development Stage: This repository is in a very early stage of development. Features may be incomplete, APIs may change, and breaking changes are expected.
🤝 We are looking for co-maintainers!
- 🗨️ OpenAI Chat integration
- 🧩 Modular architecture for easy extensibility
We try to keep the root of the repo slim and add things like package.json file where it actually belongs to.
modAI-chat/
├── backend/
│ ├── omni/ # Python FastAPI backend
│ └── tools/dice-roller/ # Example tool microservice
├── frontend/
│ └── omni/ # Svelte TypeScript SPA
└── e2e_tests/
├── tests_omni_full/ # Playwright E2E – full stack
└── tests_omni_light/ # Playwright E2E – light
In modAI there is not the one-and-only frontend but we (potentially) have more than one, or even transitioning from one to another (e.g. rewrite). Why more than one frontend: because there are different use cases. e.g. one full fledged frontend containing all features the backend offers and a second one very small chat bubble frontend which can be used to be integrated in existing sites.
- Python 3.13+
- Node.js 24+
- UV package manager
- Docker (for NanoIDP identity provider)
- Optional: just
Start the lightweight local OIDC identity provider (runs on port 9000):
docker compose -f resources/compose-files/compose-nanoidp.yaml up -dnanoidp Dashboard: http://localhost:9000
cd backend/omni
cp .env.sample .env # pre-configured for NanoIDP; add your OPENAI_API_KEY
uv sync
uv run uvicorn modai.main:app --reloadcd frontend/omni
# Activate the full backend-integrated module configuration
ln -sf modules_with_backend.json public/modules.json
pnpm install
pnpm devBrowse to http://localhost:5173/
User: user1
Password: password
Contributions are welcome in form of pull requests, issues or discussions. If you plan to implement something new or bigger, it is advisable to start a discussion first.
For details, see our contribution guidelines
There are plenty of successful repos out in the wild which are lead by single persons, but often this overwhelms and stresses the maintainer and obviously leads to a very bad work-life balance.
We believe that a one-man-show is not the right way and therefore are happy if you also want to take over responsibility. The whole project is divided into different chunks with dedicated responsible persons.
| Component | Overall responsibility |
|---|---|
| frontend/omni | @guenhter and maybe you? |
| backend | @guenhter and maybe you? |
| CI/CD | @guenhter and maybe you? |
The responsibilities for frontend and backend are defined more granular in the respective README.md files.
This project is licensed under the terms specified in the LICENSE file.
See ROADMAP.md for planned features and development milestones.
