#github-feed

1 messages ยท Page 16 of 1

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

See https://dagger.cloud/dagger/traces/3ff0b42e50792433f461b9f9c24d5b8b.

We seem to flakily get cache hits in container resolution:

stderr: Setup tracing at https://dagger.cloud/traces/setup. To hide set DAGGER_NO_NAG=1
assertion failed: 
--- expected
+++ actual
@@ -17,5 +17,5 @@
 โœ˜ .failLog: Void X.Xs
 ! process "sh -c echo im doing a lot of work; echo and then failing; exit 1" did not complete successfully: exit code: 1
-โ”‚ โœ” container: Container! X.Xs
+โ”‚ $ container: Container! X.Xs C...
vivid lintelBOT
#

Bumps the sdk-python-docker group with 1 update in the /modules/ruff/build directory: astral-sh/ruff.
Bumps the sdk-python-docker group with 2 updates in the /sdk/python/runtime directory: python and astral-sh/uv.

Updates astral-sh/ruff from 0.11.2@sha256:5de67d7c9f5fcb98109623ebbc9b41e20f4e6f80ca61442efd0ff2d469e151fe to sha256:f2491968bb001af02259a629f7edcf26bc4811a7a43c51ae18270087035478ac

Changelog
Sourced from as...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

Changes to elixir-sdk-dev module:

  • Introduce the init function that accepts the SDK source directory and the container.
  • Convert all functions to accept self object and uses it.
  • Add .formatter.exs file to add formatting option.

Changes to dagger ElixirSDK:

  • Modify to uses new elixir-sdk-dev module.
  • Drop base method since it's moved to elixir-sdk-dev module.
  • Drop Elixir version matrix. It doesn't uses for a long time.
  • Remove unused constant.
vivid lintelBOT
#

Started seeing this quite a bit in the last week or so, just random failures when starting execs, e.g.

Errors look like

create network namespace: CNI setup error: plugin type="dnsname" failed (add): route ip+net: no such network interface

---...

vivid lintelBOT
vivid lintelBOT
#

What is the issue?

discovered in pursuit of https://github.com/dagger/dagger/pull/10118, modules can be constructed to shadow core APIs like "git", at which point their functions can override core module functions.

their types, however, cannot do this same shadowing. that will error like this: ```Error: input: failed to get schema: failed to get schema for module "git-repository": type "GitRepository" is already defined by module "daggercore"


I would expect module constructors to h...
vivid lintelBOT
#

This adds two configuration variables to the Java SDK to help debugging:

  • mavenErrors: adds the -e flag to any maven commands to print errors
  • mavenDebugLogging: adds the -X flag to any maven commands to enable full debug logging

Thosw two variables can be added to the config section of the dagger.json file:

{
  "name": "foo",
  "engineVersion": "v0.18.4",
  "sdk": {
    "source": "java",
    "config": {
      "mavenErrors": false,
      "mavenDebugLogg...
vivid lintelBOT
#

...and deprecate the standalone WithAuthToken and WithAuthHeader methods.

Originally, this started as just an attempt to configure HTTP and SSH authentication similarly - we wanted to standardize on doing it all in the top-level constructor, or all using With helpers. I have a preference for keeping at the top-level, so that a user can't mistakenly do Directory.AsGit().WithAuthToken(), which wouldn't be used. However, as I refactored the git implementation, I realized there's...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

๐Ÿ”ฅ Fix older modules using requirements.lock, not vendoring the client library appropriately. This created a breaking change.

Fix typo that prevented the codegen executable to be bundled correctly. It's not a problem because it's a new thing, but it also means no one is taking advantage of it.

Also decided to revert the pinning based on engine version. Need more time to flush it and test it. Shouldn't cause any issue for users because the vendoring ignores the version constraint.

Fi...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

v0.18.4 has a bug w/ secrets where:

  1. Session A calls a function that dynamically creates a secret at runtime w/ setSecret and provides that to a git repo via withAuthToken
  2. Session A is still running, meanwhile Session B calls a different function (or same function w/ different args) that makes the same call to the same git repo w/ an auth token
  3. The functions return a container that has the git repo mounted (or otherwise returns some value that has the git repo in the DAG)
  4. S...
vivid lintelBOT
vivid lintelBOT
#

This commit

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

Currently we are using dagger for our build workflow.

One of the steps in this flow is that we are doing a docker build using the context:
baseContainer.build(context);
What we noticed is that there is a bit of a difference between the error output that we expect to see in local docker builds and dagger builds.

E.g.: forcing a build failure by making an instruction in the Dockerfile cause a failure

docker


  => [5/8] RUN apt-get install -y git gc...
vivid lintelBOT
#

De-duping currently running nested execs, such as module function calls, can break when:

  1. Client A starts the function call
  2. Client B makes the same call, gets deduped with the existing one
  3. Client A cancels the call (i.e. ctrl-C's, CI job shuts down for whatever reason, etc.)
  4. The call continues running, but now is trying to talk back to a session that doesn't exist anymore when dagger APIs are invoked

Errors vary, but example from the new integ test that repros this:

  ...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

Woops, #9980 had some issues.

  1. I have suddenly remembered why this was important: https://github.com/dagger/dagger/pull/9980#discussion_r2039628759. This needs to be lifted up, or the dagql cache key becomes permanently tainted with the client/session ids we used to get here. A ref is "frozen" in time, and so gets detached from these - this was causing us to not cache certain operations.
  2. The custom op cache key calculation had a slight bug - we were accidentally including IDs *twic...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What happened? What did you expect to happen?

I was trying to create a GitHub release and upload compiled binary as an asset but I realized that, I had to read that file not a string but "buffer" since it is in binary format. But as I can see File object doesn't have this functionality. I can read the content as string but not Buffer.

    // .....
    const octokit = new Octokit({ auth: await token.plaintext() });
    const releaseInfo = await octokit.repos.createRelease...
vivid lintelBOT
#

When installing the official Dagger helm chart following the docs here https://docs.dagger.io/ci/integrations/kubernetes/#example, the resulting volume paths seem to contain the dagger word a bit too much:

        serviceAccountName: default
        terminationGracePeriodSeconds: 300
        volumes:
        - hostPath:
            path: /var/lib/dagger-dagger-dagger-helm
            type: ""
          name: varlibdagger
        - hostPath:
            path: /run/dagger-dagger-dagger...
vivid lintelBOT
#

What is the issue?

Dagger Cloud web UI fails to load, with this error:

CompileError: WebAssembly.Module doesn't parse at byte 0: module doesn't start with '\Oasm'

Dagger version

dagger v0.18.5 (docker-image://registry.dagger.io/engine:v0.18.5) darwin/arm64

Steps to reproduce

  • dagger -m github.com/dagger/dagger/version (module may not be relevant)
  • Press w
  • Look at browser

Log output

No response

vivid lintelBOT
#

What is the issue?

Dagger shell behaviour with files (and directories?) is not the same. Seems like a bug as relative is working on WSL, but its not possible to make it work on Windows, because the directory system is different, so you cannot relative path to the file, if the module/shell is on a separate drive e.g D:\ compared to a file being passed to it.

https://github.com/pjmagee/daggerverse/blob/main/paradox-clausewitz-save/main.go

Dagger version

dagger v0.18.5 (docker-imag...

vivid lintelBOT
#

ref: #agents message

When the engine fails to start using the docker driver, it currently requires some manual docker logs troubleshooting to understand what's happening. We can simplify troubleshooting if we fetch the logs ourselves and print them through stdout.

Here's an example of what users generally get:

connection error: desc = "error reading server preface: command [docker exec -i dagger-engine-v0.18.5 ...
vivid lintelBOT
vivid lintelBOT
#

Bumps the sdk-python-docker group with 1 update in the /modules/ruff/build directory: astral-sh/ruff.
Bumps the sdk-python-docker group with 1 update in the /sdk/python/runtime directory: astral-sh/uv.

Updates astral-sh/ruff from 0.11.2 to 0.11.7

Release notes
Sourced from astral-sh/ruff's releases.

0.11.7
Release Notes
Preview features

[airflow] Apply auto fixes to cases where the names have changed in Airflow 3 (A...

vivid lintelBOT
#

This checks wasn't actually working as desired - we weren't actually checking that the commit was local (we need ^{commit} and --verify for that), but the functionality wasn't entirely broken, because we were missing the trailing whitespace (so skipFetch was never true, so we lost a little optimization here).

While we're here, we need to make this command non-fatal - a failure here doesn't actually need to be marked as a failure in OTEL, so we can skip past it (as noted by @shykes in...

vivid lintelBOT
#

What is the issue?

I have a function that takes a secret as input. In CI, the function is invoked simultaneously on the same engine, but with different secret values.

The secrets come from an environment variable that always has the same name.
I can then see that the function call is cached based on the fact that the environment variable has the same name, even though the engine can see that the value is different.

This is a regression, this behavior was introduced in 0.18.3.

D...

vivid lintelBOT
#

This fixes a failing test on main, see the first failure on https://github.com/dagger/dagger/commit/9fc751cd479a784828f7ea7a449bb2927997ff13: https://v3.dagger.cloud/dagger/traces/ec1bf6d77b4fdcf9253779adf8b6d5fa?showHidden=5b532095ad9f9342#726a64406e7856a2:L81

--- FAIL: TestRepoRootForImportPath (1.56s)
    vcs_test.go:300: RepoRootForImportPath("git.sr.ht/~jacqueline/tangara-fw/lib"): unrecognized import path "git.sr.ht/~jacqueline/tangara-fw/lib"

SourceHut looks to have ...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

I have arguments missing from the arguments list in dagger call --help. The arguments show properly in dagger shell .help .

Dagger version

0.18.5

Steps to reproduce

Module defined here: https://github.com/kpenfound/dagger-programmer/blob/main/src/dagger_programmer/main.py

Run:

dagger -m github.com/kpenfound/dagger-programmer call translate --help

The arguments list is missing required arg "mod":

ARGUMENTS
      --language string        ...
vivid lintelBOT
#

I noticed during a demo that if a module source is . and implements functions and also generate a client, the sdk/index.ts file will not expose the generated client in the sdk folder because it doesn't expect it to be there.

I changes the logic in the runtime to handle this specific edge case and updated integrations tests.

This behaviour could be handled in the codegen binary ideally but it's a quick fixes for now.

vivid lintelBOT
#

What is the issue?

My typescript module does not have it's dependencies generated in it's client

Dagger version

0.18.5

Steps to reproduce

When I run my typescript module, it fails on dag. is not a function.

Running dagger develop, I do not see any references to my dependency in the generated client. Switching back to 0.18.4 and running develop again, I can see the properly generated client

Log output

No response

#

Currently Dagger routes LLM requests to the appropriate client based on model names https://github.com/dagger/dagger/blob/main/core/llm.go#L285

This is not scalable to hosted providers (azure, aws bedrock, google vertex) or proxies (litellm, gpustack, ...) because you generally have a single OpenAI compatible service hosting all of your models.

Dagger should have an explicit provider option that overrides the automatic routing to support these services

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

Fixes https://github.com/dagger/dagger/issues/10298 (sort of...[^1])

This fixes a regression introduced in https://github.com/dagger/dagger/pull/7417 where conflicting flags no longer throw an error in dagger call.

[^1]: Fixes the missing error to clear confusion, the underlying problem of supporting a conflicting flag is in another duplicate issue.

TODO

  • missing tests
vivid lintelBOT
#

What is the issue?

This is the error I got:

2025/04/30 11:22:36 returned error 502: {"data":null,"errors":[{"message":"http do: Post \"http://dagger/query\": command [docker exec -i dagger-engine-v0.18.5 buildctl dial-stdio] has exited with exit status 137, make sure the URL is valid, and Docker 18.09 or later is installed on the remote host: stderr="}]}
exit status 1

I initially assumed this is the same issue as #3337 but that one has a merged PR from 3 years back so not sure ...

vivid lintelBOT
#

Append the module name to the maven cache volume.
We are seeing more and more troubles with the Java SDK and corruption of some files in the maven local repository (cached). This looks like to happen because of concurrent access to the maven repository... that are not supported.

Error looks like:

[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-install-plugin:3.1.2:install
(default-install) on project dagger-sdk-parent: Failed to install
metadata io.dagg...
vivid lintelBOT
#

We don't have any secretprovider tests - which feels scary :scream:

So, this PR adds them:

#

Add function implementation checking in the engine so it is aware of which function the SDK implements.
Move sdk related code into its own package except the interface definition bececause it's used in core.
Improve sdk documentation and code readability.
Make requiredClientGenerationFiles optional.
Put the Golang sdk implementation into its own file. Put some resolving logic from schema/module_source.go into core/module_source.go to avoid circular dependency with the new sdk packag...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

TODO:

  • [x] Lift all HTTP code to dagger
    • [x] Support ETags
  • [ ] Add new tests for exact caching behavior we want - we have no tests for this
  • [ ] Add support for HTTP authentication (would rather add this now, since it might affect structure of caching)
  • [ ] Tidy up code
    • TODOs
    • Move ref creation mounting entirely out of dagop (since we can do this outside of dagop :grin:)
vivid lintelBOT
#

As described on https://github.com/moby/buildkit/blob/master/docs/build-repro.md, buildkit supports the reproducible-builds variable SOURCE_DATE_EPOCH and a rewrite-timestamp build-arg that uses the epoch as timestamp for actions on the filesystem.

This PR follows the idea outlined in #7721 by:

  • Reading SOURCE_DATE_EPOCH at the client and propagate it as ClientMetadata
  • Propagate SOURCE_DATE_EPOCH from ClientMetadata to ExecutionMetadata
  • Propagate the env SOURCE_DATE_EPOCH to nested...
vivid lintelBOT
vivid lintelBOT
#

Problem

Given the following example:

package main

import (
	"context"
	"time"
)

type CacheErrorsTest struct{}

func (m *CacheErrorsTest) Test(ctx context.Context) {
	c := dag.Container().From("alpine").
		WithMountedCache("/lala", dag.CacheVolume("cache")).
		WithEnvVariable("BUST", time.Now().String()).
		WithExec([]string{"rm", "-rf", "/lala/foo.txt"})

	_, err := c.WithExec([]string{"ls", "/lala/foo.txt"}).Sync(ctx)

	if err == nil {
		panic("should error")
	}

	c.WithExec([]s...
vivid lintelBOT
#

Bumps the docs group in /docs with 2 updates: posthog-js and typedoc.

Updates posthog-js from 1.236.7 to 1.239.1

Release notes
Sourced from posthog-js's releases.

1.239.1 - 2025-05-02

fix: dont mangle some surveys properties (#1934)
docs: use history_change option on SPA playgrounds (#1929)

1.239.0 - 2025-05-01

feat: Avoid tracking pageview from prerenders (#1910)

1.238.0 - 2025-05-01

feat: allow ANY ...

vivid lintelBOT
#

Bumps the sdk-python-docker group with 1 update in the /modules/ruff/build directory: astral-sh/ruff.
Bumps the sdk-python-docker group with 2 updates in the /sdk/python/runtime directory: python and astral-sh/uv.

Updates astral-sh/ruff from 0.11.2 to 0.11.8

Release notes
Sourced from astral-sh/ruff's releases.

0.11.8
Release Notes
Preview features

[airflow] Apply auto fixes to cases where the names have changed in ...

vivid lintelBOT
#

What happened? What did you expect to happen?

I have a project that installs dependencies from a private registry.

Auth credentials for this registry are Dagger secrets:

    @function
    async def build(
        self,
        source: Annotated[Directory, DefaultPath("/")],
        python_registry_username: Secret,
        python_registry_password: Secret,
    ) -> Container:
        return dag.container().build(
            source,
            secrets=[
                dag.s...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

While the Dagger shell works with modules/functions requiring a single container, it fails to parse when a list of containers is passed to a Dagger function. I.e. the container publish function using the --platform-variants flag.

Dagger version

v0.18.5

Steps to reproduce

$ dagger shell -M
# arm64=$(container --platform linux/arm64 | from alpine) 0.0s
# amd64=$(container --platform linux/amd64 | from alpine) 0.0s

Attempting to pass the containe...

#

What is the issue?

When including annotations on an image using WithAnnotation, I've found that annotations do not appear when publishing a multiarch image. From what I can tell annotations are supported by the image index spec. Not sure if would this be considered a Dagger or Buildkit issue?

Dagger version

v0.18.5

Steps to reproduce

func (m Example) PublishTest(ctx context.Context) (string, erro...
vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

Environments are a way to define a specific set of functions an LLM will be able to see as tools. This allows to reduce the number of tools the LLM will see or to provide specific tools, both in order to improve the ability to complete a task.

[!NOTE]
This is extracted from #8030 but focusing only the LLM/Env/type awareness and not on the self calling aspects.

It's currently possible to use a primitive type a...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

This test started flaking in one PR. Didn't repro but looking at it seems like it could be explained by the cache getting pruned while the test is running (which would cause the assertions of cache re-use to fail).

The update uses nested execs to run commands, which ensures that the session stays open for the duration of the test case assertions and thus should prevent the cache from getting pruned until the test is done.

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

The current runners are giving us results around 4 minutes for the first job. Those specific runners are using nested virt atop of Intel SPR or EMR.

We're now switching to using nested virt atop of AMD CPUs, as we're getting results closer to 3m30s with those, instead of the Intel ones.

Let's switch the runners for now to use the AMD ones, while we keep working on shaving the time down more and more with different approaches. :-).

cc @gerhard

vivid lintelBOT
#

What happened? What did you expect to happen?

I have following module.

type Platform struct {
    terraformVersion   string
    awsAccessKeyID     *dagger.Secret
    awsSecretAccessKey *dagger.Secret
    awsSessionToken    *dagger.Secret
}

func New(
    // the version of the Terraform image to use
    // +default="1.5.7"
    terraformVersion string,
    // the AWS access key ID
    awsAccessKeyID *dagger.Secret,
    // the AWS secret access key
    awsSecretAccessKey *dagger.Secr...
vivid lintelBOT
#

Problem

with-directory is inconsistent with similar commands.
Most of them require:

  • The path to copy to.
  • The source to copy from.
$ dagger core container with-file --help

ARGUMENTS
      --path string       Location of the copied file (e.g., "/tmp/file.txt"). [required]
      --source File       Identifier of the file to copy. [required]
$ dagger core container with-mounted-file --help

ARGUMENTS
      --path string    Location of the mounted file (e.g., "/tmp/fi...
vivid lintelBOT
#

What is the issue?

To improve performance for long-running tests, I want to export cache volumes into container images, store them in a registry, and restore them on the next run. While writing these functions, I noticed strange behavior with cache volumes. I already know that changes to cache volume contents don't invalidate the engine's cache, and the current solution is to invalidate the cache using a random variable. However, I dis...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

Not sure how to phrase the title ๐Ÿ˜‚

Starting from 0.18.6, if you have LLM credentials in your environment pointing to 1password refs, like:

GEMINI_API_KEY=op://Employee/GEMINI_API_KEY/credential

Dagger will authenticate to pull those credentials as soon as shell is started. This is disruptive because I don't always need to authenticate the LLM client in every shell session.

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

Often found from log on my local machine when running dagger call sdk elixir test

== Compilation error in file test/support/object_field.ex ==
** (MatchError) no match of right hand side value: {:error, :nofile}
    lib/dagger/mod/object.ex:208: Dagger.Mod.Object.module?/1
    (elixir 1.18.3) lib/enum.ex:4390: Enum.filter_list/2
    lib/dagger/mod/object.ex:186: Dagger.Mod.Object.decoder_hint/1
    test/support/object_field.ex:69: (module)
! process "mix test" d...
vivid lintelBOT
vivid lintelBOT
#

In #8839 and #8587, we added basic dagger update functionality (as described in #6605). Today, running dagger update only refreshes the dependency pins to the original ref.

For example, if mymodule@main was installed, then updating will refresh the pin to the current state of the main branch. However, this doesn't work particularly well with tags - updating mymodule@v1.2.3 just refreshes to the state of the v1.2.3 tag, but doesn't actually update the tag itself.

In this [disco...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

Using DagOp (from https://github.com/dagger/dagger/pull/9395), we can lift buildkit operations into dagger-native code, while preserving most of the caching semantics that we rely on today. This is part of our efforts to rely more on our dagql caching (see efforts like #9682) - once dagql caching becomes more sophisticated we'd like to rely on it more completely, but we can't do that if all of the logic is defined in buildkit. The aim is to migrate as much of our code into `github.com/dagge...

vivid lintelBOT
#

Description

Whenever there is an update to Dagger and it needs to pull the newest Dagger engine image, the process gets through most of the download but then exits with an unexpected EOF. This issue is temporarily resolved by performing a docker pull of the new image manually.

Environment

  • Operating System: NixOS
  • Installation Method: dagger/nix flake

Logs

95010d052422: Pulling fs layer
b16238853797: Pulling fs layer
d0d32b261184: Pulling fs layer
failed to copy...
ornate vigilBOT
#

Overview

We have a new type, Env, but it had to be rushed out to unblock the LLM multi-object support, and is not fully mature. Let's discuss its evolution.

My priority is to get Env back on track as a more general primitive, not just for LLMs. The original design was aligned with this, but in the rush to get LLM integration to work, we made last minute changes that deviated from this goal: specifically the concept of input and output bindngs, the mandatory description...

O...

vivid lintelBOT
#

What is the issue?

Installing the helm chart using fluxcd fails as the version number gets rendered differently

This appears to happen with a few apps (though dagger is in this thread)
Flux seems to render the version with a Sha

So it fails with

  Failed to apply default image tag "registry.dagger.io/engine:v0.18.5+bbb202ea8932": couldn't parse image name "registry.dagger.io/engine:v0.18.5+bbb202ea8932": invalid reference format

It appears AppVersion is preferred over Versi...

vivid lintelBOT
vivid lintelBOT
#

Bumps the sdk-elixir group in /sdk/elixir with 1 update: ex_doc.

Updates ex_doc from 0.37.3 to 0.38.0

Changelog
Sourced from ex_doc's changelog.

v0.38.0 (2025-05-09)

Enhancements

Allow listing outside URLs in extras

Bug fixes

Ensure some cases where <, >, & and in headers would appear as entities in the sidebar
Fix outline caused by swup.js on Webkit based browsers
Fix bugs when computing synopsis
Automatically close the sidebar w...

#

Bumps the docs group in /docs with 2 updates: posthog-js and sass.

Updates posthog-js from 1.239.1 to 1.240.6

Release notes
Sourced from posthog-js's releases.

1.240.6 - 2025-05-09

feat: use css files for survey widget styles (#1948)

1.240.5 - 2025-05-08

fix: padding on cancel button (#1946)
chore: make rollup able to bundle CSS files (#1945)

1.240.4 - 2025-05-07

chore: include response within the survey_q...

vivid lintelBOT
#

What are you trying to do?

We would like to run commands in containers and use the output as the value of a secret

Doing it naively appears to be insecure and ends up logging password.txt. Snippet with a source available example

	plaintext, err := m.AwsSdk().
		WithEnvVariable("AWS_ACCESS_KEY_ID", roleCredentials.AccessKey).
		WithSecretVariable("AWS_SECRET_ACCESS_KEY", roleCredentials.SecretKey).
		WithSecretVariable("AWS_SECURITY_TOKEN", roleCredentials.SecurityToken).
		WithExec...
vivid lintelBOT
#

As we discovered recently, errors can cache between two sessions when they're active at the same time. This is a pain, and should probably be considered a bug - see #10320.

However, these tests shouldn't be failing - we've had this behavior forever, it's not a new failure. It's also not what we're testing, the flakes just add to our CI noise - we're aware it's an issue, and we should fix it (and add a test specifically for it).

vivid lintelBOT
vivid lintelBOT
#

Ran into these trying Dagger with behind-the-firewall OpenAI provider. Seems like it generates janky function calls for some reason. Adding these checks fixed everything. :shrug:

This is two commits but I suspect they both fix one issue, I just happened to hit one error before the other. It's probably generating a fully empty function call struct.

#

What is the issue?

A project with a number in the name, such as "k8s-test-app", causes class lookup failure with Python SDK.

No @dagger.object_type decorated class named K8sTestApp was found

I tried various combinations of dagger init --name k8s-test-app and renaming generated python module directory and class name. Also tried using [project.entry-points."dagger.mod"] in pyproject.toml but only managed to produce different kinds of lookup errors.

Would it be possible to con...

#

What are you trying to do?

The typical use case is running database migrations against a database service, with the goal of running a container using the resulting, migrated / seeded database.

Right now, there is nothing to chain from to get the modified directories on the service.

Example API that could solve this:

  @function
  def database_service(self, src: Source) -> dagger.Service:
      postgres = dag.container().from_("postgres:latest").with_env_variable("POSTGRES_P...
vivid lintelBOT
ornate vigilBOT
#

This sounds like it has at least some similarities with the OpenAI Agent SDK's run context. Linking here for comparison https://openai.github.io/openai-agents-python/context/

At a high level they're very different things - Env is objects + tools and it's dynamic, etc. Run context is just objects and just seen by your functions. But the DX from the function's POV could be similar

Yeah for sure there's a parallel. I'm trying to encapsulate the LLM-specific view in ModelContext (no...

ornate vigilBOT
#

love this, especially the flattening of inputs to plain "bindings" that are truly 1:1 with shell variables and env.run/prompt methods. if we can pull that off, it's a dramatically clearer abstraction for humans and LLMs alike.

my one knee-jerk reaction is that i'm not 100% intuitively behind separate Env and ModelContext types... there are a few things you called out as making sense on ModelContext but less on Env:

  • ModelContext.Serve -> MCP service (stdio or sse)
    • this makes sens...
vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

Topic

Dagger Cloud Integrated Secret Management Service

Problem

Current Dagger pipelines lack a built-in, seamless, and secure method for handling sensitive information like API keys and database credentials across various execution environments. This complicates secure secret management and degrades the developer experience.

Solution

Propose adding a robust, built-in secret management service to Dagger Cloud. This service would provide:

  • Centralize...
vivid lintelBOT
#

I've seen an increase in the number of flakes that look something like (both in CI, locally, and in the middle of test runs):

Error: failed to get configured module: input: moduleSource failed to resolve dep to source: failed to load local dep: select: failed to load local module source context: select: failed to get content hash: failed to get content hash: failed to get snapshot: failed to sync: failed to copy "/home/runner/work/dagger/dagger": failed to stat /var/lib/dagger/worker/sna...
vivid lintelBOT
#

Pass the moduleSourceID instead of a JSON file so it simplifies SDK implementation and let it rely on the codegen.

If a moduleSourceID is passed to the codegen CLI,
it will fetch its dependencies and store it in the codegen configuration.

Improve Go & SDK client codegen to only generate what is needed:

  • If there's only remote dep, do not load any dagger.json, just serve git deps
  • If there's local dependency, load the dagger.json, (throw an error or emit a warning if missing) and ...
ornate vigilBOT
vivid lintelBOT
#

What is the issue?

I followed

Setup tracing at https://dagger.cloud/traces/setup. To hide set DAGGER_NO_NAG=1

from the CLI.
It was working yesterday, so I believe it's a token expiration thing.
So I got to the traces setup page, clicked on the github logo
Then, I saw the loading page of dagger cloud v3, but nothing loaded and the request log showed me this

POST	https://auth.dagger.cloud/oauth/token

403
{"error":"invalid_grant","error_description":"Invalid authorization co...
ornate vigilBOT
#

my one knee-jerk reaction is that i'm not 100% intuitively behind separate Env and ModelContext types... there are a few things you called out as making sense on ModelContext but less on Env:

  • ModelContext.Serve -> MCP service (stdio or sse)

    • this makes sense if we have client support built into the engine, but i'm not sure if it's necessary when the CLI is the server, and calling Serve here might not ever make sense if we take the SDK/runtime approach to client support....
vivid lintelBOT
#

As a part of the release process we automatically upgrade daggerverse using the modules/daggerverse module. Since the development of the new Module Catalog & Insights feature the dagger cloud API now has daggerverse itself as a dependency. Because of this, after we upgrade daggerverse we must also run go mod tidy on the API itself, else we leave it broken on our main production instance. This upgrade also needs to include Kubernetes deployments and github workflows.

Why the new m...

vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

When an error is raised during execution (for instance raised by a withExec) the DaggerQueryException raised doesn't allow to get access to the underlying error easily.

The exception should have an easy way to access the underlying error without to deal with graphql errors. Default message should be improved and we should have access to the details of the error.

For instance, here is a Go code from the [cookbook](https://docs.dagger.io/cookbook/#terminate...

vivid lintelBOT
#

After a long week of experimentations, I think we were able to trim down a little bit the expected values, thus we're bringing here 3 different "types" that should demonstrate such potential improvement.

Together with this change, we're trying to stick to run what the Alt Runners 1 are running:

  • doc-lint
  • sdk-go
  • run those in sequence (not parallel)

Ideally someone from the community side should be able to take over this PR, and test this against the GHA already existent before ge...

ornate vigilBOT
#

Overview

Dagger should natively support .env files. It's a de facto standard for managing environment-specific configuration in a lightweight, portable way. It is widely supported, included by docker and docker-compose.

Proposed design

Default behavior

If .env exists in the current directory, or any parent directory, dagger should load it by default.

--env-file

An env file can be specified explicitly with `dagger -...

ornate vigilBOT
#

Sounds good :tada:

  1. My main question is whether transitive dependencies should be able to use default secrets from the original caller. E.g. CLI calls module A, module A calls module B, module B has a default secret - is it allowed to access it?

    It feels like the feature is a little lacking if it can't (though you can always just explicitly pass the secret between A and B), but if you can, it feels like a huge ecosystem vulnerability waiting to happen.

    I'd propose that we limit thi...

#

I think this would be like context directories. When you have transitive dependencies with defaultPath, they're relative to the module that defines it, not the one you're calling. So I'd say if module B has a default env var, it would have to have an .env in its sources. That brings up another question though. Some .env files could be committed to git to support this from a git source, but then you may still want a .env that's specific to the caller, so how do we feel about supporting...

#

I don't think we should handle overrides. It's not part of the original spec, and is not universally supported. In our case it's less needed because Dagger already has a way to express sane defaults in a function. If it's safe to commit in a shared .env, it's safe to commit in the function directly.. So better to only support the basic use of .env as an uncommitted env-specific configuration.

#
  1. My main question is whether transitive dependencies should be able to use default secrets from the original caller. E.g. CLI calls module A, module A calls module B, module B has a default secret - is it allowed to access it?

Great question. I'm not sure.

It feels like the feature is a little lacking if it can't (though you can always just explicitly pass the secret between A and B), but if you can, it feels like a huge ecosystem vulnerability waiting to happen.
I'd propose ...

#

Now that dotenv, dotenvx, and op, infisical, etc exist; it's becoming more common for .env.production to be supported and only store references to secrets.

The nice thing about this approach is that people can still run op run -- bun run deploy without having to go through a Dagger pipeline.

But this still leaves the security risk that some nested module cannot have access to those values just because it happens to be passed a directory with a .env file? So won't the `dagger.j...

#

Adding some thoughts on .env support with frameworks (e.g. Laravel, Symfony).

  1. Support for a .env file is usually for supporting local development (e.g. laptop) where the user does not have an elegant way to manage the environment (typically with a UI)
  2. When you deploy frameworks with .env support, you don't create a .env file in the production environment. Instead you manage the variables using a UI or define those in Terraform or a container spec

I'm wondering how the experi...

#

I think one of the maybe confusing things here is the expected experience.

From reading the comments and discussion:

  1. There are some functions that need a lot of env variables set. Right now we pass those as arguments, once you have 5 arguments to a function it's a frustrating developer experience to pass those into the function
  2. We need to keep the sandbox layer secure and prevent malicious modules from reaping environment variables from the host
ornate vigilBOT
#

It's weird to instantiate a LLM so you can expose its context over MCP, when you don't actually have access to a LLM endpoint.

I'm with you on this one, i just don't think it necessarily pollutes the concept of an Env to add the capability to make an MCP server out of one. "tools" are a combo of functions and builtins, and masking those makes sense outside the LLM context.

considering extension to ModelContext.resources might does kinda break what i'm suggesting though... like if a ...

vivid lintelBOT
#

What is the issue?

When an error occurs in a nested async function, the underlying error can be hard to find. This leads to a situation where Dagger Cloud tells you what failed (including cryptic looking dagger errors) but trying to figure out why something failed requires more scrolling and depending on the complexity of the pipeline can be quite difficult to understand.

The ideal behavior is that the second layer error showing why something failed should be the main thing you see whe...

vivid lintelBOT
#

Spinning out a fix made while working on the dagql persistent cache. Main motivation is that I'm getting an aneurysm trying to think about the correctness of this fix in combination w/ all the other changes I'm making there, so splitting out here will help verify it independently with fewer health risks.

If correct, this is likely a performance improvement in the immediate term anyways since it would mean previously we were re-calling fields that returned lists for each element in them whe...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

With incoming changes as part of dagop, we're heavily moving away from buildkit - as we lift more operations into dagger (see #10367), we'll have to work out what happens to some functionality. Specifically, dockerfile build support is pretty heavily integrated with buildkit-specific code - removing buildkit from dagger makes it hard to preserve this feature.

This is appearing a bit sooner than I thought :cry: lifting our exec implementation into dagger and into WithExec means that it beco...

vivid lintelBOT
#

Hi @eunomie
i've added these methods

  • default: i add also the path and extension.type field i think could be useful
  • toEnanchedMessage which contains message, path, type code, exit code and cmd
  • toFullMessage which contains message, path, type code, exit code, cmd and STDERR

Below the patterns of messages

  private static final String SIMPLE_MESSAGE = "Message: [%s]\nPath: [%s]\nType Code: [%s]\n";
  private static final String ENANCHED_MESSAGE =
      "Me...
vivid lintelBOT
#

Problem

As part of "project theseus" we're removing our dependency on buildkit. As a result our current implementation of Dockerfile compat (Directory.dockerBuild) will no longer work, because it relies heavily on buildkit and its dockerfile frontend.

This Dockerfile compat is a very useful feature and we don't want to lose it. So we need to find a solution

Solution

There are 2 possible designs:

  1. Implement a native Dockerfile-to-dagger adapter. This could be by porting buildkit...
vivid lintelBOT
#

What are you trying to do?

For introspection/automation/CI/LLM etc

I would have hoped for a more direct access to the full URL (including the org value which is retrieved from the token), maybe something like a getter on the engine object or something like this ๐Ÿ™‚
I agree that the full trace URL is printed at the end of the pipeline, my concern is that we haven't found the right log level to set on our CI, and as I said before this URL can be buried under tons of logs. I wished I co...

vivid lintelBOT
ornate vigilBOT
#

I definitely like this, I feel like this also links into an idea I was talking about with @cwlbraa about "universal -i", where you could trigger any failure of any operation to drop you into an interactive shell (instead of just execops/llms). That environment to drop into - would just be an Env. If we have persistent Envs as part of a cloud service, then this would be the way to debug CI failures. (just as another potential cool use case, like our own implementation of a buildkit `...

vivid lintelBOT
vivid lintelBOT
#

Was staring a lot at engine build traces today for unrelated reasons and noticed a few pieces of extremely low-hanging fruit in our various modules related to building the engine. Together they trim ~5-10s from an engine build based on some local runs, so not life-changing but enough to send out quick.

See individual commit messages for details.

vivid lintelBOT
#

Bumps the docs group in /docs with 2 updates: posthog-js and sass.

Updates posthog-js from 1.240.6 to 1.242.3

Release notes
Sourced from posthog-js's releases.

1.242.3 - 2025-05-19

fix: add new relic to payload host denylist (#1952)
chore: remove unused function from survey extensions (#1960)

1.242.2 - 2025-05-15

fix: center positioning for surveys (#1959)
chore: escape quotation marks on elements string han...

vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

imagePullSecrets (https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/) could be taken advantage of by dagger, mainly considering one can easily hit dockerhub pull limits.

Currently there's a workaround that can be done, by explicitly mounting the ~/.docker/config.json into the k8s pod where the dagger CLI runs.
However, if this could be integrated with a more "native k8s way", that would simplify a lot the life of dagger u...

vivid lintelBOT
#

In #8989, an issue emerged with GitLab CI's CI_JOB_TOKENs: Right now, when accessing remote modules via HTTP authentication using dagger call -m gitlab.com/..., the username is hardcoded to x-access-token (except for bitbucket.com). However, as specified in GitLabโ€™s documentation, username gitlab-ci-token is required when using basic authentication with CI_JOB_TOKEN. In the discussion, we recognized that not only recei...

vivid lintelBOT
#

What is the issue?

I've got a custom function with an optional argument verbose bool but when I try and run dagger call myfunc --verbose I get an error:

error: parse selections: parse field "myfunc": init arg "verbose" value as dagql.DynamicOptional (Boolean) using dagql.DynamicOptional: cannot create Boolean from int64

I haven't dug deeply, but my guess is it's the [top level verbose flag](https://github.com/dagger/dagger/blob/a0afe1e0532e58af0ebe6fc3b0881ee695dd7a6a/cmd/d...

vivid lintelBOT
#

What is the issue?

reproduction:

dagger -c 'container | from alpine | with-exec false & _wait' && echo "everything is ok"

will display:

โœ” connect 0.1s
โœ” load module 2.2s

$ Container.from(address: "alpine"): Container! 0.4s CACHED
โœ˜ .withExec(args: ["false"]): Container! 0.1s
! process "false" did not complete successfully: exit code: 1

Setup tracing at https://dagger.cloud/traces/setup. To hide set DAGGER_NO_NAG=1
everything is ok

note that the everything is ok was...

vivid lintelBOT
vivid lintelBOT
#

What is the issue?

When calling dag.Module().Runtime().Platform(), the engine panics because dag.Module().Runtime() is nil. This is when calling in context of a module. If this API is not meant to be used by Module authors, it should be hidden. I also couldn't find documentation relating to this API.

Dagger version

dagger v0.18.8

Steps to reproduce

No response

Log output

! panic while resolving Module.runtime: runtime error: invalid memory address or nil pointer d...

vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

Right now, it shows when it was executed, but I believe it would also be nice to see how long it has taken.
Especially if you chain runs on your CI (as I did) and want to compare 2 runs.

Why is this important to you?

As I passed from 5m30s with empty cache from depot.dev to 44s with hot cache, it's very compelling to see the improvement.

How are you currently working around this?

Clicking on each run to see the difference

ornate vigilBOT
#

As a suggestion - to unblock the use case for https://github.com/dagger/dagger/issues/8428, we'd want the pragma // +env or something right? Then that would let the author pull information from a bound environment. The "bound" environment would be the shell context for dagger shell, for dagger call we could have an --env flag.

What would this +env pragma do?

Mayybe, we could support a dag.Host.AsEnv function, to quickly construct an Env that maps to the user host? All the user env...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

When manually starting and stopping services, for example like https://docs.dagger.io/api/services/#start-and-stop-services, the code will fail with an error:

AttributeError: type object 'Client' has no attribute 'from_context'. Did you mean: 'from_connection'?

This appears to be because Service.start() and Service.stop() are still using Client.from_context(), which has been removed:

https://github.com/dagger/dagger/blob/v0.18.8/sdk/python/src/dagger/...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

This is a second take on the "platform module" feature. (First take: #10442 )

In this version, we add a platform: bool field to dependencies, instead of a top-level platform: { ... } field.

This means that any dependency can be marked as a platform module. It also means that a module can have multiple platform dependencies. Namespacing is unchanged from regular dependencies: each dependency is namespaced under its own name; dagger call cannot call dependencies, but dagger shell ca...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#
  • requires the user to be logged into Dagger Cloud
  • requires an org to be set
  • requires the org to have this feature enabled

This provisions a remote Engine just-in-time, connects to it and then runs all subsequent operations in this Engine. CLI must be connected to Dagger Cloud. Only Cloud orgs with this feature enabled are able to use this functionality. ALL commands will work exactly the same, just that they will run against this remote Engine.

This is a highly **EXPERIMENTAL...

vivid lintelBOT
ornate vigilBOT
#

Today there was a discussion on error verbosity: when a dagger workflow fails, is that error reported to the user in a way that is clear, or confusing? When users are confused by an error trace, is there a pattern in what exactly confuses them, and a clear description of what they would have expected instead?

@vito strongly recommended collecting as many real-world examples as possible, to help answer these questions together.

So I am starting this thread to collect these real-world exa...

#

Here's an example I encountered today:

Use case: re-generate the Dagger client library while developing an engine API change.
Trace: https://v3.dagger.cloud/dagger/traces/0dbd8d48c2a2992d94d0b85d056fdafe?span=26e9dd8702f8dbf7

Terminal output:

<img width="1351" alt="Screenshot 2025-05-22 at 15 35 17" src="https://github.com/user-attachments/assets/b7c7cbf1-fedb-4149-9e8a-5ce96c603636" />

Snippet of what I saw:

โ”‚ โ”‚ โ”‚ โœ” Container.withMountedFile(
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ path: "/mnt/dnsna...
vivid lintelBOT
#

This commit removes the distinction between AI and CI examples. It also updates the "features" section to be after the "examples" section in the sidebar order.

Since we have removed the AI/CI separation for examples and since the corresponding partials are not used in any other page, this commit removes the partials (and related Example React component) and places the content inline in the page.

vivid lintelBOT
#

What are you trying to do?

GitHub Models is a very convenient LLM provider that available in-context in GitHub Actions via GITHUB_TOKEN.

It's also easily available from any context where you're logged in with gh.

This makes it extremely convenient for LLMs involving software engineering, e.g. in GitHub Actions.

Could we please add GitHub Models as an implemented and documented model provider?

Thank you

Why is this important to you?

...

ornate vigilBOT
vivid lintelBOT
#

Problem

When Daggerizing a large monorepo, you have 2 bad options:

A) Make each component a dagger module. This fully leverages the features of Dagger, but if you have many components that share the same tooling stack ("cookie cutter apps"), then it introduces a lot of boilerplate.

B) Implement a central "platform module", and invoke it in the context of each component, with cd component; dagger -m platform-module. This solves the boilerplate problem, but you lose many valuable featur...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

Bumps the docs group in /docs with 1 update: posthog-js.

Updates posthog-js from 1.242.3 to 1.246.0

Release notes
Sourced from posthog-js's releases.

1.246.0 - 2025-05-22

fix: Block newer google bots (#1974)

1.245.2 - 2025-05-22

fix: linked flag any variant match (#1972)
fix: modernise domain spelunking cookie setting code (#1973)
chore: fix changelog (#1971)

1.245.1 - 2025-05-21

chore: update some dependencies (#1969)
fix: don't call receive...

#

Bumps the sdk-java group in /sdk/java with 1 update: org.mockito:mockito-core.

Updates org.mockito:mockito-core from 5.17.0 to 5.18.0

Release notes
Sourced from org.mockito:mockito-core's releases.

v5.18.0
Changelog generated by Shipkit Changelog Gradle Plugin
5.18.0

2025-05-20 - 5 commit(s) by Eugene Platonov, Patrick Doyle, Tim van der Lippe, dependabot[bot]
Make vararg checks Scala friendly (for mockito-scala) (#3651)
For ...

ornate vigilBOT
#

Another confusing: the engine said that the SDK doesn't exist (I use elixir) at the end of the error:

1   : test
10  : โ”‚ load module
11  : โ”‚ โ”‚ finding module configuration
14  : โ”‚ โ”‚ โ”‚ moduleSource(refString: "."): ModuleSource!
16  : โ”‚ โ”‚ โ”‚ โ”‚ sdkForModule: elixir
17  : โ”‚ โ”‚ โ”‚ โ”‚ sdkForModule: github.com/dagger/dagger/sdk/elixir@v0.18.6
18  : โ”‚ โ”‚ โ”‚ โ”‚ moduleSource(refPin: "", refString: "github.com/dagger/dagger/sdk/elixir@v0.18.6"): ModuleSource!
19  : โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ git(url: "github....
vivid lintelBOT
#

[!NOTE]
This is the first part of #10336 and #8030

TypeDefs split

To be able to generate types of the module itself, this means it requires to generate and expose (register to the engine) the types and functions exposed by the module even if the module can't be compiled. If the module is referencing its own types, there's a moment they don't exist.
This circular dependency is cut by allowing module SDKs to expose a new function moduleTypeDefs. If this function exists, it wi...

ornate vigilBOT
#

Thanks for the before/after and easy to reproduce example!

The tricky part with this is finding the right heuristic(s).

Thinking out loud:

All the UI knows for each span is that it has an error status + description. We don't know the root cause of any error beyond matching string values, which aren't always an exact match (like the input: ... prefix), and even with exact matches it's not a sure thing that they're all the exact same error incident (imagine something like `/entrypoin...

vivid lintelBOT
#

There are two main authentication mechanisms in the CLI/SDKs:

  • DAGGER_CLOUD_TOKEN: used primarily in CI environments
  • dagger login: used by individual users, likely in their machines

We currently only support using dagger login to provision remote engines. We should also support the use of engine tokens since what runs on CI and other remote environments. We faced this limitation when building an internal PoC that uses the Go SDK to dagger.Connect to an engine. At the moment we c...

vivid lintelBOT
#

What are you trying to do?

I would like to have a container that can talk with a service it depends on, such that they can call up each other:

flowchart LR
    a[Container] -->|dials| b[Service]
    b -->|dials| a

In practice, the Go code looks something like:

svc := docker.Container().From(...).AsService(...)
c := docker.Container().From(...)

// There is no way to make them communicate between one another at this stage!
c, err := c.Sync(ctx)

Why is this...

ornate vigilBOT
#

Think I figured out how to dedupe errors. :face_holding_back_tears:

asciicast

Errors now track an _origin extended field that contains the originating span ID. It's all handled in internal plumbing with a bit of UI logic to skip displaying bubbled-up errors. No SDK changes needed.

  • When we construct an ExecError, engine/buildkit/ sets the _origin as the `Container....
ornate vigilBOT
ornate vigilBOT
vivid lintelBOT
#

What are you trying to do?

When executing a module, the engine should be smart enough to adapt his calls based on what the SDK implements.

Each dagger module and client related commands need 1 or multiple interface implementation but some are also simply optional.

Here's the current state of called function based on the command:

| Dagger command | Method called on the engine | Method called on the SDK | Required | Note ...

vivid lintelBOT
#

We should revive the work in https://github.com/dagger/dagger/pull/8201 (was closed due to lack of time, but it's quite useful in our new SDK interface world that's being worked on by @TomChv as part of https://github.com/dagger/dagger/issues/9582).

This would help fix:

  • #6621
  • #7834
  • #7707

It also feels heavily linked to #10480, and would help decouple init and develop more.

This new Init method would be in a new Init interface in core/sdk.go, something like:

type Init...
ornate vigilBOT
#

@joepio welcome! trying to get some context about your current setup. Do you specifically need Cargo cross to cross compile your app? Just checking if using Rust's native cargo build --target feature is an option here.

If that's not the case, running Docker in dagger is quite straightforward. Using this module from the daggerverse: https://daggerverse.dev/mod/github.com/shykes/x/docker@811fa8a47958c484441304cec08d6fe30a7550b3 here's a typescript example on how to use it:

ornate vigilBOT
#

@jedevc Still WIP obviously but here you go: https://github.com/dagger/dagger/pull/10468/commits/0dc4e26b5f566d5c2ebb1dba70b99d64ee591c15

It's currently broken - I need to figure out in ExecError whether/how it should consider the Container.withExec its origin (which I have yet to get working) or the unlazying point (.directory in the above asciinema). The former is more consistent with the rest of the UI. I tried extracting it from the op description like we do elsewhere but haven't...

ornate vigilBOT
#

@vito what makes this difficult, is that there is a massive chasm between 1) knowing what feels "right" or "wrong" as a user, and 2) having any understanding of the underlying mechanics of our TUI + otel. So it's hard to have an opinion on this or that heuristic...

My 2 cents: when sharing the example above, my perhaps naive thinking was: just show me the top-level error and hide the rest. I already see which spans have an error status in the tree, so it's easy to dig deeper if I want to...

ornate vigilBOT
ornate vigilBOT
ornate vigilBOT
ornate vigilBOT
#

Thanks @marcosnils!

Having some issue to connect to docker though. That example gives error during connect: Get "http://docker:2375/v1.49/containers/json": dial tcp: lookup docker on 10.87.0.1:53: no such host

Docker is running of course (dagger works), so not sure what's the issue. Maybe that's a discussion for the x repo where this docker dagger module lives, though.

vivid lintelBOT
#

What is the issue?

Dagger clients do not properly detect session termination and continue executing even after a shutdown is triggered, resulting in the job running until a full CI timeout.

In our case, healthchecks were failing fatally in the background and the session was closed, but the client continued running .withExec() steps and exporting files, unaware of the termination. This caused the job to appear stuck without any progress updates, eventually failing only after hitting...

vivid lintelBOT
#

What is the issue?

When running this function:

    @function
    def lib_deps(self) -> dagger.Directory:
        base_dir = dag.container().from_("debian:bookworm-slim").directory("/usr/lib")      
        libs = (dag.container()
            .from_("debian:bookworm-slim")
            .with_exec(["apt", "update"])      
            .with_exec(["apt-get", "install", "-y", "zlib1g"])
            .directory("/usr/lib")
        )

        return libs.diff(base_dir)

I face

...
vivid lintelBOT
#

What is the issue?

The engine connection process is being interrupted, resulting in multiple connection errors. The specific error message "error reading server preface: read |0: file already closed" showing while trying to connect dagger engine. Please refer the attached screenshot.

Image

Dagger version

dagger v0.18.9 (docker-image://registry.dagger.io/engine:v0.18.9) windows/amd64

Steps to r...

vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

after installing dagger with brew, the first thing i did was run dagger -v. it spit out about 60 lines of error logs because i didn't have docker running. i think it would be less harsh and more efficient to check if docker -- or podman or whatever -- is running before attempting to run a series of docker commands. if its not running, display an informative error message that the container engine needs to be running.

example output for when a user doesn'...

vivid lintelBOT
#

What is the issue?

shamelessly copy-pasting from [discord](#general message):

in dagger 0.18.6, while exitting a container container | from node:18-alpine | with-mounted-directory /mnt ./ | terminal back into dagger shell, I woke up some hungry ass beast sleeping inside Dagger that immediatelly ate up all the remaining 14G of my RAM.

Yes, I'm calling it -- there's a memleak somewhere in there ๐Ÿ™‚ killing dagger proce...

#

What is the issue?

Example from Go:

package main

import (
	"dagger/repro/internal/dagger"
)

type Repro struct{}

func (m *Repro) Build(platform dagger.Platform) *dagger.Container {
	return dag.Container(dagger.ContainerOpts{Platform: platform})
}

The function call can produce a container:

$ dagger call build --platform=current
โœ” connect 0.4s
โœ” load module 3.1s
โœ” parsing command line arguments 0.0s

โœ” repro: Repro! 0.0s
โœ” .build(platform: "darwin/arm64/v8"): Container!...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

This is deeply WIP still, sending out to track progress publicly and start getting some real CI runs soon.

This is the next big step forward in making our cache logic "dagger native" and consists of:

  1. A persistent sqlite-based DB for dagql cache
  2. Support for associating and matching cache based on multiple cache keys associated with a single object in dagql
    • This is very in the weeds but also pretty fundamental for supporting content-based caching and "per-client state" in dagql...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

here's the change i'll be pushing to the 'agents in an existing project' guide today https://github.com/kpenfound/hello-dagger-py/pull/3
context:

  • we will not have self-calling shipped before the workshop and hack night next week
  • agent reliability with privileged env is not great,
  • copying the existing test function into the workspace and removing the privileged env greatly increases reliability even though it is not a very clean solution (the agent is no longer using "the same tools"...
vivid lintelBOT
#

What is the issue?

When testing out Dagger locally, layers seemed to fail to cache randomly. It was confusing to me because it seemed like Dagger caching wasn't working at all as advertised. I was running Dagger under a Colima VM on my mac with a virtual disk size of 25GB.

I pruned my Dagger cache (and some other caches on that VM) and restarted the test, and suddenly things were caching as expected! It was then when I checked the Dagger caching documentation and saw the note about Dagg...

#

Previously the core API for manually pruning the engine local cache only supported pruning all entries. This adds an optional arg to enable using the engine-wide default GC policy during these prunes.

The use case we have in mind is one where the automatic GC is disabled and instead triggered manually by users (e.g. at a time of low-traffic such that GC overhead is has minimal interference).

Ideally, the core API for managing the local cache would support the full breadth of pruning o...

vivid lintelBOT
vivid lintelBOT
#

What is the issue?

When following the instructions from: https://docs.dagger.io/api/ide-integration

$ cd projects && mkdir dagger-playground
if I then run $ dagger develop I get the following error

...

โ”‚ โ”‚ โ”‚ โœ” Directory@xxh3:bb913d32f4aa64b5.withNewFile(contents: "/sdk/** linguist-generated\n", path: ".dagger/.gitattributes", permissions: 384): Directory! = xxh3:1a82eb28f1a4a715 0.0s
โ”‚ โ”‚ โ”‚ โœ” .withNewFile(contents: "/.venv\n/**/__pycache__\n/sdk\n", path: ".dagger/.gitignore", ...
vivid lintelBOT
#

What is the issue?

223 : โ”‚ ): Container!
223 : [3.8s] | Error: failed to resolve image "ghcr.io/cli/cli:v2.63.2" (platform: "linux/amd64"): failed to resolve source metadata for ghcr.io/cli/cli:v2.63.2: failed to authorize: failed to fetch anonymous token: unexpected status from GET request to https://ghcr.io/token?scope=repository%3Acli%2Fcli%3Apull&service=ghcr.io: 403 Forbidden: {"response":{"data":null,"errors":[{"message":"failed to resolve image \"ghcr.io/cli/cli:v2.63.2\" (pla...
vivid lintelBOT
#

This adds support for using Google Cloud Secret Manager as a secret provider in Dagger, enabling secure secret retrieval from GCP environments.

This was tested with the following command:

DAGGER_TEST_GCP_SECRETS=1
GCP_PROJECT_ID=rawkode-academy-production
GCP_TEST_SECRET_NAME=KNOWN_SECRET
GCP_TEST_SECRET_VALUE=KNOWN_VALUE
go test -v -timeout 30s -run "^TestSecretGCP$" github.com/dagger/dagger/core/integration

Key features:

  • Support for multiple authentication met...
vivid lintelBOT
#

Ever forget to pass -E? Now you can just press it at runtime!

  • Added to keymap
  • Turns yellow when activated
  • Turns red when the TUI normally would have exited

Plus a few other minor fixes:

  • Fixed zoom/unzoom keymap entry being busted ("zoom" entry gained the "unzoom" conditional and only showed when you already zoomed something)
  • Show "interrupt" instead of "quit" in TUI mode, following #10455
  • Clean up dead code for custom exits, following #9620

(splitting out from ...

ornate vigilBOT
#

I was wondering if we could support .env files without to much modification to the API or developer experience to support .env file loading...

Dagger Secrets already support the following sources:

  1. Environment variables from the host machine
  2. Files from the host machine
  3. Values from external providers (e.g. 1Password and Hashicorp Vault)

Maybe we add a new pragma for a Dagger Secret that indicates it should load a file with a default path location of .env and that...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
ornate vigilBOT
vivid lintelBOT
#

What is the issue?

  1. Link to is incorrect. For example, the experimental_with_gpu is pointed to link https://github.com/dagger/dagger/blob/v0.18.9/lib/dagger/gen/container.ex#L223 which should pointed to sdk/elixir/lib/dagger/gen/container.ex.
  2. The experimental doesnโ€™t highlight as warning . For example, https://hexdocs.pm/dagger/Dagger.Container.html#experimental_with_gpu/2

Dagger version

dagger v0.18.9

Steps to reproduce

No response

Log output

No response

vivid lintelBOT
#

Bumps the sdk-java group in /sdk/java with 2 updates: org.junit:junit-bom and org.codehaus.mojo:exec-maven-plugin.

Updates org.junit:junit-bom from 5.12.2 to 5.13.0

Release notes
Sourced from org.junit:junit-bom's releases.

JUnit 5.13.0 = Platform 1.13.0 + Jupiter 5.13.0 + Vintage 5.13.0
See Release Notes.
New Contributors

@โ€‹Oyster-zx made their first contribution in junit-team/junit5#4311
@โ€‹etranda...

#

Bumps the sdk-python-docker group with 1 update in the /modules/ruff/build directory: astral-sh/ruff.
Bumps the sdk-python-docker group with 1 update in the /sdk/python/runtime directory: astral-sh/uv.

Updates astral-sh/ruff from 0.11.11 to 0.11.12

Release notes
Sourced from astral-sh/ruff's releases.

0.11.12
Release Notes
Preview features

[airflow] Revise fix titles (AIR3) (#18215)
[pylint] Implement missing-maxspl...

#

Bumps the sdk-python group in /sdk/python with 1 update: hatch-vcs.

Updates hatch-vcs from 0.4.0 to 0.5.0

Release notes
Sourced from hatch-vcs's releases.

v0.5.0
Changed:

Drop support for Python 3.8

Added:

Officially support Python 3.13
Avoid a deprecation warning emitted by a dependency when using the tag-pattern option

Changelog
Sourced from hatch-vcs's changelog.

0.5.0 - 2025-05-27
Changed:

Drop support for Python 3.8

Added:

Officially s...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
ornate vigilBOT
#

I'm currently running into an M1 compatibility issue running cross:

Unable to find image 'ghcr.io/cross-rs/x86_64-unknown-linux-musl:0.2.5' locally
0.2.5: Pulling from cross-rs/x86_64-unknown-linux-musl
docker: no matching manifest for linux/arm64/v8 in the manifest list entries

In a terminal I'd be able to run with the --platform linux/amd64 flag, but I don't know how to do that in Dagger.

Current dagger index.ts:

 @func()
  /** Doesn't work on M1 macs */
 ...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

This is just the minimum viable change to fix the data race on main.

We currently lock in the user of the dagui.DB instead of in the dagui.DB itself; in practice this race doesn't occur since it's guarded by the mutex in the Frontend.

It could be worth considering pushing this down into the DB but I've been here before and previously decided it's better to let the DB consume things as fast as possible and trust the caller to synchronize more coarsely.

So, this change ju...

vivid lintelBOT
#

What is the issue?

I use Dagger from a development VM that I'm regularly establishing fresh SSH connections to and attaching to long running tmux sessions, so sometimes the SSH_AUTH_SOCK env var is stale.

When this happens, Dagger functions all fail fairly early. AFAIK we do not use any features relating to the SSH Agent... though LMK if there's something turned on by default I should be disabling!

Dagger version

dagger v0.18.9 (docker-image://registry.dagger.io/engine:v0.18.9) ...

vivid lintelBOT
#

What is the issue?

When using Dagger to run a container with a vim ENTRYPOINT, the expected behavior of launching the interactive vim editor does not occur. Instead, the shell opens without triggering vim, despite the ENTRYPOINT being defined in the Dockerfile.

Dagger version

dagger v0.18.9 (docker-image://registry.dagger.io/engine:v0.18.9) darwin/amd64

Steps to reproduce

  1. Dockerfile
FROM alpine
RUN apk add --no-cache vim
ENTRYPOINT ["vim"]
  1. Dagger Interactive She...
vivid lintelBOT
#

What is the issue?

Hi.

running dagger develop modifies the dagger.json file when it shouldn't ?

Dagger version

dagger v0.18.9 (docker-image://registry.dagger.io/engine:v0.18.9) darwin/arm64

Steps to reproduce

From

{
  "name": "GotenbergBundle",
  "engineVersion": "v0.18.9",
  "sdk": {
    "source": "php"
  },
  "include": [
    "!.venv",
    "!sdk"
  ],
  "source": ".dagger"
}

if I manually modify like so :

-  "include": [
-    "!.venv",
-    "!sdk"...
vivid lintelBOT
#

Follow up to:

Rebased on top of https://github.com/dagger/dagger/pull/10512 for the fix.

Main objective for this was to make sure error extensions are propagated properly (easy), but I'm taking a fresh look at how exceptions are reported, including their stack traces. What's blocking me is that I spen...

vivid lintelBOT
#

What are you trying to do?

Hello,

In our setup, we have created our own JSON config file that controls a lot of the moving parts in the pipeline (software versions, toggleable options, etc.). The config file is a module input of type *dagger.File, and it gets read and unmarshalled at the start of the pipeline. This makes it so that the entire pipeline depends on the digest of the entire file. If we so much as just change a whitespace character in the file, the entire chain gets cache-...

vivid lintelBOT
#

What are you trying to do?

The cookbook provides a helpful example of how to continue using a container after a command execution fails. A common pattern is running tests and returning results, or executing a long-running build and uploading cache artifactsโ€”even if the build fails. I would like to use this pattern in dagger-shell as well; however, there seems to be no way to exit a dagger-shell s...

vivid lintelBOT
#

Spinning out from https://github.com/dagger/dagger/pull/10497 to double check it doesn't (somehow) break anything in isolation and to rip the bandaid on a huge source of rebase conflicts earlier.


Putting Query as a field in structs is a surprisingly significant source of pain when it comes to serializing/deserializing objects into/from the DB, mainly because the standard json marshal/unmarshal interfaces don't accept a context and thus don't accept smuggling.

I dealt with it fo...

vivid lintelBOT
#

We unified the singleflight implementation in local source w/ the spiritually-similar cache used by dagql a while back. This wasn't strictly necessary other than attempting to re-use code where it felt reasonable to, reduce maintainance burden, etc.

Recently, we started frequently seeing strange flaky errors during filesyncs about missing files, which have proved hard to repro w/ any consistency locally, which makes them hard to debug.

Th...

vivid lintelBOT
#

What are you trying to do?

Currently, the Java SDK is not usable in Enterprise use cases (maybe even non-enterprise) because it doesn't support user local .m2/settings.xml. This settings.xml is where the user sets private registry as well as auth. It's similar to the auth file docker stores on local and dagger pull that in automatically. Same happens with Git for private registries. This solution may require somethings similar.

Why is this important to you?

Java is probably o...

vivid lintelBOT
#

What is the issue?

If I run the following command time dagger --cloud -m github.com/dagger/dagger call check --targets=docs from my $HOME directory, the command fails and it takes ~30s total: https://dagger.cloud/gerhard/traces/120a91f99d41d8d5c0623d896c38e7b4#0f4fdcf4884dc83c

If I run the same command from cd $(mktemp -d) it succeeds & it finished within ~20s: https://dagger.cloud/gerhard/traces/36412a610d902cadb6fa2214ce376d6d#276b326231fc59cc

It seems that when I run t...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

There a strange interaction when adding to many instructions on the same container when I am using Dagger with Deno. If I call .withEnvVariable more than 20 times the programmable workflow throws an UnknownDaggerError. I've made a simple script below to replicate this error.

Thanks for supporting Deno. This is the feature I was expecting for a long time. Keep up the good work! ๐Ÿฆพ

Dagger version

dagger v0.18.9 (docker-image://registry.dagger.io/engine:v0...

vivid lintelBOT
#

Bumps the sdk-python-docker group with 1 update in the /modules/ruff/build directory: astral-sh/ruff.
Bumps the sdk-python-docker group with 2 updates in the /sdk/python/runtime directory: python and astral-sh/uv.

Updates astral-sh/ruff from 0.11.12 to 0.11.13

Release notes
Sourced from astral-sh/ruff's releases.

0.11.13
Release Notes
Preview features

[airflow] Add unsafe fix for module moved cases (AIR301,AIR311,AI...

vivid lintelBOT
vivid lintelBOT
#

Starting out with just a very simple Prometheus gauge for the number of connected clients. This is meant to support some cloud-related use cases.

Current usage:

  • ATM you have to set an env var on the engine container to configure the listener
    • Example: DAGGER_METRICS_ADDR: 0.0.0.0:9090
    • Will add config file + command line support before merging once we confirm we want to go with this approach
  • After that prometheus metrics are available over HTTP at /metrics
    • Exampl...
ornate vigilBOT
vivid lintelBOT
#

What is the issue?

If I call go mod vendor within a new dagger directory, then attempt to use daggger call, I get an undefined: gqlerror.

Dagger version

dagger v0.18.9 (docker-image://registry.dagger.io/engine:v0.18.9) darwin/arm64

Steps to reproduce

% dagger init --sdk=go 
% go mod vendor
% dagger call container-echo --stringArg 'Hello, Dagger!'
...
Error logs:

โœ˜ Container.withExec(args: ["go", "build", "-ldflags", "-s -w", "-o", "/runtime", "."]): Container! 0.9...
vivid lintelBOT
#

What happened? What did you expect to happen?

I'am using docker buildx bake to use multi-step build.

In docker buildx I can use target as base image like below

In dockerfile

FROM base_image

# .. some docker step

In bakefile reference

target "intermediate" {
   ...
}

target "output" {
   dockerfile = "./Dockerfile.out"
   contexts = {
     base_image = "target:intermediate" 
   }
}

Then, target output build docker image based on build result of target intermediate

I...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

the goal: establish a repeatable pattern for evals, decoupling them from Dagger's own evals.

evals are now implemented as separate types that implement this interface:

type Eval interface {
  Name(context.Context) (string, error)
  Prompt(attempt int) *dagger.LLM
  Check(ctx context.Context, prompt *dagger.LLM) error

  DaggerObject
}

along the way, use extracted https://github.com/vito/runt helper, to replace the evalT boilerplate. this isn't essential to the pat...

vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

It would be nice to be able to do this using 'Container' for several use cases, currently my options are (I guess) ...

Option Supported in Dagger Credentials Handled Complexity Best For
Container().Publish() โœ… Yes โœ… Yes โญ Simple Publishing
Docker CLI via container โœ… Yes (indirect) โœ… Yes via config ๐Ÿ”ง Moderate Existence checks
Raw HTTP via curl container โœ… Yes โš ๏ธ Manual auth โš ๏ธ Higher Fine-grained control
Bu...
vivid lintelBOT
#

What are you trying to do?

I have multiple modules that are using models. Some modules are using the same model, some are using others.
I'm defining the module in a .env file in each module directory, but there's some limitations:

  • what if I'd like to use two models running in different places? For instance I'd like to use a local model running on my machine and gpt, both inside the same dagger module.
  • how can I share configuration across multiple modules? I need to copy/paste my `...
vivid lintelBOT
#

Importantly! It's never correct to use this View to determine how to do compat. The view there is used as the default for graphql queries, but everything else uses the ID.View or the Selector.View.

To understand why, imagine the following scenario:

  • In server A (using version A), we call a field and get back an ID which has ID.View = A
  • Later on, in server B (using version B), we attempt to load this ID.

While we make sure that we select the field+inputs correctly accordin...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

As mentioned in https://github.com/dagger/dagger/pull/10248.

We should remove this method, and instead, have authentication at each point we need to do an authenticated operation, as follows:

type Container {
  from(
    address: String!

    username: String!
    secret: SecretID!
  ): Container!

  publish(
    address: String!
    platformVariants: [ContainerID!] = []
    forcedCompression: ImageLayerCompression
    mediaTypes: ImageMediaTypes = OCIMediaTypes

    username:...
vivid lintelBOT
vivid lintelBOT
#

Fixes Go SDK to rely on replace directive to detect if it should copy the Go SDK locally (for testing purpose).
By doing so, we can remove the dev argument from the API. Remove dev flag from dagger client install.

To use the local copy of the SDK on Go:

go mod edit -replace dagger.io/dagger=.//

Example:

go mod edit -replace dagger.io/dagger=./dagger/sdk

This will add the Go SDK loaded in the engine:

> dagger client install go
# Generate client ...
vivid lintelBOT
#

What are you trying to do?

It would be a really helpful feature to support telemetry for dagger.Service types.

Why is this important to you?

Adding telemetry support to dagger.Service would help developers with debugging applications. Capturing metrics like HTTP request methods, URIs, response times, and status codes would allow developers to troubleshoot performance issues locally, and in cloud, such as identifying slow endpoints.

How are you currently working around this?...

#

Previously we used links to represent cause and effect, and we always wanted to see the effect (exec) status/logs represented by the causal span instead (Container.withExec).

Now links are multi-purpose, and we don't want to unilaterally skip showing spans that have links. At this point this check is entirely redundant since all the spans we don't want to see already mark themselves passthrough. (following https://github.com/dagger/dagger/pull/8442)

vivid lintelBOT
#

The OTel log SDK batch processor consumes an enormous amount of memory when we use it for engine clients. Each client gets its own processor, along with an additional processor for each ancestor. The memory usage really adds up quickly: each processor has a queue, each log batch is written to each parent, and each export does a slices.Copy of the batch of records.

Now we'll just write log records to SQLite as soon as they're emitted, synchronously, one at a time. For the evals, this cut ...

#

Following the evals refactor (#10562) the CI job started OOMing. A huge portion of this was logs, which is fixed by #10578, but there was still an alarming increase in heap usage (1.9GB -> 7.48GB) after extracting the evals out into a module and switching to interfaces:

image

This change addresses a longstanding TODO in (*dagql.Server).Schema to only re-generate the schema when it actually changes. Tha...

ornate vigilBOT
#

@Sessional when you say manage a cache directory to cache the terraform downloads when you create a cache volume using the Dagger SDK (e.g. dag.cache_volume("name")? That cache volume is not always guaranteed to persist on multiple runs (e.g. dagger call function). If you are worried about the caching only during the session that would work.

cache the terraform downloads and only run downloads again if they aren't already downloaded

Not sure if this is helpful or not... but the ...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

[!NOTE]
This has been extracted and cleaned from #10475
This is a first step to #10336 and #8030

This PR introduces a new moduleTypeDefs method modules can implement. This method acts like moduleRuntime and should returned a container. Currently the container returned by moduleRuntime is called in two different ways:

  • with an empty string for parent name: the engine is asking for the type definition of the module
  • with a parent name: the engine is invoking a function d...
vivid lintelBOT
vivid lintelBOT
#

Another spin-off from the persistent dagql cache work


This adds support for marking arguments to fields as internal, in which case they can only be set by internal server-side self calls and never by external clients in graphql requests. They won't show up in introspection schema requests either, so they never make it to SDKs or docs.

We have wanted this in a variety of situations for a while, but the immediate motivation here is to ...

vivid lintelBOT
vivid lintelBOT
ornate vigilBOT
#

Hi there. This is slightly unrelated but kind of adjacent to the discussion happening here. Our organisation has a use case where we need to pass the host's ssh socket in to a dagger module so that we can clone private source in the container. This means we are supplying --ssh=${SSH_AUTH_SOCK} whenever we call our dagger functions on the command line. It would be great if this could be defaulted so we can avoid supplying this flag.

func (m *MyModule) Build(
    // +default=$SSH_A...
vivid lintelBOT
#

Bumps the docs group in /docs with 2 updates: posthog-js and sass.

Updates posthog-js from 1.249.4 to 1.252.1

Release notes
Sourced from posthog-js's releases.

1.252.1 - 2025-06-15

Fix crash when config has circular references (#2015)

1.252.0 - 2025-06-12
1.251.1 - 2025-06-12

fix: Add warning for when the user tries to identify using the cookieless sentinel distinct ID (#2013)

1.251.0 - 2025-06-12

feat: im...

vivid lintelBOT
#

Bumps the sdk-java group in /sdk/java with 1 update: com.github.javaparser:javaparser-core.

Updates com.github.javaparser:javaparser-core from 3.26.4 to 3.27.0

Release notes
Sourced from com.github.javaparser:javaparser-core's releases.

javaparser-parent-3.27.0
Developer Changes

fix(deps): update dependency org.junit:junit-bom to v5.13.1 (PR #4775 by @โ€‹renovate[bot])
chore(deps): update dependency maven to v3.9.10 (PR #4774 by @โ€‹renovate[bot])...

vivid lintelBOT
vivid lintelBOT
#

Revival of https://github.com/dagger/dagger/pull/10191 - apparently, once you force push to a closed PR, you can't re-open it. How wonderful.

It makes sense that the --no-mod flag should be allowed everywhere that the --mod flag is.

The main rationale for this was around dagger query, where it wasn't possible to run without attempting to load the current directory. But it also extends to other commands.

vivid lintelBOT
vivid lintelBOT
ornate vigilBOT
#

I have a repo with an assortment of different versions of terraform being used for different projects. We are using dagger to run terraform check on the projects when we swap them around. However, I find that dagger is downloading these versions of terraform regularly (I think that's what I'm seeing?), almost like the engine is pruning/evicting old layers and then recreating them at a later date. We might go a week or two without using one of the versions, and then when we go back it rebuil...

vivid lintelBOT
ornate vigilBOT
vivid lintelBOT
#

[!warning]
Based on https://github.com/dagger/dagger/pull/9518.

Been meaning to do this for a while. Rather than requiring our custom class for descriptions:

Before

import dagger

@dagger.enum_type
class Options(dagger.Enum):
    ONE = "ONE", "The first value"
    TWO = "TWO", "The second value"

After

import enum
import dagger

@dagger.enum_type
class Options(enum.Enum):
    ONE = "ONE"
    """The first value"""
    
    TWO = "TWO...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

Hi everyone,

During our migration to Dagger, I encountered a security concern when using .file().contents() to read AWS credentials generated via aws_signing_helper. Here's a simplified example of the relevant code:

.withExec([
  "bash", "-c",
  `
    curl -fsSL https://rolesanywhere.amazonaws.com/releases/${awsHelperVersion}/X86_64/Linux/aws_signing_helper -o /usr/local/bin/aws_signing_helper
    chmod +x /usr/local/bin/aws_signing_helper

    echo -n "$...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

Currently there are two issues that lead to bubbling up errors beneath the connect span:

  1. The error hoisting logic should only continue through UNSET spans when we're beneath a failed path
  2. The connect span, and all other spans using telemetry.End, has an UNSET status - they should have OK
  • UNSET should only correspond to bare defer span.End() usage where the intent is to measure duration without having any impact on success/failure status
vivid lintelBOT
#

Cache hit on withMountedSecret with different secret values in parallel execution

Description

When using withMountedSecret in parallel goroutines with different secret values but the same secret name, the cache appears to return the same secret content for all containers, even though different values were set. This leads to incorrect secret mounting where all containers get the same secret value instead of their intended unique values.

Expected behavior

Each container should mou...

vivid lintelBOT
vivid lintelBOT
#

As far as I can tell, this only adds the internal capability of the httpAuthUsername to the general code, but not the general capability of reading it from git, right?

I am trying to clone private repositories in GitLab with the CI_JOB_TOKEN (I don't want to create a long-lived SSH key), with the following .gitlab-ci.yaml example

.dagger:
  extends: [.docker]
  before_script:
    - apk add curl
    - curl -fsSL https://dl.dagger.io/dagger/install.sh | DAGGER_COMMIT=head BI...
#

See https://github.com/dagger/dagger/pull/10605#issuecomment-2985933172 where this was reported first.

With #10605 we introduced Git.httpAuthUsername; however, during refactoring, the part where the username was passed on from the credential helper was accidentally removed. This PR adds it back.

During testing, I encountered the following error:

failed to resolve git src: failed to resolve git src: select: select: failed to compute cache key for Query.git: assign input "httpAu...
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

When using Dagger in gitlab-ci the pipeline succeeds even if the steps fail.

For example we push the alpine container to a registry. It returns success even if it fail to push the container.

Dagger version

dagger v0.18.9 (docker-image://registry.dagger.io/engine:v0.18.9) linux/amd64

Steps to reproduce

  1. Deploy a Kubernetes Executor
  2. Create a dagger pipeline to push an image to private registry.
  3. call the pipeline in gitlab ci without specifying the ...
vivid lintelBOT
#

Telemetry allows to communicate all information about the execution of a workflow. This is the way to communicate calls to other modules for instance.
Those information will be rendered in both the CLI and Dagger cloud.

The telemetry layer has not been yet implemented in the Java SDK.

Example

To better understand the issue, let's take an example using two modules, one in Go (with the telemetry integration) and one in Java (without telemetry)

Both are using a [de...

ornate vigilBOT
vivid lintelBOT
#

Another big carve-out from persistent cache work, this change:

  1. Generalizes dagql.Instance to be able to wrap any type (whereas previously it could only wrap objects)
    • Additionally, there are now two types: dagql.Instance and dagql.ObjectInstance (which is a dagql.Instance plus some more object-specific methods)
    • Partially to support this, these types are now type-param'd Interfaces rather than just structs
  2. Does some refa...
vivid lintelBOT
vivid lintelBOT
#

Bumps the sdk-python-docker group with 1 update in the /modules/ruff/build directory: astral-sh/ruff.

Updates astral-sh/ruff from 0.11.13 to 0.12.0

Release notes
Sourced from astral-sh/ruff's releases.

0.12.0
Release Notes
Check out the blog post for a migration guide and overview of the changes!
Breaking changes

Detection of more syntax errors
Ruff now detects version-related syntax errors, such as the use of the match
statement on Python versions ...

vivid lintelBOT
#

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • `@dependabot ...
#

[!NOTE]
This needs to be merged after #10584
In the meantime, only the last commits flagged sdk/java are really for this PR, the others are from the base branch.

This is the java implementation of the new moduleTypeDefs defined in #10584

This is done by splitting the entry point in two parts, one to register types, on to invoke functions.
This split, at least on the codegen aspect, is interesting even without moduleTypeDefs as it makes responsibilities clearer.

vivid lintelBOT
vivid lintelBOT
#

What is the issue?

I have created a dagger function to build a go project. It simply executes go mod download and go build -o ... in a container basically. If the function is used to compile the own dagger project, locally everything is fine but in a CI environment, regardless of GitHub or GitLab, the build fails. This can also reproduced if not the own go code is compiled, but another project (still with the same error).

Link to demo repo: https://github.com/daniel-naegele/dagger-d...

vivid lintelBOT
#

Bumps the sdk-elixir group in /sdk/elixir with 1 update: req.

Updates req from 0.5.10 to 0.5.12

Changelog
Sourced from req's changelog.

v0.5.12 (2025-06-24)

[run_plug]: Do not raise on unknown content types.

[Req.Test]: Improve Req.Test.transport_error/2 error message.

v0.5.11 (2025-06-23)

[encode_body]: Fix leading newline before multipart body.

[run_finch]: Handle initial transport errors on into: :self.

[run_plug]: Automatically parse r...

#

Bumps the engine group with 1 update in the / directory: github.com/openai/openai-go.

Updates github.com/openai/openai-go from 1.6.0 to 1.7.0

Release notes
Sourced from github.com/openai/openai-go's releases.

v1.7.0
1.7.0 (2025-06-23)
Full Changelog: v1.6.0...v1.7.0
Features

api: make model and inputs not required to create response (19f0b76)
api: update api shapes for usage and code interpreter (d24d42c)
client: add escape hatch for null slice &am...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

Given the following code:

type Test struct {
	Test string
}

func (m *Dagger) Test(test Test) {}

Running test test in the Dagger interactive shell results in:

โœ˜ test test 0.0s ERROR
! query:
  query{dagger{test(test:"test")}}

  error: parse selections: parse field "test": init arg "test" value as core.DynamicID (DaggerTestID!) using core.DynamicID: decode "DaggerTest" ID: failed to unmarshal proto: proto:ย cannot parse invalid wire-
  format data
```...
vivid lintelBOT
#

What is the issue?

With v0.18.10 it was possible to pass the string values of an Enum type with the CLI. With v0.18.11 this appears to be broken. Furthermore, values shown in --help text are inconsistent and unclear to users, making it difficult to determine which values to use. No breaking change that would explain this behavior is mentioned in the v0.18.11 release notes. I therefore expect this to be a bug rather than intended behavior.

Dagger version

dagger v0.18.11 (docker-im...

vivid lintelBOT
#

For some reason Wolfi has been occasionally publishing APKINDEX files where the latest version of ld-linux specifies a hard dependency on an exact version of glibc which is not present in the APKINDEX yet. It goes away within an hour usually, but it's frustrating in the meantime to not be able to build the engine obviously.

For now, attempting to resolve this by just specifying glibc, ld-linux and libcrypt1 versions that are one minor version ago. I repro'd the problem by manually construc...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

OrbStack will by default automatically put a CA cert in containers,
including the dagger engine if the user is running on MacOS w/ OrbStack.

This results in the engine seeing a custom CA cert and deciding to
automatically install it in every container. While this works it
introduces performance overhead for a case that is unlikely to be of any
utility.

This therefore disables automatic CA cert installation when the only ...

vivid lintelBOT
#

What is the issue?

Container.WithSymlink seems to silently pass when attempting to overwrite an existing but broken symlink. This has caused me some headache while debugging.

Container.WithSymlink correctly errors out if you try to overwrite an already existing but working symlink.

Perhaps there should be added an extra field to ContainerWithSymlinkOpts that allows for overriding any existing symlinks?

...

vivid lintelBOT
vivid lintelBOT
#

Fixes a regression from https://github.com/dagger/dagger/pull/10594 where the +default value itself has a +, which was getting parsed incorrectly and resulting in panics like:

9   : โ”† โ”† โ”† [0.5s] | internal error during module code generation: runtime error: slice bounds out of range [50:28]
9   : โ”† โ”† โ”† [0.5s] | goroutine 1 [running]:
9   : โ”† โ”† โ”† [0.5s] | runtime/debug.Stack()
9   : โ”† โ”† โ”† [0.5s] | 	/usr/lib/go/src/runtime/debug/stack.go:26 +0x5e
9   : โ”† โ”† โ”† [0.5s] | runtime/debug...
vivid lintelBOT
#

What happened? What did you expect to happen?

Problem:

I have been trying to make an AI agent following the guides on the website and https://github.com/kpenfound/agents/blob/main/go-coder/main.go

Building it using the go sdk.

What I find quite difficult to understand is that when the agent calls a function say BashExec in the workspace, to update the workspace state i need to return the workspace (*Workspace), but to let the agent see the output of the bash call i need to return (st...

vivid lintelBOT
vivid lintelBOT
#

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • `@dependabot ...
#

Bumps the sdk-java group in /sdk/java with 1 update: org.junit:junit-bom.

Updates org.junit:junit-bom from 5.13.1 to 5.13.2

Release notes
Sourced from org.junit:junit-bom's releases.

JUnit 5.13.2 = Platform 1.13.2 + Jupiter 5.13.2 + Vintage 5.13.2
See Release Notes.
Full Changelog: https://github.com/junit-team/junit-framework/compare/r5.13.1...r5.13.2

Commits

e51deb2 Release 5.13.2
d4fc834 Merge commit from fork
deb3e7c Avoid reportin...

vivid lintelBOT
#

Bumps the docs group in /docs with 1 update: typedoc.

Updates typedoc from 0.28.5 to 0.28.7

Release notes
Sourced from typedoc's releases.

v0.28.7
Features

Introduced the @sortStrategy tag to override the sort option on a specific reflection, #2965.

Bug Fixes

Classes and functions exported with export { type X } are no longer missing comments, #2970.
Setting locale to an unknown value will now cause TypeDoc to operate in English instead of a de...

vivid lintelBOT
vivid lintelBOT
#

What is the issue?

Summary

The generated file sdk/src/dagger/client/gen.py has syntax errors if a dependency module written in Go has a default directive containing spaces, e.g. //+default="foo bar".

If this is not a bug an update to relevant documentation would be helpful, such as default values.

Description

A python module depends on another module written in Go.

The Go module includes the following directive in t...

vivid lintelBOT
#

If WithSymlink was called on an existing symlink, it would incorrectly resolve that symlink rather than returning an error.

For example:
WithSymlink("target", "symlink").
WithSymlink("newtarget", "symlink").

would incorrectly produce:
symlink -> target
target -> newtarget

When the second WithSymlink was called, containerdfs.RootPath would first resolve target to symlink prior to making the the underlying os.Symlink("target", "newtarget") syscall.

This f...

vivid lintelBOT
#

Current behavior:

I have an engine running that is version v0.18.9
I have just upgraded my CLI to version v0.18.10

Default behavior:

When I run something with the CLI, like dagger functions, the CLI will kill the v0.18.9 engine, start up a v0.18.10 engine, connect to it, and run my command

Leave old engine

If I set DAGGER_LEAVE_OLD_ENGINE=1 in my environment first, the CLI will start a new v0.18.10 engine for my session, but it will not delete the v0.18.9 e...

#

We have preliminary docs here https://docs.dagger.io/ci/integrations/apple-container/
but there are a lot of improvements to be made to make the DX of using https://github.com/apple/container great with Dagger.

Some of these are more general for all container runtime alternatives to docker such as nerdctl and podman.

Some of these will be specific to container.

You can help by listing any bugs, friction, or weirdness you experience.

Unknowns:

  • how well does local content-addresse...
vivid lintelBOT
#

What is the issue?

Current Behavior

When using defaultPath in shell commands, the directory is re-evaluated on each command execution within the shell session. This differs from passing the directory explicitly, where it's evaluated once
and cached.

Example

Given a function with:

  // +optional
  // +defaultPath="/"
  // +ignore=["build"]
  source *dagger.Directory,

This causes duplicate execution:

 dagger shell <<'EOM'
      result=$(test)
      $result ...
vivid lintelBOT
#

https://docs.dagger.io/api/chaining#export-directories-files-and-containers
https://github.com/dagger/dagger/blame/14ff07af8b91c091e1f1e7afbf0e01316142f8ca/docs/current_docs/api/chaining.mdx#L217-L219

โ–ผ github.com/kpenfound/dagger-modules/golang@v0.2.1 |
  build ./cmd/dagger --source=https://github.com/dagger/dagger |
  export ./my-build 0.0s ERROR r jump โ†ด
โ•ฐโ”€โœ˜ export 0.0s ERROR r jump โ†ด
  ! input: golang.build failed to stat file /out: process "go build -o /out/ ./cmd/dagger" did not co...
vivid lintelBOT
vivid lintelBOT
#

...and other little fixes.

@sipsma points out that this is a code smell: https://github.com/dagger/dagger/blob/14ff07af8b91c091e1f1e7afbf0e01316142f8ca/core/schema/container.go#L918

Reaching into and modifying the instance isn't a great practice, and will become impossible in https://github.com/dagger/dagger/pull/10620. However, we don't really need to be returning instances directly from dagop, there's no hard dependency, so we can simplify some of the code here.

The other little ...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

I have a module which creates a symlink over a file which already exists. I've been using a small helper function to call ln -sf to create the symlink, but decided to move to using the WithSymlink introduced recently. Understandably, calling it raises the following error:

! symlink /dev/stdout /var/lib/dagger/worker/cachemounts/buildkit3966597304/var/log/nginx/access.log: file exists

I don't necessarily expect the default behaviour to override the file, b...

vivid lintelBOT
vivid lintelBOT
#

Today, we only really officially support the docker runtime for auto-starting the dagger engine.

Ideally though, we should support more, to name a few:

  • [ ] Containerd (for nerdctl, finch, etc).
  • [ ] Apple's container.
  • [ ] podman

These should all support {driver}-container and {driver}-image to support all the scenarios we support with docker today.

[!IMPORTANT]

All of the problems with garbage collectio...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

Various work around the codegen binary with as main purpose to split codegen CLI into 2 subcommand: generate-module & generate-client

This PR also include the following changes:

  • Clean up overall codegen binary architecture (will improve it more with follow ups PRs)
  • Split up arguments to match the commands
  • Move some functions to different location to improve maintainability
ornate vigilBOT
#

Context

I belong to a team that manages CI/CD pipelines for a company. We will start to use dagger to manage our pipelines.

We currently develop several dagger modulen and we use python sdk to develop them :

  • we have one module which allows to call our custom CLI to interact with a lot of package manager (JFrog CLI like).
  • And we also have modules to manage CI/CD workflow for differents package manager :
    • npm
    • maven
    • python
    • ...
  • Each of these modules use the CL...
vivid lintelBOT
#

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • `@dependabot ...
#

Bumps the docs group with 2 updates in the /docs directory: posthog-js and typedoc.

Updates posthog-js from 1.255.1 to 1.256.2

Release notes
Sourced from posthog-js's releases.

1.256.2 - 2025-07-04

fix: Fix backwards compatibility (#2074)
feat: Sdk spec gen (#2029)
Fix CHANGELOG.md (#2068)

1.256.1 - 2025-07-02

fix survey input color on dark backgrounds (#2071)

1.256.0 - 2025-06-30

feat: push replay and...

#

Bumps the sdk-elixir group in /sdk/elixir with 1 update: req.

Updates req from 0.5.12 to 0.5.14

Changelog
Sourced from req's changelog.

v0.5.14 (2025-07-02)

[run_plug]: Remove warning about into: fun with {:halt, acc} result.
The warning never been particularly useful because it's not like users
can do anything about it.

v0.5.13 (2025-07-02)

[run_plug]: Ease transition to automatically parsing request body.
Since v0.5.11, this code:
plug = fn co...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

Fixes #1390229838836662323 message

The general VCS path regex pattern was failing to match repository URLs containing tilde characters, which are commonly used in systems like Bitbucket Server for user-scoped repositories (e.g., /scm/~username/).

Root cause: The regex character class [A-Za-z0-9_.-/] in the general syntax pattern explicitly enumerated allowed characters but omitted the tilde (~), causing RepoRootForImportPath to...

vivid lintelBOT
#

Summary

Private package authentication in Dagger requires different approaches across SDKs. All SDKs support git-based packages via SSH authentication, which works well for packages hosted in git repositories. However, for packages in private registries: the Go SDK relies on SSH workarounds, the Python SDK requires embedding credentials in URLs (security concern), and the TypeScript SDK has no support at all. We have an opportunity to provide a unified, secure authentication mechanism tha...

vivid lintelBOT
#

What is the issue?

Problem

Reported by a discord user here: https://discord.com/channels/707636530424053791/1389911301047844977

Given the following pipeline:

package main

import (
    "context"
    "dagger/dagger-debug/internal/dagger"
)

type Result struct {
    Report   *dagger.Directory
    ExitCode int
}

type DaggerDebug struct{}

// Works as expected
func (m *DaggerDebug) Test(ctx context.Context) *Result {
    return &Result{
        Report:   dag.Directory().WithNewFi...
#

This is a first POC for designing the much-requested "default secrets" feature, as part of #10370 .

In this POC, a default secret will be injected if the following conditions are true:

  • A top-level module is loaded (with dagger -m or implicitly from the current directory)
  • That module has a constructor
  • That constructor has an argument called token
  • That argument is of type Secret

If all the above is true, then that argument is modified to have a new default value: the...

vivid lintelBOT