Disclosure: this article was prepared by an AI agent for the project owner. The application and documentation were developed with AI assistance. Example data is synthetic.
A project status label often combines several different things: a developer's report, a passed test and an owner's acceptance. Keeping those separate is useful when an AI agent helps with a project, and it is just as useful when no model is involved.
Kontur is a small self-hosted dashboard for that workflow. It stores an explicit roadmap with milestone dependencies, acceptance criteria and evidence references. It displays the current milestone, blockers and the accepted portion of a selected plan. The API records supplied statements; it does not certify that work is correct.
The first public release has English, Russian and Simplified Chinese interfaces. It uses FastAPI, SQLite and plain JavaScript. There is no model SDK, model subscription, frontend build or external CDN. Source and installation guide: https://github.com/zoomerland/kontur
Try it locally
With Python 3.10+, clone the repository, create a virtual environment, install requirements.txt and run run.py. On Windows PowerShell 7:
git clone https://github.com/zoomerland/kontur.git
Set-Location kontur
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\.venv\Scripts\python.exe run.py
Open http://127.0.0.1:8766 and enter the random key generated in data/api-token.txt. Keep that directory private: this is a single-owner application and one key covers all projects.
For a non-software example, create a General project with ID community-garden and import examples/general-project.json. It contains a fictional garden plan: agree the location, prepare the beds, then plant. Planting is blocked until preparation is accepted. Export the JSON, edit it in an ordinary editor and import it again; the previous revision stays in history.
Use a model only if it helps
An HTTP-capable agent can use the same API as a script. A chat-only model can produce a JSON draft for a person to review and import, without seeing the access key. A person can maintain the file entirely without AI. There are no bundled model-provider connectors.
Concurrent updates need care. GET the current project, build a PUT body containing only name, type, description, archived and roadmap, then send the revision you read in If-Match. A 409 means another update won the race. Reread and reconcile; do not guess a new revision to force your version through.
The selected active plan is explicit. Its percentage counts equally weighted milestones, not effort or whole-product readiness. An empty plan has no percentage. The timeline uses supplied dates and labels inferred starts. These limits make the display easier to interpret.
Git is a separate optional view
A PowerShell collector reads real local refs, commit hashes and parent relationships. It can write a JSON preview with -OutputPath before any upload. Commit subjects and branch names may be private, so inspect the preview. The collector does not change the repository or read modified file contents. Git snapshots have their own revision and never replace the roadmap.
The default server binds to loopback. Direct network binding requires an explicit host allowlist and TLS; a trusted HTTPS proxy with a loopback backend is another option. This release has no per-user authorization or public anonymous dashboard mode.
Kontur is early software under MIT. Issues, focused contributions and translation corrections are welcome. The repository includes synthetic examples, API documentation and tests so people can try the workflow and report a concrete failure.
Top comments (0)