Skip to content

feat: container packaging, local binary overrides, and external auth#44

Merged
initializ-mk merged 3 commits intomainfrom
core/package
Apr 13, 2026
Merged

feat: container packaging, local binary overrides, and external auth#44
initializ-mk merged 3 commits intomainfrom
core/package

Conversation

@initializ-mk
Copy link
Copy Markdown
Contributor

Summary

  • Local binary overrides: --local-bin name=/path/to/file flag on forge build and forge package to inject host binaries into container images, bypassing remote resolution. Also configurable via forge.yaml package.bin_overrides.<name>.local.
  • Smart Dockerfile generation: Multi-stage bin resolution with forge-core/packaging/ — classifies binary requirements, resolves via local override → skill override → config override → image registry → apt/apk, and generates optimized Dockerfile stages.
  • Image optimization flags: --slim and --alpine flags on forge build/forge package for smaller container images.
  • External auth provider: --auth-url flag (and FORGE_AUTH_URL env var) for delegating token validation to an external auth endpoint.
  • KUBECONFIG materialization: Runtime detects inline YAML in KUBECONFIG env var and writes it to a file, enabling docker run -e KUBECONFIG="$(cat ~/.kube/config)".
  • OpenAI API fix: Handle null content in assistant messages with tool_calls per OpenAI spec.
  • Remove root SKILL.md: Skills now live exclusively in skills/ subdirectories; removed scaffold template and skills.path config from forge init.
  • TLS support: Unconditional ca-certificates install in Dockerfile template.
  • Documentation: Synced docs for all changes (commands, configuration, runtime, skills, tools).

Test plan

  • forge build --local-bin forge=/path/to/linux/forge generates Dockerfile with COPY .local-bins/forge instruction
  • forge package --local-bin forge=/path/to/linux/forge builds a working container image
  • forge package --alpine --slim produces a smaller image
  • forge init my-agent no longer creates root SKILL.md or skills.path in forge.yaml
  • forge run --auth-url https://auth.example.com/verify skips local token generation
  • Container with inline KUBECONFIG env var materializes it to a file
  • go test ./... passes in all modules

…zation, and packaging improvements

- Add --local-bin flag to forge build/package for injecting host binaries into container images
- Add --slim and --alpine flags for image size optimization
- Add package config section in forge.yaml (bin_overrides, alpine, slim)
- Add smart Dockerfile generation with multi-stage bin resolution
- Add external auth provider support (--auth-url / FORGE_AUTH_URL)
- Add inline KUBECONFIG materialization for container deployments
- Fix OpenAI API null content serialization for assistant messages with tool_calls
- Remove root SKILL.md from forge init (skills live in skills/ subdirectories)
- Add ca-certificates install in Dockerfile template for TLS support
- Sync documentation for all changes
…g file packaging

- Include channel config files (slack-config.yaml, etc.) in Docker build context
- Add --with flag to container entrypoint when channels are configured in forge.yaml
- Generate internal auth token for channel adapter loopback when using external auth
- Accept internal token before external auth provider in middleware
- Sync docs for channels and runtime
Remove assertions for SKILL.md.tmpl and SKILL.md from init tests since
root-level SKILL.md is no longer generated by forge init.
@initializ-mk initializ-mk merged commit bb59a02 into main Apr 13, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant