An AI teammate that takes care of your GitHub work.
Project description
Robert
Your Repo Teammate
An AI teammate that takes care of your GitHub work.
Robert is a self-hosted GitHub teammate that turns trusted issues, mentions, assignments, reviews, and follow-up comments into controlled coding-agent work. It coordinates local workers, isolates repository work in Git worktrees, audits proposed GitHub actions, and stores durable workstream state in SQLite.
What Robert Is
Robert is a local control plane for trusted GitHub collaboration. It discovers authorized work, routes it to a configured worker, supervises execution, audits the proposed GitHub actions, and publishes only actions allowed by the route.
Why Robert Exists
Coding agents are useful, but unattended GitHub automation needs durable state, clear trust boundaries, isolated workspaces, deduplication, and evidence. Robert provides those controls without requiring a GitHub App or hosted service.
Key Capabilities
- Trusted issue, pull-request, review, assignment, and mention handling.
- Multi-repository workstreams stored in SQLite.
- Per-route worker, required-skill, and recommended-skill configuration.
- Isolated Git worktrees for analysis, implementation, and source review.
- Native systemd user services and macOS LaunchAgents.
- Read-only local web UI with an explicitly enabled writable mode.
- Optional read-only OpenClaw chat commands.
- Safe migration from the former
dd-github-agentstate directory.
How It Works
flowchart LR
A[Poll GitHub with gh] --> B[Normalize and authorize]
B --> C[Create or resume workstream]
C --> D[Resolve route and skills]
D --> E[Prepare isolated workspace]
E --> F[Run configured worker]
F --> G[Audit structured result]
G -->|Accepted| H[Deduplicate and publish]
G -->|Blocked| I[Persist failure evidence]
H --> J[(SQLite state)]
I --> J
Robert polls GitHub through the authenticated gh CLI, normalizes events,
checks repository-specific trust rules, creates or resumes a workstream, selects
a route, prepares a task workspace, launches a local worker, audits its
structured result, and deduplicates approved GitHub actions before publication.
Security and Trust
GitHub text is untrusted input. Only configured actors can trigger work.
Repository overrides cannot change immutable route permissions or workspace
policy. Worker environments use an allowlist, credentials are never stored in
Robert configuration, and GitHub-facing text passes the redaction and audit
gates. The web UI binds to 127.0.0.1 by default.
Requirements
- Linux or macOS. Windows is supported through WSL.
- Python 3.10 or newer.
- Git and GitHub CLI (
gh) with an authenticated session. - At least one local worker command such as Codex.
pipxis recommended for installation.
Quick Start
pipx install robert-github-agent
gh auth login
robert init
robert doctor
robert service install
robert service start
The configuration is written to ~/.config/robert/config.yml. Runtime data is
stored under ~/.local/share/robert/.
Configuration
Robert uses versioned YAML. Configure the GitHub account, worker definitions, skill search paths, route overrides, and one or more repository checkouts. See docs/reference.md.
Worker Adapters
Built-in adapters support codex, tcodex, cbc, and a generic command
adapter. A worker definition chooses its adapter, executable, default model,
effort, timeout, prompt transport, and environment-variable allowlist.
Route Skills
Each route can declare required and recommended skills. Missing required skills block that task before a worktree or worker is created. Missing recommended skills appear in doctor output but do not block execution.
Multiple Repositories
Each repository has its own checkout, worktree root, trusted actors, concurrency limit, and optional route overrides. A failure in one repository does not stop other repository pipelines in the same cycle.
Daemon Service
robert service install
robert service start
robert service status
Robert runs in the foreground under systemd user services or launchd. Use
robert daemon run for direct foreground operation.
Local Web UI
robert web run
The default server is local and read-only. Writable mode requires:
robert web run --writable --operator "$USER"
Non-loopback binding also requires --allow-remote and an authenticated reverse
proxy.
OpenClaw
robert openclaw install
robert openclaw status
The optional plugin exposes read-only Robert status, task, run, and artifact commands. It never schedules or starts Robert.
Migration
Preview and import legacy state:
robert migrate dd-github-agent --dry-run
robert migrate dd-github-agent
Migration creates a separate backup and preserves legacy deduplication markers.
Troubleshooting
Run robert doctor --output json, check robert service status, and export a
redacted support archive with:
robert diagnostics export --output robert-diagnostics.zip
Do not attach private repository content or credentials to public issues.
Contributing
Read COMMUNITY.md, run the documented verification commands,
and sign commits with git commit -s. Robert uses the Developer Certificate
of Origin and does not require a CLA for the first beta.
Project Status
Robert 0.1.0b1 is a public beta. Polling is the only GitHub event transport in
this release. Interfaces may evolve before the first stable release.
License
Apache License 2.0. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file robert_github_agent-0.1.0b1.tar.gz.
File metadata
- Download URL: robert_github_agent-0.1.0b1.tar.gz
- Upload date:
- Size: 358.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c4286a8211a8335d69e2133408a312778ad30af78f6ce10ee77dc44cf3dbd631
|
|
| MD5 |
e2c3725c2af5ace92c109d3830eab857
|
|
| BLAKE2b-256 |
376e3e95e38bef82f85bdf6e711013d18404f6ced4fc1565834718a55b99b116
|
Provenance
The following attestation bundles were made for robert_github_agent-0.1.0b1.tar.gz:
Publisher:
release.yml on wklken/Robert
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robert_github_agent-0.1.0b1.tar.gz -
Subject digest:
c4286a8211a8335d69e2133408a312778ad30af78f6ce10ee77dc44cf3dbd631 - Sigstore transparency entry: 2223285193
- Sigstore integration time:
-
Permalink:
wklken/Robert@eb45c35b21d574625469ea204763cbf848049c99 -
Branch / Tag:
refs/tags/v0.1.0b1 - Owner: https://github.com/wklken
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@eb45c35b21d574625469ea204763cbf848049c99 -
Trigger Event:
push
-
Statement type:
File details
Details for the file robert_github_agent-0.1.0b1-py3-none-any.whl.
File metadata
- Download URL: robert_github_agent-0.1.0b1-py3-none-any.whl
- Upload date:
- Size: 279.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f502103f682b3430be7d66fc3a8c1883456cb9c511226dc62f65888958bffce
|
|
| MD5 |
8c40407f8f56b1a868347bfc8965cdf4
|
|
| BLAKE2b-256 |
3a0c7e94018227df24b1719d6ed4ee2259e3134e674a260b4dfd1b94211e78c3
|
Provenance
The following attestation bundles were made for robert_github_agent-0.1.0b1-py3-none-any.whl:
Publisher:
release.yml on wklken/Robert
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robert_github_agent-0.1.0b1-py3-none-any.whl -
Subject digest:
1f502103f682b3430be7d66fc3a8c1883456cb9c511226dc62f65888958bffce - Sigstore transparency entry: 2223285779
- Sigstore integration time:
-
Permalink:
wklken/Robert@eb45c35b21d574625469ea204763cbf848049c99 -
Branch / Tag:
refs/tags/v0.1.0b1 - Owner: https://github.com/wklken
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@eb45c35b21d574625469ea204763cbf848049c99 -
Trigger Event:
push
-
Statement type: