v0.9 Як low-code, тільки для програмістів

SDK для українських державних реєстрів і сервісів

ID.GOV.UA, Трембіта, КЕП, форми з аудитом, ролі, кабінети — як пакети Python. Ставите, конфігуруєте в кілька рядків, далі пишете звичайний Django-код. Без конструкторів, без чужого DSL, без вендорського рантайму.

MITPython 3.11+Django 514 модулівllms.txt відкрито

pip install govtech-sdk
views.py — авторизація через ID.GOV.UA
# settings.py
INSTALLED_APPS += ["govtech.id"]
AUTHENTICATION_BACKENDS = ["govtech.id.backends.IDGovUABackend"]

GOVTECH_ID = {
    "client_id": env("IDGOVUA_CLIENT_ID"),
    "encryption_key": "/run/secrets/knedp.p12",
    "auth_types": ["dig_sign", "diia", "bankid"],
}

Готово. Далі — request.user.drfo, request.user.full_name у звичайній Django-в'юшці.

MIT ліцензія 14 модулів 4 схеми авторизації 0 вендорського рантайму llms.txt уже відкрито

Публічний репозиторій, PyPI і MCP — разом з релізом документації у Q4 2026

Розробляється та підтримується RaccoonGang у відкритому репозиторії

Що болить

Кожен державний проєкт починається однаково

Ті самі інтеграції, ті самі два тижні, ті самі граблі. Причому в тих самих людей, які вже це робили.

2 тижні

Оцінка на ID.GOV.UA. Щоразу

І це не тому, що команда слабка. ІСЕІ — не OIDC: немає discovery-документа, немає id_token, а дані користувача приходять зашифрованими на вашому сертифікаті КНЕДП. Тобто бекенд зобов'язаний вміти ДСТУ-криптографію ще до першого логіна.

30 секунд

Пастки, які видно тільки в проді

Код авторизації живе 30 секунд і згорає після першого використання. access_token — теж одноразовий. Про це не написано на першій сторінці специфікації, зате написано в баг-репорті о другій ночі.

0 перевикористання

Наступний проєкт пише це з нуля

Трембіта в перший раз — майже місяць. Удруге знову тиждень, бо змінилась версія і зник той, хто розбирався. Між проєктами не переїжджає нічого, крім усної традиції.

«Онбординг сьогодні виглядає так: піди подивись, як зроблено в тому проєкті, і спитай Сашу».

— так виглядає передача знань без SDK

Одне порівняння, яке вирішує суперечку

Як виглядає бізнес-правило

Ліворуч — валідація поля у типовій low-code платформі: JavaScript, збережений рядком усередині JSON. Праворуч — те саме правило в GovTech SDK.

Конфігурація в базі платформи

фрагмент експорту процесу
{
  "taskTemplates": [{
    "id": "() => 1000001;",
    "fields": [{
      "name": "rnokpp",
      "validate": "(value, step, documentData) => \
        !value?.trim() || (/^[0-9]{10}$/.test(value) \
        && !documentData?.members?.some(m => \
        m.rnokpp === value)) ? true : 'Дублікат';",
      "visible": "(step, documentData) => \
        documentData?.applicantType === 'fop';",
      "maxLength": "(value) => value?.length <= 1000;"
    }],
    "xmlBpmnSchema": "<?xml version=\"1.0\"?>\r\n<bpmn:defini
      tions xmlns:bpmn=\"http://www.omg.org/spec/BPMN/2018\"
      ...ще 141 КБ в одному рядку..."
  }]
}

Це не можна відревʼювати в pull request, покрити тестом чи поставити брейкпоінт. Лінтер сюди не заглядає, IDE — теж.

Код у вашому репозиторії

forms.py
from govtech import forms


class SubsidyForm(forms.GovForm):
    rnokpp = forms.RNOKPPField(label="РНОКПП", unique_in="members")
    address = forms.AddressField(prefill="registry.edr")

    class Meta:
        audit = True
        permission = "subsidy.apply"
        sign = forms.Sign.QES

    def show_rnokpp(self):
        return self.data["applicant_type"] == "fop"

Git blame, pull request з іменем апрувера, pytest, статичний аналіз, SBOM. Усе, що ваша команда й так уміє.

Перевірити цей аргумент можна за хвилину: попросіть у будь-якої low-code платформи git diff останньої зміни бізнес-правила. Артефакт вашого сервісу — це або файли .py у вашому git, або рядки в базі метаданих вендора. Третього не буває.

Дві години замість двох тижнів

ID.GOV.UA за чотири кроки

Без скорочень і без «далі за аналогією». Це повний шлях від порожнього проєкту до реального користувача з ПІБ і РНОКПП.

terminal
$ pip install govtech-id

Collecting govtech-id (from govtech-sdk)
  Downloading govtech_id-1.0.2-py3-none-any.whl (84 kB)
Collecting govtech-crypto-dstu>=1.0
  Downloading govtech_crypto_dstu-1.0.1-cp311-manylinux_x86_64.whl
Successfully installed govtech-id-1.0.2 govtech-crypto-dstu-1.0.1
$ govtech doctor --check id

 Ключ КНЕДП        /run/secrets/knedp.p12 — дійсний до 2027-04-11
 Ланцюжок          КНЕДП → ЦЗО — повний
 ІСЕІ              https://id.gov.ua — 200, 141 мс
 Redirect URI      зареєстрований і збігається з settings
4 перевірки, 0 помилок.
# settings.py
INSTALLED_APPS += ["govtech.id"]
AUTHENTICATION_BACKENDS = ["govtech.id.backends.IDGovUABackend"]
GOVTECH_ID = {"client_id": env("IDGOVUA_CLIENT_ID"),
              "auth_types": ["dig_sign", "diia", "bankid"]}

# urls.py
urlpatterns += [path("auth/", include("govtech.id.urls"))]
# views.py
@login_required
def cabinet(request):
    user = request.user
    return render(request, "cabinet.html", {"me": user})

# що всередині user після логіна:
>>> request.user.drfo
'1234567890'
>>> request.user.full_name
'Шевченко Тарас Григорович'
>>> request.user.auth_type
'diia'

Разом: чотири кроки, жодного рядка криптографії у вашому коді.

Все включено

14 модулів, які закривають державний проєкт

Кожен ставиться окремо. Кожен має статус — stable, beta або в дорожній карті. Ми не пишемо «120 готових інтеграцій», список яких ніде не опублікований.

govtech-id

stable

Авторизація ID.GOV.UA

Усі чотири схеми — КЕП, Дія.Підпис, BankID, ЄСІА-сумісні провайдери. Автоматичне розшифрування encryptedUserInfo, захист від 30-секундного TTL і одноразових токенів.

AUTHENTICATION_BACKENDS = ["govtech.id.backends.IDGovUABackend"]
  # далі request.user.drfo працює у будь-якій в'юшці
pip install govtech-id

govtech-trembita

stable

Клієнт Трембіти

Правильний заголовок X-Road-Client, двостороння TLS, ретраї з backoff і автоматичне збереження ASiC-контейнера як юридичного доказу обміну.

tr = Trembita.from_settings()
  resp = tr.get("GOV/10000003/EDR/subject-detail", params={"code": edrpou})
  resp.asic.save(to=application)  # доказ транзакції
pip install govtech-trembita

govtech-signature

stable

КЕП і Дія.Підпис

Серверна перевірка підпису: ланцюжок до ЦЗО, OCSP-статус і мітка часу TSP однією функцією, поверх версіонованої обгортки над IIT EUSignCP.

pip install govtech-signature

govtech-registry

stable

Реєстри без ШБО

Звірка РНОКПП з ДРФО, дані ЄДР за РНОКПП чи ЄДРПОУ, реєстр втрачених документів ЄІС МВС на тому самому токені ID.GOV.UA.

pip install govtech-registry

govtech-rbac

beta

Ролі та права

Розділення реалмів громадянин / посадова особа / зовнішня система, скоупи по підрозділу, синхронізація з групами Django.

pip install govtech-rbac

govtech-forms

beta

GovTech Forms

Django Forms, у яких кожна зміна поля пише в журнал аудиту, кожна дія перевіряє право користувача, а форму можна оголосити такою, що подається лише під КЕП. Плюс українські поля: РНОКПП, ЄДРПОУ, УНЗР, адреса.

class SubsidyForm(forms.GovForm):
      class Meta:
          audit = True; permission = "subsidy.apply"; sign = forms.Sign.QES
pip install govtech-forms

govtech-audit

stable

Аудит дій

Незмінювані записи: декоратор на функцію або міксин на модель, повний диф полів і прив'язка до накладеного підпису.

pip install govtech-audit

govtech-workflow

beta

Бізнес-процеси

Процес — звичайний Python-клас: кроки, ролі, SLA, переходи. Процес можна виправити і мігрувати заявки, що вже в роботі.

pip install govtech-workflow

govtech-cabinet

beta

Кабінети і погодження

Кабінет заявника й посадової особи: подання, статуси, таймлайн, черга на розгляд, флоу погоджень. Стилізується вашими шаблонами.

pip install govtech-cabinet

govtech-notify

beta

Нотифікації

Три канали — пуш у Дію, email і вхідні в кабінеті. Шаблони, OTP-підтвердження, повтори при збоях.

pip install govtech-notify

govtech-testing

beta

Моки для тестів

Моки ID.GOV.UA, Трембіти, КЕП і реєстрів. Інтеграційні тести проходять у CI без ШБО, апаратних токенів і договору з ДП «ДІЯ».

pip install govtech-testing

govtech-cli

beta

CLI і скаффолдер

govtech new створює проєкт із CI, міграціями і файлами контексту для AI-агентів. govtech doctor перевіряє сертифікати і доступність ШБО.

pip install govtech-cli

govtech-docs

Q1 2027

Витяги та документи

Генерація витягів і довідок у PDF, DOCX і CSV з шаблонів, з печаткою установи та QR-кодом для перевірки автентичності.

Проєктується. Реліз заплановано, встановити ще не можна

govtech-edebo

Q2 2027

ЄДЕБО та АІКОМ

Перевірка документів про освіту, дані закладів і звітність, типізованими моделями замість сирого XML.

Проєктується. Реліз заплановано, встановити ще не можна

Чесно, з одним рядком не на нашу користь

Проти low-code платформ

Ми не сперечаємось про перші 80%. Ми сперечаємось про останні 20, де живе держава: нестандартна інтеграція, окремий воркфлоу для одного департаменту, вимоги до логування, QR на витязі.

Критерій Low-code платформа govtech/sdk
Артефакт сервісуРядки в базі метаданих платформи: BPMN-XML, JSON-схеми форм, логіка в рядкових поляхФайли .py у вашому репозиторії. Той самий git, той самий blame
Code reviewДифи експорту процесу на 145 КБ в один рядок JSON. Ревʼю фактично неможливеPull request на 6 рядків, який читає людина і апрувить під своїм іменем
ТестиЮніт-тестів немає. Щоб перевірити правило, треба прогнати процес цілком у розгорнутому середовищіpytest, фікстури, покриття. Моки ID.GOV.UA і Трембіти — тести йдуть у CI без ШБО
Локальна розробка17 мікросервісів з RabbitMQ і Redis, або кластер з Camunda, Keycloak, Kafka, Istiorunserver + Postgres у Docker. Старт за секунду на ноутбуці
Стеля кастомізаціїТри типи плагінів. Далі — форк монорепозиторію вендораУся PyPI. Будь-який клас можна успадкувати й перевизначити, включно з ядром
Зміна схеми данихПроаналізувати залежні обʼєкти, видалити їх, перестворити таблицю, відтворити залежностіmakemigrations, migrate. Відкат — однією командою
Інцидент о 2:00Помилка всередині функції, що лежить рядком у JSON, десь між сімнадцятьма сервісамиTraceback з номером рядка у вашому коді, pdb, локальне відтворення
Кого найматиРозробників, сертифікованих вендором. Ринок — кілька сотень людейБудь-якого Python-розробника. Навички лишаються з людиною і після проєкту
ЛіцензіяAGPL-3.0 з мережевим застереженням плюс окрема пропрієтарна Enterprise-редакціяMIT. Модифікації публікувати не треба, комерційної редакції не існує
Форма без розробникаТак, аналітик збирає форму мишкою. Це реальна перевага low-code на перших 80%Ні. Форму пише розробник, за годину замість тижня. Це наша свідома межа

Порівняння спирається на публічну документацію та відкриті репозиторії платформ: Liquio (AGPL-3.0, 17 мікросервісів, три типи плагінів) і Платформи реєстрів на Camunda BPMN. Якщо ми десь помилились, напишіть нам, і ми виправимо.

Без магії

Як це складено

Ядро не володіє вашим проєктом. Це бібліотеки, які ви імпортуєте, і адаптери, які говорять із державою за вас.

Агенти Claude CodeMCP · SKILL.md Cursor.cursor/rules Будь-який агентllms.txt · llms-full.txt Ваша командата сама документація Ваш код Django-застосунок Ваші моделі й форми Ваші шаблони Ваша бізнес-логіка Ядро SDK formsаудит · підпис rbacреалми · скоупи workflowкроки · SLA auditнезмінний журнал cabinetкабінети · флоу testingмоки для CI Держава ID.GOV.UAgovtech-id Трембітаgovtech-trembita КЕП · Дія.Підписgovtech-signature ЄДР · ДРФО · МВСgovtech-registry ЄДЕБОQ2 2027

ваш код — ви його володар ядро SDK — успадковується й перевизначається у дорожній карті

Все включено

Документація, яку читає не тільки людина

Чатбот у доках цього не вирішує. Агент отримує ті самі артефакти, що й розробник, тільки у форматі, який він уміє завантажити в контекст. Чип на картці каже, що вже можна відкрити, а що виходить за планом.

llms.txt і llms-full.txt

відкрито

Карта SDK і повний дамп у markdown, з описом модулів, робочими прикладами і переліком пасток, на яких падають інтеграції. Обидва файли лежать на цьому домені прямо зараз.

# GovTech SDK

> Відкриті Python-бібліотеки для державних
> реєстрів і сервісів України.

## Пастки, на яких падають інтеграції
- ID.GOV.UA не є OIDC: немає id_token
- код авторизації: TTL 30 с, одноразовий

MCP-сервер

Q4 2026

Агент шукатиме в доках, читатиме довідник модуля, розшифровуватиме коди помилок ІСЕІ і скаффолдитиме інтеграцію, не виходячи з редактора. Набір інструментів уже зафіксований, ендпоінт піднімаємо разом з релізом доків.

tools:
  search_docs           module_reference
  scaffold_module       explain_error_code
  trembita_service_lookup

Agent Skills

Q4 2026

Набір SKILL.md, який стане плагіном для Claude Code. Чотири скіли: авторизація, Трембіта, форми, аудит.

---
name: govtech-id-auth
description: Інтеграція ID.GOV.UA
---
Ніколи не кешуй code — TTL 30 с.

Правила для Cursor

Q4 2026

Глоби на моделі, форми та в'юшки, щоб агент не пропонував застарілий патерн.

.cursor/rules/govtech-forms.mdc
globs: **/forms.py, **/models.py
alwaysApply: false

AGENTS.md з коробки

Q4 2026

govtech new кластиме в проєкт опис шарів, ролей і того, що не можна писати в обхід аудиту.

$ govtech agent install
  .claude/skills/  (4)
  .cursor/rules/   (3)
  AGENTS.md, CLAUDE.md

Якщо агент не вміє користуватись вашим SDK — ним не користуватиметься ніхто.

Мовою менеджера

Скільки це знімає з оцінки

Цифри «було» — з наших власних оцінок на державних проєктах. Не з презентації вендора.

Авторизація ID.GOV.UA, усі чотири схеми

2 тижні

2 години

Клієнтський код Трембіти з ASiC і mTLS

5–8 днів

1 день

Серверна валідація КЕП з OCSP і міткою часу

1 тиждень

1 година

Журнал дій користувачів і матриця прав

1–2 тижні

півдня

Кабінет заявника зі статусами і таймлайном

3–4 тижні

2 дні

Онбординг нового розробника в держпроєкт

2 тижні і «спитай Сашу»

1 день по доках

Чесна межа: юридичний і інфраструктурний трек SDK не скорочує. Договір з ДП «ДІЯ», підняття ШБО, сертифікати від КНЕДП — це 1–3 тижні календарно і від коду не залежить. Ми скорочуємо рівно те, що скорочується кодом. Практично: підіймайте юридичний трек паралельно, а код пишіть уже зараз проти моків з govtech-testing.

Без пунктів без дати

Що вже є і що далі

Q3 2026

випущено

  • govtech-id 1.0: чотири схеми авторизації, автоматичний refresh, усі 18 кодів помилок ІСЕІ
  • govtech-signature 1.0: перевірка CAdES і PAdES з OCSP та TSP
  • govtech-trembita 1.0: REST і legacy SOAP, ASiC, ретраї
  • govtech-registry: ДРФО, ЄДР, ЄІС МВС на токені ID.GOV.UA
  • llms.txt і .md-версії всіх сторінок документації

Q4 2026

в роботі

  • govtech-forms 1.0: аудит на рівні поля, хуки підпису, українські поля
  • govtech-rbac і govtech-audit виходять з бети
  • MCP-сервер: search_docs, module_reference, explain_error_code
  • Agent Skills як плагін для Claude Code, правила для Cursor
  • govtech-cli: govtech new з CI, міграціями і AGENTS.md

Q1 2027

заплановано

  • govtech-workflow 1.0: міграція заявок між версіями процесу
  • govtech-cabinet: кабінет заявника й посадової особи
  • govtech-docs: витяги в PDF з печаткою та QR верифікації
  • Довідник контролів для проходження експертизи КСЗІ
  • Перший зовнішній інтегратор на SDK

Q2 2027

дослідження

  • govtech-edebo та АІКОМ
  • Публічний playground з моками реєстрів, без договору з ДП «ДІЯ»
  • 1.0 усього стеку: semver-гарантії, політика депрекейшну, LTS-гілка
  • Англомовна документація і подача в каталог GovStack
  • Курс і сертифікація для команд — безкоштовно і без ексклюзиву

оновлено 13 серпня 2026 · публічні мілстоуни відкриваємо разом з репозиторієм

Те, що вам скажуть на дейлі

Заперечення і питання

Заперечення

Ні. І це наша межа, яку ми не приховуємо. Аналітик описує процес, розробник пише форму. Але пише її за годину замість тижня, і результат лишається кодом, який можна відревʼювати й покрити тестами. Якщо ваша задача справді збирається мишкою за день і більше ніколи не змінюватиметься, беріть low-code, це чесна порада.

Ми пишемо на цьому коді власні державні проєкти. SDK живий рівно доти, доки живий наш govtech-напрям, а він приносить гроші. Ліцензія MIT означає, що навіть у гіршому сценарії форк робиться однією командою, а не успадкуванням мільйонів рядків чужої платформи. Порівняйте з ризиком, коли єдиний вендор одночасно автор, мейнтейнер і ліцензіар.

КСЗІ отримує система, а не бібліотека. Ми даємо те, що спрощує проходження експертизи: журнал дій з незмінюваними записами, RBAC з розділенням реалмів, серверну валідацію КЕП з OCSP і TSP, шифрування чутливих полів і документацію контролів. Атестує все одно ваш проєкт, а не наш pip install.

Тому кожен модуль має статус-чип, а не маркетингову обіцянку: stable, beta або roadmap. Roadmap-картка не має рядка встановлення, копіювати нічого. Там лише мілстоун з датою. Це надійніше, ніж «120 готових інтеграцій», список яких ніде не опублікований.

Ми свідомо повторюємо їхню функціональну поверхню: авторизація, підпис, реєстри, форми, процеси, ролі, кабінети, аудит. Різниця не в переліку, а в тому, ким ви стаєте після впровадження. У них ви — власник конфігурації в базі вендора і клієнт його центру компетенцій. У нас — власник Python-репозиторію, який може підхопити будь-яка команда в країні.

Питання

MIT. Без copyleft, без мережевого застереження, без окремої Enterprise-редакції. Ви можете модифікувати SDK, не публікуючи зміни, і використовувати його в закритому проєкті. Це свідомо інша позиція, ніж AGPL: там будь-яка модифікація, доступна через мережу, тягне обовʼязок відкрити код або купувати комерційну ліцензію.

Django 5.0+, Python 3.11+, PostgreSQL. Ядро працює і без Django — govtech-id, govtech-trembita, govtech-signature і govtech-registry це звичайні Python-пакети без залежності від фреймворку, їх беруть у FastAPI. Django-специфіка живе в окремих модулях: forms, cabinet, rbac, audit.

Так, і це найдешевший спосіб спробувати. Модулі не звʼязані між собою жорстко: govtech-signature можна поставити окремо і використати тільки для серверної валідації КЕП. Точки входу — звичайні функції й класи, а не фреймворк, який хоче володіти вашим проєктом.

Так, для великого класу задач. Той самий access_token від ID.GOV.UA дає доступ до звірки РНОКПП з ДРФО, реєстру втрачених документів ЄІС МВС і даних ЄДР за РНОКПП чи ЄДРПОУ. Для KYC-сценаріїв і перевірки ФОП цього достатньо. Модуль govtech-registry закриває саме цей шар.

Semver. До 1.0 мінорна версія може ламати API, і ми пишемо про це в чипі версії на кожній сторінці доків. Після 1.0 — жодних breaking changes у мінорних, депрекейшн з попередженням щонайменше на один мінор, міграційні гайди в репозиторії. Специфікація ІСЕІ пережила понад двадцять редакцій; підтримувати сумісність з нею — наша робота, а не ваша.

RaccoonGang, у відкритому репозиторії, з публічними issues і мілстоунами. Ми не благодійники: ми робимо державні проєкти на цьому коді самі. Контрибʼютори ззовні вітаються. І так, ми будуємо систему мотивації для тих, хто робить модулі для перевикористання.

Три способи зайти

Як долучитись

SDK росте з проєктів, а не з дорожньої карти. Кожна нова інтеграція, яку хтось робить руками, має стати модулем, і наступна команда витратить на неї годину.

01

Візьміть у свій проєкт

На новому державному сервісі авторизацію можна не писати з нуля. Поставте модуль, а те, чого бракує, опишіть в issue. Ми пріоритезуємо за реальними проєктами, а не за здогадками.

Швидкий старт

02

Винесіть свою інтеграцію в модуль

Якщо ви вже інтегрували щось державне, цей код уже написаний. Витягніть його в пакет, додайте доки і тести. Це приблизно 10% додаткового часу, який економить тижні наступним.

Запропонувати модуль

03

Станьте мейнтейнером напряму

У кожного модуля є власник. Це публічна роль з іменем у репозиторії, впливом на архітектуру і рішенням, яким буде стандарт для всіх наших держпроєктів.

Написати нам

Наступний реєстр можна не починати з нуля

Репозиторій відкритий, модулі ставляться з PyPI, документація не за формою реєстрації. Якщо ви робите державний проєкт на Python, почніть з однієї команди і скажіть нам, чого бракує.

pip install govtech-sdk