PMS: self-hosted система управления проектами
Создан для агентства, которое ведёт десятки клиентских проектов одновременно. Лёгкий и простой Scrumban без тяжести Jira: видно задачи, статусы и бэклог по каждому проекту — в том числе из ИИ-агентов, которые заводят и закрывают задачи через CLI и REST API. На проектах, которые продают, включаются воронки лидов и учёт платежей. Разворачивается одной командой через Docker, данные остаются на вашем сервере. Открытый код, лицензия MIT.
Всё для операционного контроля над проектами
Kanban + Scrumban
Настраиваемые колонки-статусы на каждый проект, drag & drop, мягкие WIP-лимиты, дробный порядок задач без переиндексации.
Ключи, ревью, история
Человекочитаемые ключи CODE-N, приоритеты, исполнитель и проверяющий, критерии приёмки, комментарии и append-only лог активности.
Спринты и инициативы
Короткие спринты с целью и статистикой, старт/завершение с переносом незакрытых задач, инициативы с прогрессом, приоритезированный бэклог.
Роадмапы периода
Период, согласованный с клиентом, волны внутри него, таблица «было → цель → стало» и ссылка на отчёт. Пункты плана — обычные задачи, поэтому прогресс и блокеры считаются с доски.
Дашборды портфеля
Health по проектам, счётчики open/overdue/blocked/review, «мои задачи» и «мои ревью», кросс-проектный список с фильтрами.
Роли и права
Двухуровневый RBAC (роли воркспейса + роли проекта). Все проверки — на бэкенде. Нет доступа к проекту — проект не виден вовсе.
Лиды и воронки
Включаются на нужных проектах: свои этапы и поля, доска и таблица, журнал по каждому лиду, конверсия по этапам и источникам. Заявки с форм сайта приходят сами, без дублей.
Договоры и платежи
Договоры и платежи по проектам: ожидается, выставлен счёт, оплачено. Календарь поступлений и прогноз, просрочка считается сама. Суммы видят только менеджеры.
Уведомления, поиск, i18n
In-app уведомления о назначениях и ревью, сквозной поиск по задачам и комментариям, интерфейс на русском и английском.
Наша PMS ведёт саму себя: проект PMS внутри PMS
Кадры и видео сняты 28.10.2026 с рабочей установки агентства, интерфейс на русском. Английский включается одной кнопкой в шапке.





Лиды и воронки там, где они нужны
Лид в PMS не задача, а отдельная карточка со своей воронкой. Модуль включается флагом на проекте: для продаж агентства, для заказов с сайта, для любого потока заявок. Остальные проекты его не видят.


Своя воронка
Готовые наборы этапов «Продажи» и «Заказы» или свои. У каждого этапа смысл: в работе, выигран, проигран. Проигрыш без причины не закрыть.
Свои поля
Бюджет, сайт, ниша, дата подачи, площадка, что нужно бизнесу: текст, число, сумма, дата, список, телефон, email, ссылка.
Журнал и задачи
Каждое действие по лиду в журнале. Когда по лиду нужна работа (аудит, КП), из него создаётся задача со ссылкой в обе стороны.
Приём заявок
Формы сайта и площадки шлют заявки по ключу проекта, без логина. Повтор той же заявки не создаёт дубль, а лишние поля не теряются.
Статистика
Сколько лидов на каждом этапе и сколько через него прошло, конверсия по источникам, суммы в работе и выигранные, средний срок до закрытия.
Для ИИ-агентов
Агент заводит лид, двигает его по этапам и пишет в журнал через тот же CLI и API, что и с задачами.
# заявка с формы сайта: нужен только ключ проекта
curl -X POST https://pms.example.com/api/ingest/leads \
-H "X-Lead-Token: $LEAD_TOKEN" -H "Content-Type: application/json" \
-d '{"source": "site", "external_id": "form-4812", "contact_name": "Анна",
"phone": "+7 900 000-00-00", "data": {"budget": 50000}}'Задачи и бэклог, которые видит ваш ИИ-агент
Каждый проект — это доска и бэклог, с которыми работает не только человек, но и ИИ-агент. Через компактный CLI (только стандартная библиотека Python) и REST API агент заводит задачу под то, что делает, ведёт статус, оставляет комментарии и закрывает её — а вы видите единый живой лог работы по всем клиентам и собираете по нему месячные отчёты.
pms.py list --project ABC --status backlog # что в бэклоге у клиента pms.py add --project ABC --title "Правка форм на сайте" --priority HIGH pms.py status ABC-42 "In Progress" pms.py comment ABC-42 "выкатил, жду проверки" pms.py done ABC-42 # закрыто -> попадёт в отчёт pms.py lead stage ABC-L-7 "Переговоры" # лид дальше по воронке pms.py lead stats --project ABC --from 2026-10-01
Запуск за одну команду
Нужен только Docker. Бэкенд сам применяет миграции при старте, затем создаёте первого администратора и рабочее пространство.
git clone https://github.com/trendbender/pms.git cd pms cp .env.example .env # задать JWT_SECRET и пароль БД docker compose up --build # миграции применятся автоматически docker compose exec backend python -m app.cli seed # первый Owner + Workspace
Фронтенд — на localhost:3000, API и OpenAPI-документация — на localhost:8000/docs.
Двадцать маленьких проектов ломаются не так, как один большой
Каждый проект по отдельности простой. Сложным становится их набор: состояние живёт в головах и переписке, планы лежат отдельно от задач, а «мы ждали клиента» всплывает в день сдачи. PMS отвечает на это одним принципом: хранится только факт, остальное считается. Прогресс, просрочка, что держит план и по какому вопросу ждём ответа — всё выводится из задач и их статусов и поэтому не может разойтись с доской.
Состояние в головах
Вопрос «что у нас по клиенту X» стоит дня переписки. В PMS это одна доска и один журнал, общий с подрядчиками и ИИ-агентами.
Планы отдельно от работы
Документ с планом устаревает на следующей неделе. Роадмап в PMS собран из тех же задач, что и доска.
Договорённости плывут
Через два месяца никто не скажет, что именно обещали. Роадмап держит период, дату согласования и номер решения.
Деньги в табличке
Работа сдана, счёт не выставлен. Платежи лежат на проекте, просрочка считается, а не проставляется руками.
Блокеры невидимы
Статус «заблокировано» без причины не ставится, а все причины собираются в одном месте — что нужно от владельца и клиента.
Нет единого вида
Портфель показывает здоровье, просрочку и активный спринт по каждому проекту, роадмапы — одним таймлайном.
Роадмап месяца вместо документа рядом с доской
Роадмап — это обёртка вокруг задач: период работ, чем он согласован с клиентом, волны внутри него, таблица «было → цель → стало» и ссылка на опубликованный отчёт. Пункты плана остаются обычными задачами, волны — инициативами, поэтому прогресс, просрочка и заблокированное берутся с доски, а не вводятся второй раз.
Период и согласование
Начало и конец, дата согласия клиента, короткая заметка «план из 14 пунктов» и номер решения в реестре.
Волны
Недели, пакеты работ, выкладки. В каждой — свои задачи и свой срок, прогресс считается по ним.
Было → цель → стало
Значения текстом, а не числами: живые замеры звучат как «0 из 165» или «любой регистр отдаёт 200». Факт достижения ставит человек при сверке.
Отчёт одной командой
pms.py roadmap report собирает HTML-страницу для клиента из данных PMS. Сверка по пунктам не может разойтись с трекером.
pms.py roadmap add --project ABC --title "Месяц 1" --start 2026-11-01 --end 2026-11-30 \ --scope "план из 14 пунктов согласован клиентом 27.10" --status ACTIVE pms.py roadmap wave-add --project ABC --name "Неделя 1" --due 2026-11-07 --tasks ABC-12,ABC-13 pms.py roadmap metric-add --project ABC --name canonical --baseline "0 из 165" --target "165 из 165" pms.py roadmap report --project ABC # HTML-отчёт клиенту из данных PMS
Self-hosted
Всё крутится на вашем сервере. Никакой внешней SaaS-подписки и передачи данных на сторону.
Открытый код
Читайте, форкайте, дорабатывайте под себя. Лицензия MIT — можно использовать и в коммерческих проектах.
Простая архитектура
Модульный монолит: понятно разворачивать, поддерживать и расширять. Один compose-стек.
Частые вопросы о PMS
Нисколько. Исходный код открыт под лицензией MIT: разворачиваете у себя, платите только за свой сервер. Платная у нас только помощь с внедрением и доработками.
PMS сознательно не делает то, ради чего берут Jira: нет конструктора воркфлоу, портфельного управления, учёта времени и маркетплейса плагинов. Она про операционный слой агентства с десятками небольших проектов: что происходит, где встало и что требует владельца. Колонки настраиваются, но их смысл (бэклог, в работе, заблокировано, ревью, готово) фиксирован — на этом держится логика доски и отчётов.
Так и задумано: доска внутренняя, клиент получает отчёты и ссылки. Роль «Гость» на проекте есть, но клиентского портала нет.
Агент получает служебный аккаунт, роль на проекте и CLI на стандартной библиотеке Python. Он берёт задачи из своей очереди, ведёт статус и отчитывается комментариями; права проверяются на бэкенде, поэтому чужой проект он не увидит, а в «Готово» задачу переводит человек после сверки.
На вашем сервере: PostgreSQL в вашем Docker-стеке, вложения на вашем томе. Телеметрии нет, наружу ничего не уходит.
Роадмап хранит период, согласованный с клиентом, его волны, таблицу «было → цель → стало» и ссылки на план и отчёт. Сами пункты — обычные задачи, поэтому прогресс и блокеры берутся с доски. Отчёт клиенту собирается командой из тех же данных, а не пишется заново, и расходиться с трекером ему нечем.
Да, язык выбирается на каждого пользователя: русский и английский из коробки. Новый язык — одна запись в перечне и один словарь.
Нужен только Docker: docker compose up поднимает фронтенд, бэкенд, PostgreSQL и Redis, миграции применяются при старте, затем одна команда создаёт первого владельца. На боевом сервере тот же compose за обратным прокси с TLS.
Публичного демо нет: боевой инстанс приватный. Посмотреть можно скриншоты и видео на этой странице, а развернуть локально — за одну команду.
Поможем внедрить и настроить под ваши процессы
Развернём PMS на вашем сервере, настроим статусы и роли под команду, доработаем под задачи бизнеса. Оставьте заявку — обсудим.
Пять минут на бриф, и мы придём с разбором вашей ниши, а не с общими вопросами.