Skip to content

Conversation

@blooop
Copy link
Owner

@blooop blooop commented Jan 13, 2026

Summary

  • Add blooop channel for custom conda packages
  • Add devpod as a dependency from the blooop channel
  • Add pixi r dev task to launch project in devpod container
  • Add pixi r dev-restart task to recreate the container
  • Add dev-add-docker task to ensure docker provider is configured

Test plan

  • Run pixi r dev to verify devpod launches correctly
  • Run pixi r dev-restart to verify container recreation works
  • Test on a fresh system to verify docker provider gets added automatically

🤖 Generated with Claude Code

Summary by Sourcery

Configure the project to support running a dev container via devpod.

New Features:

  • Add the blooop conda channel to the Pixi workspace configuration.
  • Declare devpod as a Pixi dependency for the development environment.
  • Introduce Pixi tasks to start, restart, and prepare devpod-based development containers.

blooop and others added 2 commits January 13, 2026 08:17
- Add blooop channel for custom packages
- Add devpod as dependency for launching dev containers
- Add `pixi r dev` task to start devpod
- Add `pixi r dev-restart` task to recreate container

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The dev and dev-restart tasks now depend on dev-add-docker which
adds the docker provider if it's not already configured.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@sourcery-ai
Copy link

sourcery-ai bot commented Jan 13, 2026

Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Configures devpod-based development workflows via Pixi by adding the blooop conda channel, declaring devpod as a dependency, and defining Pixi tasks to bring up and recreate a dev container with automatic Docker provider setup.

Sequence diagram for pixi dev task with automatic Docker provider setup

sequenceDiagram
    actor Developer
    participant Pixi as Pixi_CLI
    participant Devpod as Devpod_CLI
    participant Docker as Docker_Provider

    Developer->>Pixi: pixi r dev
    Pixi->>Pixi: resolve_task_dependencies
    Pixi->>Devpod: devpod provider list
    Devpod-->>Pixi: provider_list
    alt docker_not_configured
        Pixi->>Devpod: devpod provider add docker
        Devpod-->>Pixi: docker_provider_added
    else docker_already_configured
        Pixi-->>Pixi: skip_provider_add
    end
    Pixi->>Devpod: devpod up .
    Devpod->>Docker: create_or_start_dev_container
    Docker-->>Devpod: container_running
    Devpod-->>Pixi: dev_environment_ready
    Pixi-->>Developer: dev_shell_or_editor_ready
Loading

Sequence diagram for pixi dev-restart task with container recreation

sequenceDiagram
    actor Developer
    participant Pixi as Pixi_CLI
    participant Devpod as Devpod_CLI
    participant Docker as Docker_Provider

    Developer->>Pixi: pixi r dev-restart
    Pixi->>Pixi: resolve_task_dependencies
    Pixi->>Devpod: devpod provider list
    Devpod-->>Pixi: provider_list
    alt docker_not_configured
        Pixi->>Devpod: devpod provider add docker
        Devpod-->>Pixi: docker_provider_added
    else docker_already_configured
        Pixi-->>Pixi: skip_provider_add
    end
    Pixi->>Devpod: devpod up . --recreate
    Devpod->>Docker: stop_and_recreate_dev_container
    Docker-->>Devpod: fresh_container_running
    Devpod-->>Pixi: dev_environment_ready
    Pixi-->>Developer: fresh_dev_shell_or_editor_ready
Loading

File-Level Changes

Change Details Files
Enable fetching devpod and other custom packages from the blooop conda channel.
  • Extend Pixi workspace channels list to include the custom blooop channel URL alongside conda-forge
pyproject.toml
Add devpod as a Pixi-managed dependency for the project.
  • Declare devpod as a dependency with an unconstrained version in the Pixi dependencies section
pyproject.toml
Introduce Pixi tasks to manage devpod dev containers with automatic Docker provider configuration.
  • Add dev-add-docker task to ensure the devpod Docker provider is present before running dev commands
  • Add dev task to run devpod up . for launching the dev container, depending on dev-add-docker
  • Add dev-restart task to run devpod up . --recreate for rebuilding the dev container, also depending on dev-add-docker
pyproject.toml
pixi.lock

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've found 2 issues, and left some high level feedback:

  • In the dev-add-docker task, consider using a more specific grep pattern (e.g. grep -q '^docker\b') to avoid accidentally matching providers whose names merely contain the substring docker.
  • Instead of devpod = '*', consider constraining the devpod version (e.g. to a compatible range) to reduce the risk of unexpected breakages from future releases in the custom channel.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- In the `dev-add-docker` task, consider using a more specific grep pattern (e.g. `grep -q '^docker\b'`) to avoid accidentally matching providers whose names merely contain the substring `docker`.
- Instead of `devpod = '*'`, consider constraining the devpod version (e.g. to a compatible range) to reduce the risk of unexpected breakages from future releases in the custom channel.

## Individual Comments

### Comment 1
<location> `pyproject.toml:22` </location>
<code_context>
 [tool.pixi.dependencies]
 python = ">=3.10"
 shellcheck = ">=0.10.0,<0.11"
+devpod = "*"

 [tool.pixi.feature.py310.dependencies]
</code_context>

<issue_to_address>
**suggestion:** Using an unpinned `devpod` version may hurt reproducibility of the dev environment.

Using `*` means the latest `devpod` will be fetched each time, which can introduce breaking changes and make the dev tasks non-reproducible. Please pin a version range instead (e.g. `>=x.y,<x.(y+1)`) to keep the environment stable while still allowing controlled upgrades.

Suggested implementation:

```
devpod = ">=0.5,<0.6"

```

You should adjust the `devpod` version range (`>=0.5,<0.6` in this example) to match the version you are currently using or have validated for this project. The key point is to avoid `"*"` and instead use a bounded range like `>=x.y,<x.(y+1)` to keep the environment reproducible while allowing controlled minor upgrades.
</issue_to_address>

### Comment 2
<location> `pyproject.toml:64` </location>
<code_context>

-
 [tool.pixi.tasks]
+dev-add-docker = "devpod provider list | grep -q docker || devpod provider add docker"
+dev = { cmd = "devpod up .", depends-on = ["dev-add-docker"] }
+dev-restart = { cmd = "devpod up . --recreate", depends-on = ["dev-add-docker"] }
</code_context>

<issue_to_address>
**suggestion (bug_risk):** Tighten the grep to avoid accidental substring matches when checking for the docker provider.

`grep -q docker` will match any substring (e.g. `my-docker-provider`), which could cause this check to think the `docker` provider exists when it does not. Please tighten the match (e.g. `grep -qw docker` or an anchored pattern appropriate to `devpod provider list`’s output) so it only matches the actual `docker` provider entry.

```suggestion
dev-add-docker = "devpod provider list | grep -qw docker || devpod provider add docker"
```
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

[tool.pixi.dependencies]
python = ">=3.10"
shellcheck = ">=0.10.0,<0.11"
devpod = "*"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: Using an unpinned devpod version may hurt reproducibility of the dev environment.

Using * means the latest devpod will be fetched each time, which can introduce breaking changes and make the dev tasks non-reproducible. Please pin a version range instead (e.g. >=x.y,<x.(y+1)) to keep the environment stable while still allowing controlled upgrades.

Suggested implementation:

devpod = ">=0.5,<0.6"

You should adjust the devpod version range (>=0.5,<0.6 in this example) to match the version you are currently using or have validated for this project. The key point is to avoid "*" and instead use a bounded range like >=x.y,<x.(y+1) to keep the environment reproducible while allowing controlled minor upgrades.



[tool.pixi.tasks]
dev-add-docker = "devpod provider list | grep -q docker || devpod provider add docker"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion (bug_risk): Tighten the grep to avoid accidental substring matches when checking for the docker provider.

grep -q docker will match any substring (e.g. my-docker-provider), which could cause this check to think the docker provider exists when it does not. Please tighten the match (e.g. grep -qw docker or an anchored pattern appropriate to devpod provider list’s output) so it only matches the actual docker provider entry.

Suggested change
dev-add-docker = "devpod provider list | grep -q docker || devpod provider add docker"
dev-add-docker = "devpod provider list | grep -qw docker || devpod provider add docker"

blooop and others added 3 commits January 13, 2026 08:26
- dev: attach via SSH in terminal (--ide none && devpod ssh)
- dev-vs: launch with VSCode (original behavior)
- dev-restart: recreate and attach via SSH
- dev-restart-vs: recreate and launch VSCode

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
devpod ssh doesn't use the SSH config with ForwardAgent, so switch
to using ssh directly with the devpod-generated host config.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Mount host SSH_AUTH_SOCK directly into container at /ssh-agent
instead of relying on devpod's tunneling which has known issues.
Revert to using devpod ssh command now that agent is available.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@blooop blooop merged commit c72826b into main Jan 14, 2026
7 checks passed
@blooop blooop deleted the feature/add-devpod-tasks branch January 14, 2026 16:00
blooop added a commit that referenced this pull request Jan 14, 2026
- Pin devpod version to >=0.8.0,<0.9 for reproducibility
- Use grep -qw for word-boundary matching to avoid substring false positives

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants