backloop


Namebackloop JSON
Version 0.2.0 PyPI version JSON
download
home_pageNone
SummaryA web-based git diff viewer and review tool with MCP server integration
upload_time2025-10-07 01:04:50
maintainerNone
docs_urlNone
authorNone
requires_python>=3.13
licenseNone
keywords code-review diff fastapi git mcp review
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align="center">
<img src="logo.png" alt="Logo">
</div>

# Backloop Code Review

A fully local code review platform with a built-in feedback loop, to make
iterating on agentic code output efficient and fun.

## Overview

Coding assistants do great on many tasks, but they are still lacking when
working on big, established code bases. In particular, getting code from a
working prototype to review-grade version that meets all coding standards often
requires a significant amount of manual polishing, that can easily eat up
the initial efficiency gains.

Backloop provides a streamlined workflow for reviewing code changes with
AI assistance, providing live feedback and an instant feedback loop.

![Review Loop](image.png)

It works by spinning up an ad-hoc web server that hosts a GitHub-like code
review UI that's linked to the current coding session.

For the assistant, the workflow looks like this:

1. Start a review by calling `startreview()` and give the returned URL to the user
2. Call `await_comments()`, and ...
3. ... if receiving a comment, work on it and call `receive_comment()`
4. ... if receiving REVIEW APPROVED, done.

For the user, the workflow looks like this:

1. Open the link to the review
2. Leave comments with feedback, or edit small touch-ups directly
3. When satisfied with the code, approve the review.

A review will have a url like `http://127.0.0.1:52267/review/c0837b48/view?since=HEAD~1&live=true`,
you can adjust the query parameters to get a different view on the repository.
See the reference section below to learn which parameters exist.

When in "live" mode, that is when the `live` parameter is set to true, the
review willl also show untracked files and non-staged changes in the current
working directory, and include an "edit directly" button to make small changes
directly, without waiting for a round of thinking.

## Installation

To add the MCP server to Claude Code use

```bash
claude mcp add local-review -- uvx --from backloop backloop-mcp
```

or run the equivalent command for the LLM frontend of your choice.

## Standalone Usage

You can also use Backloop without an agent, as a standalone local diff viewer:

```bash
uvx --from backloop server
```

This starts the web server which you can use to view and comment on
diffs manually.

## MCP Tools Reference

Once configured, Claude has access to these MCP tools:

### `startreview()`

Starts a new review session. Exactly one parameter must be specified:

- `since='HEAD'` - Review changes since a given commit, including uncommited changes
- `commit='abc123'` - Review a specific commit
- `range='main..feature'` - Review a range of commits

**Examples:**

- Review changes before committing: `startreview(since='HEAD')`
- Review changes after committing: `startreview(since='HEAD~1')`
- Review changes to a PR branch: `startreview(range='origin/main..HEAD')`

### `await_comments()`

Blocks until either a comment is posted or the review is approved.
Returns comment details (including the originating `review_id`) or "REVIEW APPROVED".

### `resolve_comment()`

Marks a specific comment as resolved by its ID.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "backloop",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.13",
    "maintainer_email": null,
    "keywords": "code-review, diff, fastapi, git, mcp, review",
    "author": null,
    "author_email": "Benno Evers <benno@bmevers.de>",
    "download_url": "https://files.pythonhosted.org/packages/b2/fd/044b4e5523dbf61b502be4eb5b39a6265f2a39838a611013c64e3ac8511b/backloop-0.2.0.tar.gz",
    "platform": null,
    "description": "<div align=\"center\">\n<img src=\"logo.png\" alt=\"Logo\">\n</div>\n\n# Backloop Code Review\n\nA fully local code review platform with a built-in feedback loop, to make\niterating on agentic code output efficient and fun.\n\n## Overview\n\nCoding assistants do great on many tasks, but they are still lacking when\nworking on big, established code bases. In particular, getting code from a\nworking prototype to review-grade version that meets all coding standards often\nrequires a significant amount of manual polishing, that can easily eat up\nthe initial efficiency gains.\n\nBackloop provides a streamlined workflow for reviewing code changes with\nAI assistance, providing live feedback and an instant feedback loop.\n\n![Review Loop](image.png)\n\nIt works by spinning up an ad-hoc web server that hosts a GitHub-like code\nreview UI that's linked to the current coding session.\n\nFor the assistant, the workflow looks like this:\n\n1. Start a review by calling `startreview()` and give the returned URL to the user\n2. Call `await_comments()`, and ...\n3. ... if receiving a comment, work on it and call `receive_comment()`\n4. ... if receiving REVIEW APPROVED, done.\n\nFor the user, the workflow looks like this:\n\n1. Open the link to the review\n2. Leave comments with feedback, or edit small touch-ups directly\n3. When satisfied with the code, approve the review.\n\nA review will have a url like `http://127.0.0.1:52267/review/c0837b48/view?since=HEAD~1&live=true`,\nyou can adjust the query parameters to get a different view on the repository.\nSee the reference section below to learn which parameters exist.\n\nWhen in \"live\" mode, that is when the `live` parameter is set to true, the\nreview willl also show untracked files and non-staged changes in the current\nworking directory, and include an \"edit directly\" button to make small changes\ndirectly, without waiting for a round of thinking.\n\n## Installation\n\nTo add the MCP server to Claude Code use\n\n```bash\nclaude mcp add local-review -- uvx --from backloop backloop-mcp\n```\n\nor run the equivalent command for the LLM frontend of your choice.\n\n## Standalone Usage\n\nYou can also use Backloop without an agent, as a standalone local diff viewer:\n\n```bash\nuvx --from backloop server\n```\n\nThis starts the web server which you can use to view and comment on\ndiffs manually.\n\n## MCP Tools Reference\n\nOnce configured, Claude has access to these MCP tools:\n\n### `startreview()`\n\nStarts a new review session. Exactly one parameter must be specified:\n\n- `since='HEAD'` - Review changes since a given commit, including uncommited changes\n- `commit='abc123'` - Review a specific commit\n- `range='main..feature'` - Review a range of commits\n\n**Examples:**\n\n- Review changes before committing: `startreview(since='HEAD')`\n- Review changes after committing: `startreview(since='HEAD~1')`\n- Review changes to a PR branch: `startreview(range='origin/main..HEAD')`\n\n### `await_comments()`\n\nBlocks until either a comment is posted or the review is approved.\nReturns comment details (including the originating `review_id`) or \"REVIEW APPROVED\".\n\n### `resolve_comment()`\n\nMarks a specific comment as resolved by its ID.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A web-based git diff viewer and review tool with MCP server integration",
    "version": "0.2.0",
    "project_urls": null,
    "split_keywords": [
        "code-review",
        " diff",
        " fastapi",
        " git",
        " mcp",
        " review"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "066c523eda20065dc626ed11436513f185986c20e8f2fd2d4f8dfaf12db19d99",
                "md5": "14d6e0d9714bf87c1a01cecb7da626d1",
                "sha256": "e3de1d454feb689c55d3d85c9456f26e8b8107b5a8878fa02fcf9cd45afc7e07"
            },
            "downloads": -1,
            "filename": "backloop-0.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "14d6e0d9714bf87c1a01cecb7da626d1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.13",
            "size": 63839,
            "upload_time": "2025-10-07T01:04:48",
            "upload_time_iso_8601": "2025-10-07T01:04:48.200757Z",
            "url": "https://files.pythonhosted.org/packages/06/6c/523eda20065dc626ed11436513f185986c20e8f2fd2d4f8dfaf12db19d99/backloop-0.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b2fd044b4e5523dbf61b502be4eb5b39a6265f2a39838a611013c64e3ac8511b",
                "md5": "a87c99c7d12a8b8e6fa83c597173363d",
                "sha256": "70248c9a89d88831c3d987ddb6bf3d0e5e4816a71da163a6828e18e31595ebf4"
            },
            "downloads": -1,
            "filename": "backloop-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "a87c99c7d12a8b8e6fa83c597173363d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.13",
            "size": 757160,
            "upload_time": "2025-10-07T01:04:50",
            "upload_time_iso_8601": "2025-10-07T01:04:50.145254Z",
            "url": "https://files.pythonhosted.org/packages/b2/fd/044b4e5523dbf61b502be4eb5b39a6265f2a39838a611013c64e3ac8511b/backloop-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-07 01:04:50",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "backloop"
}
        
Elapsed time: 1.23259s