Skip to content
titpetricPublic

About

Task UI - a web based CI/CD runner, ssh gateway, integrating Bezsel and Claude

Topics

Resources

Security policy

Stars

96 stars

Watchers

4 watching

Forks

Latest commit

 

History

471 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Task UI

Run what your source trees declare, from the browser, and watch it run. Task UI looks at each folder under a root, detects the conventions it follows, and lists their targets as jobs: atkins pipelines, Taskfiles, Makefile targets, package.json and composer.json scripts, and a scripts/ folder. A job runs as a session on the server: a process on a terminal that anyone allowed can attach to, from any window, for as long as it runs.

Projects live in workspaces: a directory with a home, the checkout of shared tooling that the workspace's runs get as HOME, its checkouts side by side under src, its own secrets and SSH keys, and an export that moves it, keys and all, to another instance. A project's Files panel browses its checkout like a file manager: a file opens in a preview window. Every folder and directory has the git state of its checkout and one Jobs table of what runs there: its targets, the files that run, the jobs of each atkins skill that applies, and, for an admin, a shell and Claude Code in a terminal in that directory.

Claude works beside the jobs. A prompt asks Claude Code in a folder, a directory, about a run, from the header on any page, or at the end of a workflow, and Claude's reply lands under the question. |> Summarize runs a job and has Claude summarise the run. The Notes board takes messages and replies, and a note naming a user with @name is an instruction to that user: to the agent, which works on it at once, or to an agent elsewhere over MCP. The MCP server at /api/mcp serves an agent the same jobs, runs, notes and prompts, as a user with a token of its own. Permissions decide, per role and per user, what each may view, edit, delete and run. The inventory lists the hosts Beszel watches and runs a command on every one at once.

The dashboard: every terminal in progress, as it looks right now

The usage guide shows how to use it, a chapter per section of the sidebar: the dashboard, the inventory, workflows, runs, artifacts, schedules, notes, the projects and their jobs, the workspaces that hold projects, the recents, the modules, the settings, and MCP, for an agent that runs jobs. This README links to the rest.

A module is a plugin written in PHP, run inside the binary by phpscript and served at /m/<vendor>/<name> as an ordinary page: the layout is the instance's, the body is the module's, and nothing loads in an iframe. A directory with a modinfo.php in it is a module. titpetric/refinement ships with it: a thread of comments, each one a Claude run that writes artifacts and the README.md that indexes them.

The look follows oida: hairlines, one amber accent, dark and light from prefers-color-scheme. The type is a dashboard pair, Inter for the words and JetBrains Mono for the data, both vendored under frontend/view/assets/fonts/ with their licenses. The binary embeds all assets, and the front end makes no external requests.

Documents

Document What is in it
Usage guide The screen, a chapter per sidebar section, and MCP
Running the server The Docker image, the environment, users, roles and the server commands
API The JSON endpoints and the MCP server
Security The threat model, identity and roles, keys, secrets, terminals and agents, and the review's findings
Development The packages, the lint and test bar, the prose gate and the screenshots
Modules Writing a plugin in PHP: the directory, the bindings, and what the runtime refuses
Corrections Where the PHP runtime lacks what the module system needs, and what the code does instead
Testing Unit tests by default, integration tests behind a build tag

A quick start, with the compose file in Running the server:

task docker:run

Development

The packages, the lint and test bar and the screenshots are in docs/development.md. The tasks:

task: Available tasks for this project:

  • default: Run everything
  • fix: Fix code
  • install: Install task-ui
  • lint: Lint with splint, rulelint and vale, zero findings is the bar
  • run: Run task-ui over the demo projects
  • cover: Report unit test coverage per package
  • test: Run the unit tests
  • docker:build: Build task-ui docker image
  • docker:gen: Generate an ssh key for the key folder, ./keys
  • docker:run: Run task-ui in docker env
  • docs:shots: Regenerate the README screenshots
  • lint:docs: Lint the prose of the markdown, Go, PHP, JavaScript and CSS
  • test:integration: Run the integration tests: processes, databases and the network

task: default

Run everything

commands:

  • Task: fix
  • Task: lint
  • Task: install
  • Task: test

task: test

Run the unit tests

commands:

  • go test ./...

task: test:integration

One go test per package, batched by test name, under a memory cap, so a package that holds more than the cap fits cannot take the suite down. Takes a package pattern: task test:integration -- ./storage/...

commands:

  • scripts/test-integration.sh

task: cover

Report unit test coverage per package

commands:

  • go test -cover ./...

task: run

Run task-ui over the demo projects

commands:

  • go run .

task: docs:shots

Regenerate the README screenshots

commands:

  • scripts/demo.sh

task: lint

Lint with splint, rulelint and vale, zero findings is the bar

commands:

  • splint ./...
  • go run ./internal/cmd/rulelint
  • Task: lint:docs

task: lint:docs

Lint the prose of the markdown, Go, PHP, JavaScript and CSS

commands:

  • scripts/vale-gate.sh

task: install

Install task-ui

commands:

  • CGO_ENABLED=0 go install .

task: fix

Fix code

dependencies:

  • deps:splint

commands:

  • splint fix ./...
  • go vet ./...
  • go mod tidy
  • ./README.md.sh > README.md

About

Task UI - a web based CI/CD runner, ssh gateway, integrating Bezsel and Claude

Topics

Resources

Security policy

Stars

96 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages