TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Orchestrated Resource & Business Intelligence Taskmaster
Employees manage tasks in plain language inside Google Chat; managers get a Mission Control web dashboard. A LangGraph supervisor routes each request to a specialist agent, every change is audited, and proactive briefings keep people on track.
Ctrl+K) and an always-available agent panel.| Layer | Technology |
|---|---|
| Backend | Python 3.11, FastAPI, SQLAlchemy 2 (async), Alembic |
| Agents | LangGraph, LiteLLM (Gemini by default, OpenAI fallback) |
| Data | PostgreSQL 16, Redis 7 |
| Scheduler | APScheduler (Redis job store, Redis job locks) |
| Frontend | Next.js 14 (App Router), TypeScript, Tailwind, TanStack Query, Recharts, dnd-kit |
| Tests | pytest (backend), Vitest + Testing Library (frontend), Playwright (end to end) |
flowchart LR
subgraph Clients
GC[Google Chat]
UI[Next.js dashboard]
end
GC -- "HTTPS event (signed by Google)" --> WH["/api/chat/webhook<br/>verify, map user, de-duplicate"]
UI -- "REST + SSE (JWT)" --> API[FastAPI REST API]
subgraph Agents["LangGraph (state checkpointed in Redis)"]
SUP{{Supervisor<br/>classify intent}}
TA[Task Agent<br/>CRUD tools]
PA[Planner Agent<br/>daily plan]
RA[Recommendation Agent<br/>priorities, workload]
RV[Review Agent<br/>validate + human confirmation]
MS[Multi-step Agent<br/>AI plans and chains tools<br/>bounded, no deletes]
SUP --> MS
SUP --> TA
SUP --> PA
SUP --> RA
SUP --> RV
end
WH --> SUP
API -- "Ask ORBIT /chat/query" --> SUP
TA & PA & RA & RV & MS --> TOOLS[Tools scoped to the requesting user<br/>same RBAC as the REST API]
API --> SVC[CRUD services]
TOOLS --> SVC
SVC --> PG[(PostgreSQL<br/>tasks, history, traces)]
SUP -. "LLM (Gemini via LiteLLM)<br/>timeout + circuit breaker" .-> LLM[LLM]
SUP -. "offline rules if LLM fails" .-> RULES[Rule-based classifier]
SCH[Scheduler<br/>briefing, overdue, weekly] --> SVC
SCH --> OUT
SVC --> OUT[Notifications]
OUT --> GC
OUT --> MAIL[Email, optional]
SVC -- "commit hook" --> EV[Live-update hub]
EV -- SSE --> UI
The Supervisor never answers by itself: it classifies the request (LLM first, deterministic rules as a fallback) and hands it to a specialist that calls real tools against PostgreSQL. Dashboard and Chat go through the same tools and the same permission checks, so they always show the same records. Deleting a task needs an explicit confirmation that is bound to the user and the pending action. More detail: docs/ARCHITECTURE.md.
Prerequisites: Python 3.11+, Node 20+, Docker (for Postgres and Redis).
git clone <your-fork-url> orbit && cd orbit
cp .env.example .env # defaults work for local development
docker compose up -d postgres redis
# Backend
cd backend
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements-dev.txt
alembic upgrade head
python -m db.seed # demo users and tasks (development only)
uvicorn main:app --port 8001
# Frontend (new terminal)
cd frontend
npm ci
npm run dev # http://localhost:3000
| Service | URL |
|---|---|
| Dashboard | http://localhost:3000 |
| API docs (Swagger) | http://localhost:8001/docs |
| Health | http://localhost:8001/api/health |
cp .env.example .env # set JWT_SECRET_KEY; SEED_ON_START=true for demo data
docker compose up -d --build
If pulling python/node times out (Docker Hub unreachable), build through a mirror: set PYTHON_IMAGE=mirror.gcr.io/library/python:3.11-slim and NODE_IMAGE=mirror.gcr.io/library/node:20-alpine in .env. If port 6379 is taken by another project, set REDIS_PORT=6380.
The backend container applies migrations on start (and seeds when SEED_ON_START=true). The frontend image bakes in NEXT_PUBLIC_API_URL at build time, so rebuild it if the API URL changes.
python -m db.seed creates these with the password password123. Production refuses to seed unless SEED_PASSWORD is set.
| Role | Can | |
|---|---|---|
| Admin | [email protected] | everything, including users and roles |
| Manager | [email protected] | team tasks, delete, insights, scheduler, notification log |
| Employee | [email protected] | own tasks (assigned or created), own stats |
You: Create a high priority task for John to deploy the frontend by Friday
ORBIT: Created Task: Deploy the frontend (HIGH, due Fri)
You: Show my pending tasks
You: What should I focus on today?
You: Make it critical <- "it" resolves from the previous turn
You: Delete the old login task <- managers get a Confirm / Cancel card
ORBIT never guesses: an unknown or ambiguous name ("Joe" matches two people) or an unclear task ("complete it" with no context) produces a clarifying question instead of an action.
Mine / Everyone scope toggle.Ctrl+Enter to send) and a readable activity log.Ctrl+K then type a request): chat with the agents, confirm destructive actions, inspect which agents ran and how long each took.Full walkthrough with a verification checklist: docs/GOOGLE_CHAT_SETUP.md. Try the bot first without Google: cd backend && python -m scripts.simulate_chat --email [email protected].
Slash commands: /tasks, /plan, /overdue, /insights, /help, /new <title>. Task lists come back as cards with a Done button per task.
credentials/service-account.json (never commit it).ngrok http 8001) and set the endpoint URL to https://<host>/api/chat/webhook..env:
GOOGLE_CHAT_AUDIENCE=<project number>GOOGLE_CHAT_AUDIENCE=https://<host>/api/chat/webhookGOOGLE_CHAT_VERIFY_AUTH=true. ORBIT then accepts only Google-signed requests from the Chat service account; the app refuses to start in production with verification off or no audience.Proactive direct messages work by finding the bot's DM space with each user, or by using the DM space remembered from their first message. Users with no linked Google Chat account at all are logged as skipped; if the DM lookup or delivery fails the log says failed with the reason (see Admin, Notifications).
# Backend: fully offline (no LLM or Google calls), ~1 minute
pytest
# Frontend unit and component tests
cd frontend && npm test && npm run typecheck && npm run lint
# End to end (needs the running stack with seeded data)
cd frontend && npm run build && npm start # in one terminal
cd frontend && npm run test:e2e # in another
Set ORBIT_LIVE_LLM=1 to let backend tests call a real model (manual evaluation only). E2E_SCREENSHOTS=1 npx playwright test e2e/screens.spec.ts captures every screen to frontend/test-results/screens/.
All settings are environment variables; see .env.example for the full annotated list. The ones that matter most:
| Variable | Purpose |
|---|---|
ENVIRONMENT | production turns on safety checks (strong JWT secret, no wildcard CORS, Chat verification on) and the app refuses to boot otherwise |
JWT_SECRET_KEY | Required in production, 32+ random characters |
GOOGLE_GEMINI_API_KEY / OPENAI_API_KEY | Leave empty to run on the offline classifier |
APP_TIMEZONE | Defines "today" for due dates, digests and the scheduler (default Asia/Kolkata) |
ALLOW_REGISTRATION | Public sign-up, off by default |
GOOGLE_CHAT_VERIFY_AUTH, GOOGLE_CHAT_AUDIENCE, GOOGLE_CHAT_WEBHOOK_SECRET | Webhook authentication |
SCHEDULER_ENABLED, SCHEDULER_JOBSTORE | Scheduler on/off, redis or memory |
backend/
agents/ LangGraph supervisor, specialists, memory, orchestrator, prompts
api/ FastAPI routers (auth, tasks, users, analytics, admin, chat webhook)
auth/ JWT, Google OAuth, RBAC rules, login rate limiter
crud/ Database operations
db/ Models, session, seed
alembic/ Migrations (run with: alembic upgrade head)
schemas/ Pydantic request and response models
scheduler/ Cron jobs (briefing, overdue alerts, weekly summary)
services/ LLM client, Google Chat client, notification dispatcher
tools/ Agent tools (permission-checked, never raise)
frontend/
app/ Routes: (auth) login, (app) board, tasks, insights, traces, admin, profile
components/ ui/ (design-system kit), shell/, tasks/, agent/
lib/ API client, auth, hooks, formatting and query helpers
__tests__/ Vitest unit and component tests
e2e/ Playwright end-to-end tests
tests/ pytest suite (API, agents, RBAC, webhook, scheduler, migrations)
docs/ Architecture, API, data model, design system, decisions
| Document | Contents |
|---|---|
| docs/OPERATIONS.md | Deployment, security checklist, runbook, troubleshooting |
| docs/GOOGLE_CHAT_SETUP.md | Step-by-step Google Chat setup, slash commands, local simulator, checklist |
| docs/DEPLOY_RENDER.md | Deploy the API and Chat webhook to Render (render.yaml) with a fixed HTTPS address |
| docs/ARCHITECTURE.md | System design and request flows |
| docs/AGENTS.md | Agent responsibilities, routing, safety rules |
| docs/TOOLS.md | Tool contracts and permission model |
| docs/API.md | REST API reference |
| docs/DATABASE.md | Schema and migrations |
| docs/DESIGN_MISSION_CONTROL.md | Dashboard design system |
| docs/DECISIONS.md | Architecture decision records |
| docs/EVALUATION.md |
Chethan Gowda S N: HiDevs Intern Assignment, Multi-Agent AI Task Management System.
| How agent quality is measured |
| docs/PRD.md, docs/DESIGN.md | Original product requirements and technology choices |
| RULES.md, TASKS.md, MEMORY.md | Engineering rules, roadmap, memory strategy |