Repository navigation
Releases: uberblick-ai/ub-agents
Release list
ub-agents 0.1.15
Upgrading: let running agents finish, or stop the launcher, before updating an
installation: in-flight runs can no longer read, report or post a retrospective
through a replaced installation, and the removed run-context files and environment
variables have no compatibility path (#314). Commit and push the starter files on
the default branch and create required trigger and transition labels before
launching; launch checks these prerequisites and ub-agents doctor lists the fixes
(#319). Consumers of doctor --json must accept version 2: each label is one
github-label:NAME result with agent: null and a uses list containing each
consumer's agent, meaning and required (#322).
Added
- Attached terminal views let
rpoll GitHub immediately, including read-only queue refreshes during assignments, with cooldown and rate-limit protection (#296). - Interactive
initoffers runtime permissions for all starter agents, anddoctorgroups agents missing permission arguments into one warning (#321). doctoroffers to create missing workflow labels after confirmation and reports each label once with all its uses (#322).
Changed
- Pressing
qstops new claims and lets running work finish reporting and cleanup; the terminal view shows shutdown progress (#311). - In-run
read,reportand retrospectives validate a shared pinned context before contacting GitHub, preserving the launcher's trusted-input policy (#314). launchchecks committed and pushed starter files and required labels, explains idle queues, and points missing configuration toinit(#319).- Starter setup adapts to existing project guidance, uses project-neutral review priorities and decision authority, and lists the remaining setup steps (#324).
- CLI help groups operator and in-run commands, shows compact command usage and errors, and provides
-vas a version alias (#327).
Fixed
ub-agents 0.1.14
Upgrading: stop all of this repository's launchers and restart them together
on the new build before adopting shared-instructions. Other projects need no
configuration changes, and loop text in their AGENTS.md can be removed after
upgrading (#306). --option needs no coordinated restart, but submitting it
requires the updated report command and guidance (#288).
Added
- Projects can share loop policy across roles with optional
shared-instructions, reloaded before work is claimed (#306). - Stop reports accept numbered
--optionalternatives, and action-needed notices show resume instructions above folded reasoning and evidence (#288).
Changed
initpreserves project guidance files; launchers supply loop rules, and starter roles follow project guidance for changelog entries (#276, #306).- Starter integrators return fixable check failures to implementers; starter implementers and reviewers reject checks that pass only after changing the environment (#268).
- Run scratch and
TMPDIRnow live at$XDG_STATE_HOME/ub-agents/<owner>/<repo>/runs/<run>/scratch, defaulting to~/.local/state, outside the target checkout (#255). - Continuous launch keeps planning during assignments; Eligible shows the next ten items in claim order with counts and colored priority words (#248).
- Recent activity colors success and failure icons and status labels green and red, preserving row dimming and cursor highlighting (#257).
- Runs tab rows stay on one line with denial counts; successful reports show a spinner until accepted or a failure icon after their lease ends unaccepted (#284).
Fixed
- Blocked PR runs become eligible when their head changes after reporting, subject to the existing pickup gates, attempts and backoff (#293).
- Work sections stay expanded, and mouse clicks and keyboard navigation select only item rows, leaving headers and the idle line unselectable (#303).
- Completed issues and PRs leave Needs attention after released retry or blocked runs, including selected rows, while unresolved obligations remain visible (#227).
- Formatted Codex logs keep oversized events readable and show compact notices for incomplete records and page boundaries, preserving Raw access (#259).
ub-agents 0.1.13
Upgrading: stop all project launchers and wait for them to exit. While stopped,
update custom role files and stop-report command runtimes to include --action,
then upgrade and restart launchers together (#181). Add retrospectives boards to the
configuration only once every launcher runs 0.1.13: older launchers reject the key (#207).
Added
- Agents can post retrospectives to configured discussion boards with the launcher's
retrospective --body-file PATHcommand, which verifies the target URL (#207). - Clicking the selected item's header reference opens its GitHub issue or PR in the default browser on every terminal-view tab (#260).
Changed
- Stop reports require
--actionfor each independent ask; human-action notices collapse full reasoning, evidence and resume instructions in GitHub and terminal views (#181, #195).
Fixed
- The Work pane leaves one blank row before displayed Needs attention and Eligible headings in both wide and narrow layouts (#258).
ub-agents 0.1.12
Upgrading: the coordination record format is unchanged, so launchers can be
upgraded one at a time. Add trusted-bots to the configuration, and point role
instructions at read N, only after every launcher runs 0.1.12: older launchers
reject the key and have no read command (#190).
Added
- Agents can read filtered issues and PRs with
read N, and projects can trust configured bot feedback withtrusted-bots(trusted bots, #190). - Needs attention items have an Unblock tab showing trusted action-needed comments from the session snapshot or an explicit GitHub load (#178).
- Completed Claude runs record permission denials in their outcomes, with counts in
statusand command details in the Runs tab (#199).
Changed
- PR pickup after outside title or body edits requires a maintainer start or approval record, including trusted-authored PRs; approving reviews no longer clear edits (#190).
- The terminal view uses a consistent theme, rounded pane titles, colored work sections, numbered tabs, a formatted/raw indicator and a repository window title (#164).
- The Work pane grows with terminal width at 110×32 and above, with padding inside and between panes and a blank row between two-line items (#213, #231, #234).
- Below 110×32, the terminal view shows one full-width pane, with Enter/Esc navigation and retained selection and log position across resizes (#177).
- Running shows only this launcher's assignment; dependency and milestone waits are hidden, with retry backoff and paused-runtime plans following ready work in Eligible (#172, #173).
- Eligible lists each item once with all its eligible agents, and Needs attention rows show waiting time, agent, state and parking reason (#180, #233).
- Quitting an attached terminal view with
qinterrupts the launcher like Ctrl-C, and a graceful stop after SIGTERM shows the finishing run and held work (#176, #182). - Codex JSON run logs show compact assistant messages, command and tool activity, failures and completion in the terminal view (#126).
doctorshows warnings and failures with area summaries by default;--verboseretains the full per-check list (#191).
Fixed
- Formatted Claude logs skip cut-off first records, show tool progress as elapsed time and align timestamps; assistant text in Claude and Codex logs is readable without dimming (#192, #232).
- Item comments fold every agent's superseded candidate records and withdrawn election losers, while preserving current candidates and parking explanations (#214).
- Eligible drops stale carried rows during partial passes while preserving open Needs attention rows until replanning or pass completion (#235).
- The Work pane spinner animates at the same rate as the Runs tab and log status line (#217).
- The terminal view distinguishes PRs with accent-colored ⌥ markers, including Recent activity rows and their linked PR handoffs (#174).
ub-agents 0.1.11
Upgrading: stop all of a project's launchers and wait until every one has exited,
before upgrading any; upgrade and restart them together. Claims now use renewed
30-minute leases, newer builds read only v3 coordination records, and older builds
reject {report_command} configurations (#131, #132, #198). Old coordination records
stop being read, resetting blocked and exhausted state and attempt counts; before
restarting, remove the trigger label or add a stop label on every item that should
stay held (#132, #137). In Claude --allowedTools, replace Bash(ub-agents *) with
Bash({report_command} report *) (#198). Delete leftover ub-agent/… branches and
the .ub-agent/ directory (#137). Approvals now default off for private and internal
repositories; set approvals: on to retain the previous checks (#134).
Added
- Interactive launches open a read-only terminal view of work, context, outcomes and runtime logs;
--no-uikeeps plain output andqcloses only the view (#114, #116). - Every install, including Homebrew and checkouts, includes the terminal view and its Textual dependency (#116).
- On request, the view loads a selected item's missing description from GitHub, with cached results and rate-limit cooldowns (#115).
- Every launcher publishes a private, bounded session snapshot under
.ub-agents/sessions/for the view, without extra GitHub reads (#113). ub-agents help [COMMAND]provides a compact overview and detailed help with usage and examples, available without project configuration (#143).- Projects can configure outside-input approvals with
approvals: onoroff, defaulting from repository visibility; disabled approvals include only feedback from authors withwriteor higher (#134). - Runtime arguments accept
{scratch}to grant access to each run's private scratch directory; assignment context supplies its absolute path asscratch(configuration, #124, #194). - Launchers show an update banner with upgrade or restart instructions when a newer release or control-checkout code is available (#183).
Changed
- Configuration commands accept
--configbefore or after the command;approveandretrytake positional numbers, retaining deprecated--numberfor one release (#130). retrydefaults to the first configured agent whose kind applies and prints the selected agent before acting (#130).- Claims now last 30 minutes and renew every 10 minutes while owned, allowing pickup after a launcher dies without changing agent timeouts (#131).
- Runtime usage pauses start only when a run reports a limit, remain in launcher memory, and appear only in launch output (#135).
- Coordination reads only v3 records (#132).
- The Runs tab shows each item's filing and run history across launchers, with relative times, hosts, outcomes and visible omission counts (#179).
- Every terminal-view tab shares an item header; Log shows run status and earlier runs, with byte and retention diagnostics under raw access (#162).
- The terminal view uses a one-line activity footer, contextual keys and optional log-state pill;
?lists keys andpshows diagnostics (#161). - The terminal view's Issue tab renders description bodies as Markdown with real line breaks, while keeping links and terminal controls inert (#165).
- Claude logs use compact local timestamps, tool calls, line counts and distinct errors in the terminal view, with raw records available on demand (#163).
- The terminal work list groups Running, Needs attention, Eligible and Waiting items with counts, above a fixed lower half listing recent outcomes (#159, #171).
- Live terminal work rows show two compact lines with status glyphs, titles, ownership and counts; full reasons stay on the Issue tab (#160).
Removed
- The
ub-agents recovercommand is removed; short leases let launchers recover expired claims automatically on any host (#131). - Compatibility with the old
ub-agentcommand, configuration, environment, coordination markers and artifacts is removed; onlyub-agentsnames remain (#137). - The 90% runtime usage pause and shared pause state are removed, along with pause reporting in
status,doctorandstatus --json'sruntime_pauses(#135).
Fixed
- Agents report through the launcher's own installation regardless of PATH; incompatible record formats direct agents to that command instead of a missing-lease error (#198).
- Terminal work rows and their cached details stay visible while polling; completed passes remove omitted rows and apply the new planned order (#166).
- The terminal view follows newly started launcher runs until a row is selected, preserves selection when rows move, and opens raw log access safely during updates (#189).
v0.1.10
Upgrading: stop all of a project's launchers, wait until every one has exited,
upgrade, then start them together. Never mix releases within a project: older
launchers don't read the new record markers or branch names, and launchers on
different GitHub accounts now share one queue. This release renames the tool to
ub-agents. Rename ub-agent.yaml to ub-agents.yaml, add .ub-agents/ to
.gitignore and pull it into every control checkout before starting, and update
role instructions, command allowlists and hooks that call ub-agent or read
UB_AGENT_* (now UB_AGENTS_*). After the old launchers stop, remove their
worktrees and the old .ub-agent/ directory. Claude and Codex runs now pause at
90% of a usage window until it resets; daily runtime updates are opt-in.
Added
-
ub-agents launch N [--agent NAME]runs or recovers one specific item under
normal eligibility gates, using the first eligible configured agent or the named
agent. It reads only the item's required inputs, skips queue ranking, and explains
ineligible work with status reasons and a nonzero exit (#127). -
Each run gets a private scratch directory with mode
0700, exposed as
UB_AGENTS_SCRATCHandTMPDIR. Setup fails visibly if it cannot be created;
confirmed process termination removes scratch while preserving run logs.
Scratch removal failures retain remaining files and produce a diagnostic without
blocking lease release or marking process termination unconfirmed.
Agent guidance and runtime-access documentation cover its use (#124). -
Opt-in daily Claude Code and Codex maintenance at unclaimed launcher boundaries,
with installation detection, targeted updates, shared local cooldowns and locks,
active-run protection, concurrent start reservations and health recovery
without retrying updates. Opt-out and automatic-policy skips leave other
projects' shared cooldowns untouched. This repository enables
runtime-updatesfor both CLIs (#118). -
Launchers pause Claude and Codex runs at 90% usage or a reported usage limit,
until the window reset plus one minute, with a 15-minute fallback for untrusted
resets. Limit failures retry without attempts or backoff; alternatives remain
eligible and paused-only items wait. Local pause state in.ub-agents/runtime-usage/
appears instatusanddoctor;status --jsonnow returnsassignmentsand
runtime_pauses.
Launchers remove their state on exit and prune abandoned local state at startup;
process start times prevent recycled PIDs from showing stale pauses.
Codex runs use--jsonand their fresh session's usage records, andcheck
rejects Codex--ephemeralarguments (#85). -
queue.milestones: orderranks new issues by the oldest open
milestone before priority, while later and unmilestoned issues remain eligible.
Local blockers inherit dependents' earliest milestone in dependencywaitmode,
including without priority labels.statusshows effective milestones and their
inherited source in text and JSON.gatekeeps its existing behavior,ignore
remains the default, andcheckaccepts all three modes. This repository now
usesorder(#103).
Changed
-
Launchers on different GitHub accounts share one queue. Coordination trusts
currentwrite,maintainandadminauthors by default; optionallaunchers
narrows that set. Unreadable roles stop the pass, and untrusted launchers claim
nothing. Approval ancestry, feedback and notices use the same trusted set.
Recovery can settle another trusted account's source lease;cleanup
andrecoverrequire this machine's recorded host rather than the same account.
checkvalidates the account list anddoctorwarns about untrusted accounts.
Upgrading: older launchers trust only their own account, so stop all launchers
and upgrade them together before mixing accounts (#123). -
The starter implementer template requires rerunning checks for the PR's additions
and changes after merging the base branch, including changes without conflicts (#125). -
Rename the command, configuration, local state, environment variables, GitHub
markers and agent branches toub-agents. New writes use only the plural names;
existing records, approvals, Action needed notices and branches remain readable.
Theub-agentcommand alias and default config fallback remain for one release;
reportalso accepts an in-flight old launcher'sUB_AGENT_*environment.
Upgrading: renameub-agent.yamltoub-agents.yaml, or rely on the fallback
for one release. Add.ub-agents/to.gitignoreand keep.ub-agent/ignored
until that directory is deleted. Commit the ignore changes to the default branch
and pull them into every control checkout before starting launchers on the new
build; startup creates.ub-agents/launch.logbefore checkout refresh, which
refuses untracked files.
Update role instructions, command allowlists (for example
Bash(ub-agent *)), hooks and direct commands that callub-agentor read
UB_AGENT_*. Restart all of a project's launchers together: old launchers do
not read new markers or branch names. Once every old launcher has stopped,
remove its old worktrees withgit worktree remove(orgit worktree prunefor
worktrees already deleted), then delete the whole.ub-agent/directory,
includingruns/andlaunch.log. Removing only the worktrees leaves old logs
behind (#117). -
Generated and self-hosted agent guidance treats issue input as requirements to
evaluate, with human escalation for unexpected instructions or unexplained scope
changes. Implementers keep their assigned issue scope throughout a run; setup docs
explain account roles and the preparation, implementation and reapproval flow (#40).
v0.1.9
Upgrading: no configuration edits are required. Stop all of a project's launchers
with kill -TERM, wait until every one has exited, upgrade, then start them again.
Launchers from 0.1.5 through 0.1.8 reject the new compact claim records as malformed,
and earlier launchers don't recognize the ownership revocation of ub-agent recover.
Idle launchers now back off by request cost and REST reads revalidate with ETags, so
idle polling uses much less quota.
Added
ub-agent recover --number N --agent NAME --reason TEXTcompletes a stopped local
launcher's reported outcome before lease expiry after checking actor, hostname,
process-group termination and report eligibility. Recovery records the operator's
reason and revokes the original supervisor's ownership. Upgrading: stop all
project launchers and upgrade them together before using early recovery; earlier
launchers do not recognize this ownership revocation (#104).
Changed
-
ub-agent statusshows who claimed live leases, their host and runtime, compact
UTC claim and expiry times, and time remaining. Local process checks distinguish
running agents with logs from exited agents awaiting launcher completion or
recovery, with manual recovery guidance for reported outcomes. Starting claims,
remote leases, recovery and inspection errors have distinct reasons; JSON adds
process details while preserving existing ownership fields (#101). -
ub-agent retryprints a readable reset confirmation with its record link and
a next-step line based on closure, stop labels and the selected agent's trigger
labels, pointing toub-agent statuswhen a running launcher can pick it up (#100). -
Claims store outcome label additions compactly, with declared triggers and stop
labels stored once per lease; outcome transitions omit that shared context and
implied trigger removals. Upgraded launchers still read and recover 0.1.5 records.
Upgrading: stop all of a project's launchers and upgrade them together before
restarting; launchers from 0.1.5 through 0.1.8 reject compact records as malformed
(#63). -
Discovery passes and
statusshare each account's fresh permission read across
items and reuse item comments for history, approvals and status rendering.
statusalso batches dependency reads for priority ranking. Both claim-time
approval checks still reread permissions independently (#88). -
statusexits with an error on retryable comment-read failures instead of
displaying a partially unreadable row (#88). -
Empty discovery passes back off by their REST request cost under a fixed
250 requests/hour budget per launcher, assuming ten idle launchers share half
an account's quota. Low quota doubles the gap up to reset, ignoring expired
quota observations, with a one-hour cap; work resumes normal pacing, and idle
messages print only on state changes (#83). -
GitHub REST reads revalidate in-memory responses with ETags. Unchanged reads
confirmed by304 Not Modifiedpreserve fresh ownership checks without using
REST quota or extending the idle polling budget; writes and GraphQL remain
unconditional. Movingsincecursor queries skip the ETag cache so discovery
polls do not accumulate unused responses in memory (#86). -
Launcher and
statusstartup scans read repository comments from the longest
configured lease plus seven days, then continue incrementally. PR shared-branch
ownership reads the issue named in the branch directly;cleanupkeeps its full
scan. Re-apply a trigger or stop label to surface older unfinished outcomes (#87).
v0.1.8
Upgrading: no configuration edits are required. kill -TERM each launcher, upgrade,
restart. Claiming polls now cost a few requests when nothing changed instead of one
read per triggered item, and GitHub rate limits pause the launcher until the reset
instead of stopping it. poll-seconds is now the minimum gap between polls, also after
a run.
Changed
poll-secondsis the minimum gap between discovery-pass starts, including
after runs. Claiming polls evaluate candidates lazily and reuse unchanged
per-item discovery reads in memory, while claims and approval parking still
revalidate fresh GitHub input. Cold priority ranking lists dependency links
in pages instead of reading every issue separately (#79).
Fixed
- Continuous launch waits out GitHub rate limits without charging poll failures or
item attempts. Rate-limited reads from claim through release and recovery retry
while the lease permits, with interruptible waits capped at one hour.doctor
reports request quota and reset time from real response headers and warns below
10% remaining or when rate limited itself (#80).
Install or upgrade: brew install uberblick-ai/tap/ub-agents or brew upgrade ub-agents.
v0.1.7
Upgrading: no configuration edits are required. kill -TERM each launcher, upgrade,
restart. Items held only by the approval gate now get the project's stop label and an
Action needed comment (#66).
Changed
launchparks open, triggered items whose only pickup obstacle is missing
maintainer approval with the configured stop label and one Action needed notice
explaining how to start or reapprove them. Repeated polls leave the same gate
alone; the next claim minimizes its notice. Parking writes are advisory and
statusremains read-only (#66).
Fixed
- Assignment context passes other agents' accepted outcome summaries as trusted
feedback, so revisions receive routing corrections such as an integrator's
changelog request without repeating outcomes already handled by the agent (#77).
Install or upgrade: brew install uberblick-ai/tap/ub-agents or brew upgrade ub-agents.
v0.1.6
Upgrading: agents now work only on issues and PRs that a maintainer (maintain or
admin) started by applying a trigger label. After an outside edit or push, a
maintainer re-applies the label or runs ub-agent approve --number N. Give the launcher
account write only; doctor warns if it can start or approve its own work. check
now rejects Claude runtime-args that set --output-format. Upgrading from 0.1.5
needs no coordinated stop: kill -TERM each launcher, upgrade, restart.
Changed
- The launcher enforces maintainer starts and outside-input approvals for every
issue and PR run, including preparation. Failed pickup or post-claim checks park
work without spending attempts; agent context includes only trusted or cleared
feedback. Outside PRs require an approved head, with accepted agent revisions
in the base repository inheriting eligibility; changed fork heads need explicit
maintainer approval.ub-agent approveaccepts PRs, pins their head and clears
outside comments, reviews and review comments (#39).
Fixed
- Agent prompts and check-running roles require a single session that is never
resumed: finish checks in the foreground or wait for every background job,
then end the run withub-agent report(#70). - Agents with
different-runtime-fromuse only their first configured runtime when
the PR's current head has no accepted report from the named agent, blocking if that
runtime's CLI isn't installed. Pending handoffs wait for acceptance and successful
source release or recovery; identified sources retain the independence checks (#61). - Claude runs record tool calls, tool results and the final result, including
permission denials, inprocess.logusing verbose streaming JSON.checkrejects
Clauderuntime-argsthat override--output-format(#68).
Install or upgrade: brew install uberblick-ai/tap/ub-agents or brew upgrade ub-agents.