Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
147 commits
Select commit Hold shift + click to select a range
6f740c4
Merge pull request #24 from maximhq/04-16-feat_readme
akshaydeo Apr 30, 2025
606e658
feat: fixes and optimisations
Pratham-Mishra04 Apr 27, 2025
f161adb
Merge pull request #26 from maximhq/04-16-feat_readme
akshaydeo Apr 30, 2025
d31f398
fix: retry logic fixes
Pratham-Mishra04 Apr 30, 2025
1db6707
fix: quick setup in readme added
Pratham-Mishra04 Apr 30, 2025
831dc8a
Merge pull request #27 from maximhq/04-30-fix_quick_setup_in_readme_a…
akshaydeo May 6, 2025
f9147ae
Merge pull request #28 from maximhq/04-30-fix_retry_logic_fixes
akshaydeo May 6, 2025
2dc0a0d
feat: vertex ai provider added
Pratham-Mishra04 May 6, 2025
4ecb21a
feat: add Google Vertex AI provider support (#29)
akshaydeo May 12, 2025
318eb77
feat: genai integration in http transports added
Pratham-Mishra04 May 9, 2025
4d054c6
feat: Vertex provider and Gemini SDK integration added in HTTP transp…
akshaydeo May 12, 2025
196f093
feat: prometheus and graphana setup added for http transport tracking
Pratham-Mishra04 May 12, 2025
07367f3
fix: vertex provider region changed to provider level
Pratham-Mishra04 May 13, 2025
d105129
refactor: move Vertex region from model params to meta config (#35)
akshaydeo May 13, 2025
7e44bf7
Merge branch 'main' into 05-12-feat_prometheus_and_graphana_setup_add…
Pratham-Mishra04 May 13, 2025
d1292b9
feat: Prometheus and Graphana Setup for HTTP Transport (#32)
akshaydeo May 13, 2025
37a65dc
fix: genai http router integration fixes
Pratham-Mishra04 May 12, 2025
b49e8d1
feat: add function call support for Gemini integration (#31)
akshaydeo May 13, 2025
c1b4e56
feat: maxim sdk plugin integration added to bifrost http transport
Pratham-Mishra04 May 12, 2025
a4c5863
feat: add Maxim logger plugin support to HTTP transport (#34)
akshaydeo May 13, 2025
9ef862a
feat: docs directory added
Pratham-Mishra04 May 16, 2025
000e0ed
docs: add documentation directory and move configuration guides (#41)
akshaydeo May 16, 2025
478a21f
fix: maxim sdk fixes
Pratham-Mishra04 May 12, 2025
0da66d8
fix: Maxim SDK logging fixes (#33)
akshaydeo May 18, 2025
01ecf73
feat: maxim plugin header support added to http transport
Pratham-Mishra04 May 14, 2025
e9fb7b6
maxim plugin headers support added to http transport (#36)
akshaydeo May 18, 2025
7f4ce06
feat: readme additions
Pratham-Mishra04 May 13, 2025
b1ba1b3
feat: missing defaults added and readme additions (#37)
akshaydeo May 18, 2025
e9e8a5f
fix: vertex ai provider cred input changes
Pratham-Mishra04 May 15, 2025
340b353
refactor: use auth credentials directly instead of file path for Vert…
akshaydeo May 18, 2025
3be2341
fix: transports modified for taking env from session
Pratham-Mishra04 May 15, 2025
f58a0e4
refactor: replace .env file with environment variables (#39)
akshaydeo May 18, 2025
738857f
refactor: shifted provider to bifrost request
Pratham-Mishra04 May 15, 2025
ec0f0b3
refactor: move provider parameter from function arguments to request …
akshaydeo May 18, 2025
7e8eb71
chore: go mod version fixes
Pratham-Mishra04 May 18, 2025
fe891cf
chore: update bifrost/core to v1.0.6 and use released plugins/maxim v…
Pratham-Mishra04 May 18, 2025
12e7028
chore: go mod dependency fixes
Pratham-Mishra04 May 18, 2025
bc8f76a
refactor: update import path for Maxim plugin (#44)
Pratham-Mishra04 May 18, 2025
770f0d6
chore: maxim plugin dependency fixes
Pratham-Mishra04 May 19, 2025
37f7ffe
Merge pull request #45 from maximhq/05-19-chore_maxim_plugin_dependen…
Pratham-Mishra04 May 19, 2025
e543ec3
refactor: plugins tests added and go mod version fixes
Pratham-Mishra04 May 19, 2025
1500a5f
Merge pull request #46 from maximhq/05-19-refactor_plugins_tests_adde…
Pratham-Mishra04 May 19, 2025
788279f
chore:documentation fixes
Pratham-Mishra04 May 19, 2025
4154382
Merge pull request #47 from maximhq/05-19-chore_documentation_fixes
Pratham-Mishra04 May 19, 2025
8bce3d1
feat: session support in maxim plugin added
Pratham-Mishra04 May 24, 2025
81ec930
feat: added session support to maxim plugin (#48)
akshaydeo May 24, 2025
c66fb43
docs: documentation updates
Pratham-Mishra04 Jun 2, 2025
d1f5c97
docs: fix JSON formatting and improve README documentation (#49)
akshaydeo Jun 2, 2025
3cc1a50
chore: transport version updates
Pratham-Mishra04 Jun 2, 2025
0530932
Merge pull request #50 from maximhq/06-02-chore_transport_version_upd…
Pratham-Mishra04 Jun 2, 2025
b357104
readMe: go report added to readme
Pratham-Mishra04 Jun 2, 2025
083b61e
Merge pull request #51 from maximhq/06-02-readme_go_report_added_to_r…
Pratham-Mishra04 Jun 2, 2025
6c65217
feat: ctx cancel support added
Pratham-Mishra04 Jun 3, 2025
e61f2b5
feat: add context propagation to provider requests (#52)
akshaydeo Jun 3, 2025
ed9689f
feat: Refactor message schema and enhance multi-modal support across …
danpiths Jun 4, 2025
a5c6e4b
feat: filter out empty API keys and improve tool calling support (#55)
Pratham-Mishra04 Jun 4, 2025
8d89d0a
fix: update core version and improve tool message handling (#56)
Pratham-Mishra04 Jun 4, 2025
ebadc1f
chore: update bifrost/plugins/maxim to v1.0.3 (#57)
Pratham-Mishra04 Jun 4, 2025
b090d64
fix: set default values for NetworkConfig and ConcurrencyAndBufferSiz…
Pratham-Mishra04 Jun 4, 2025
ac54c86
docs: add HTTP transport API reference documentation (#59)
Pratham-Mishra04 Jun 4, 2025
43c207e
feat: image input normalisation added across all providers
Pratham-Mishra04 Jun 8, 2025
41b446a
Merge pull request #62 from maximhq/06-09-feat_image_input_normalisat…
akshaydeo Jun 10, 2025
d68ae37
feat: openai integration added to http transport
Pratham-Mishra04 Jun 9, 2025
4d73c46
feat: Add OpenAI integration in HTTP transport (#63)
akshaydeo Jun 10, 2025
b440cd4
refactor: http transport gemini integration refactors
Pratham-Mishra04 Jun 9, 2025
e5b3e57
feat: enhance Gemini integration with system instructions and respons…
akshaydeo Jun 10, 2025
684f6ee
feat: anthropic integration added in http transport
Pratham-Mishra04 Jun 9, 2025
39d3ffe
feat: Add Anthropic integration in HTTP transport (#65)
akshaydeo Jun 10, 2025
c790b36
feat: add liteLLm integration to HTTP transport
Pratham-Mishra04 Jun 9, 2025
bc74f7d
feat: add LiteLLM router integration with model provider detection (#67)
akshaydeo Jun 10, 2025
e437920
refactor: changed content schema to follow openai
Pratham-Mishra04 Jun 11, 2025
4e5da23
feat: refactor message content structure to support multi-modal conte…
akshaydeo Jun 11, 2025
f69a51c
chore: plugin support extensions
Pratham-Mishra04 Jun 10, 2025
8b814ca
feat: enhance plugin system with short-circuit capability and cleanup…
akshaydeo Jun 11, 2025
d81b8db
chore: maxim plugin refactor to support core/v1.1.0
Pratham-Mishra04 Jun 11, 2025
2175eb6
chore: update maxim's plugin bifrost/core dependency to v1.1.0 (#76)
akshaydeo Jun 12, 2025
704100b
fix: /core minor provider logic fixes
Pratham-Mishra04 Jun 12, 2025
022c8a1
bug: fixed provider level minor message parsing bugs (#77)
akshaydeo Jun 12, 2025
db1a389
feat: plugin handling in bifrost enchancements
Pratham-Mishra04 Jun 13, 2025
8751cfe
Merge pull request #78 from maximhq/06-13-feat_plugin_handling_in_bif…
akshaydeo Jun 14, 2025
43e879a
enhancement: base url support added to providers
Pratham-Mishra04 Jun 13, 2025
86dce4f
feat: improve plugin pipeline and add custom base URLs to providers (…
akshaydeo Jun 14, 2025
27131f9
chore: maxim plugin switched to core/v1.1.2
Pratham-Mishra04 Jun 14, 2025
c3e5a61
feat: update maxim plugin to bifrost/core v1.1.2 and add error handli…
akshaydeo Jun 14, 2025
d10aa09
feat: http transport integrations refactored for core/v1.1.0
Pratham-Mishra04 Jun 11, 2025
f230f29
feat: refactored integrations to support core/v1.1.2 (#75)
akshaydeo Jun 14, 2025
7a2e3ac
feat: mistral provider added
Pratham-Mishra04 Jun 14, 2025
012c5fc
feat: add Mistral provider and enhance ToolChoice handling (#83)
akshaydeo Jun 16, 2025
9456ec9
feat: ollama provider added
Pratham-Mishra04 Jun 14, 2025
2f0fbb3
feat: add Ollama provider support (#84)
akshaydeo Jun 16, 2025
f2eadcf
enhancement: added support for extra headers at provider level
Pratham-Mishra04 Jun 14, 2025
9b7b9f0
feat: add support for custom headers in provider requests (#85)
akshaydeo Jun 16, 2025
00a69a5
fix: bedrock text handling bug fixes
Pratham-Mishra04 Jun 15, 2025
d86216c
refactor: remove BifrostResponse object pool for improved memory mana…
akshaydeo Jun 16, 2025
a93c48d
feat: tests added for core-providers in root dir
Pratham-Mishra04 Jun 14, 2025
458715f
feat: move tests to dedicated directory and update README structure (…
akshaydeo Jun 16, 2025
6f4865b
feat: http-transports integration tests added
Pratham-Mishra04 Jun 14, 2025
c1fb155
feat: add comprehensive integration tests for transport providers (#82)
akshaydeo Jun 16, 2025
92a8099
enhancement: added custom genai Part type for better handling in gena…
Pratham-Mishra04 Jun 16, 2025
f271a8c
feat: add URL-safe base64 decoding for Google GenAI and improve param…
akshaydeo Jun 16, 2025
15bab3a
chore: shifted http-transport to core/v1.1.3
Pratham-Mishra04 Jun 16, 2025
f368f3f
chore: shifted http-transport to core/v1.1.3 (#90)
akshaydeo Jun 16, 2025
a43c55a
feat: Support custom authentication for azure provider.
Jun 17, 2025
7b4c4ad
del api-key header if using Authorization
Jun 17, 2025
5bdc42f
Merge pull request #92 from connyay/cjh-azure-custom-auth
akshaydeo Jun 17, 2025
6ff7a3e
feat: added mcp support
Pratham-Mishra04 Jun 18, 2025
22917e2
enhancement: optimised transports docker build
Pratham-Mishra04 Jun 19, 2025
3b4ecc7
refactor: simplify Docker setup and move plugin config to environment…
akshaydeo Jun 20, 2025
231481d
feat: github workflow added for transport docker image
Pratham-Mishra04 Jun 19, 2025
1aaea33
ci: add Docker build workflow for automated image publishing (#98)
akshaydeo Jun 20, 2025
d2f8d51
chore: docker documentation updates
Pratham-Mishra04 Jun 19, 2025
7f7ca39
feat: docker documentation updates to docker pull (#102)
akshaydeo Jun 20, 2025
d3a603c
ci: transport's core dependency ci added
Pratham-Mishra04 Jun 19, 2025
617779a
feat: add workflow to auto-update transport dependencies on core rele…
akshaydeo Jun 20, 2025
1f2293f
feat: added MCP support (#94)
akshaydeo Jun 20, 2025
49d87c9
tests: bifrost chatbot added for tests
Pratham-Mishra04 Jun 18, 2025
6820c37
feat: add core-chatbot test application with MCP integration (#99)
akshaydeo Jun 20, 2025
a0b9f1d
feat: added mcp to http transport (#100)
Pratham-Mishra04 Jun 20, 2025
ed6db3b
refactor: standardize error handling in Bifrost HTTP transport (#101)
Pratham-Mishra04 Jun 20, 2025
bea5781
chore: update transport's core dependency to v1.1.4
github-actions[bot] Jun 20, 2025
7d1a6ad
enhacement: switched to single action file
Pratham-Mishra04 Jun 20, 2025
4f5bbe6
ci: combine transport dependency update and Docker build workflows (#…
akshaydeo Jun 20, 2025
7b439bb
adds explicit gopath
akshaydeo Jun 21, 2025
9428776
adds explicit gopath (#107)
akshaydeo Jun 21, 2025
a523ba8
adds explicit gopath
akshaydeo Jun 21, 2025
51a9944
Merge branch 'main' into test/gh-actions
akshaydeo Jun 21, 2025
e100c6a
Merge pull request #108 from maximhq/test/gh-actions
akshaydeo Jun 21, 2025
c4ed89f
fixes github actions trigger
akshaydeo Jun 21, 2025
571dc89
fixes github actions trigger (#109)
akshaydeo Jun 21, 2025
fae0b2e
refactor: improve Docker build process for transport binaries (#110)
Pratham-Mishra04 Jun 21, 2025
0af6a56
feat: core mcp internals optimised
Pratham-Mishra04 Jun 23, 2025
d31595a
feat: update core MCP library to mark3labs/mcp-go and add SSE support…
akshaydeo Jun 23, 2025
3ed1607
feat: plugin schema and docs enhancement
Pratham-Mishra04 Jun 20, 2025
329c457
feat: add plugin short-circuit control with fallback management with …
akshaydeo Jun 23, 2025
947487a
feat: mocker plugin added
Pratham-Mishra04 Jun 21, 2025
5c253f6
feat: add Mocker plugin for intercepting and mocking AI provider resp…
akshaydeo Jun 24, 2025
f21082e
chore: update maxim plugin core dependency to v1.1.5
Pratham-Mishra04 Jun 23, 2025
b3b3d93
chore: update maxim plugin core dependency to v1.1.5 (#115)
akshaydeo Jun 24, 2025
28c4a4c
chore: update bifrost/core dependency to v1.1.5 (#116)
Pratham-Mishra04 Jun 24, 2025
d3f4953
chore: minor docker workflow fix
Pratham-Mishra04 Jun 24, 2025
1622933
ci: ensure Docker build runs even when core dep update is skipped (#117)
akshaydeo Jun 24, 2025
4ae82da
enhancement: mcp tool calling enhancements
Pratham-Mishra04 Jun 24, 2025
41cdafe
refactor: improve MCP tool handling and change log level to debug (#129)
akshaydeo Jun 25, 2025
f6bae6a
chore: update transport's core dependency to v1.1.6
github-actions[bot] Jun 25, 2025
7cb7278
docs: add system architecture documentation (#130)
Pratham-Mishra04 Jun 25, 2025
225430a
feat: add environment variable support for MCP connection strings (#131)
Pratham-Mishra04 Jun 26, 2025
02ee6ad
feat: go plugins implemented for dynamic plugin loading
Pratham-Mishra04 Jun 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
200 changes: 200 additions & 0 deletions .github/workflows/transport-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
name: Transport CI - Dependency Update and Docker Build

on:
push:
tags:
- "core/v*" # Triggers dependency update
- "transports/v*" # Triggers docker build (for manual tags)

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
REGISTRY: docker.io
ACCOUNT: maximhq
IMAGE_NAME: bifrost

jobs:
update-transport-dependency:
if: startsWith(github.ref, 'refs/tags/core/v')
runs-on: ubuntu-latest
permissions:
contents: write
outputs:
new_transport_tag: ${{ steps.next_version.outputs.new_tag }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: main
fetch-depth: 0
fetch-tags: true
token: ${{ secrets.GH_TOKEN }}

- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: "1.24.1"

- name: Get and validate core version from tag
id: get_version
run: |
TAG_NAME=${GITHUB_REF#refs/tags/core/}

# Validate core tag format
if ! echo "$TAG_NAME" | grep -qE '^v[0-9]+\.[0-9]+\.[0-9]+$'; then
echo "Error: Invalid core tag format 'core/$TAG_NAME'. Expected format: core/vMAJOR.MINOR.PATCH"
exit 1
fi

echo "version=${TAG_NAME}" >> $GITHUB_OUTPUT
echo "Core version: ${TAG_NAME}"

- name: Configure Git
run: |
git config user.name "GitHub Actions Bot"
git config user.email "github-actions[bot]@users.noreply.github.com"

- name: Get latest transport version and increment
id: next_version
run: |
# Get the latest transport tag (using transports/ prefix to match docker build)
LATEST_TAG=$(git tag -l 'transports/v*' | sort -V | tail -n 1)
if [ -z "$LATEST_TAG" ]; then
# If no transport tag exists, start with v0.1.0
NEW_TAG="transports/v0.1.0"
else
# Extract version numbers
VERSION=${LATEST_TAG#transports/v}

# Validate version format
if ! echo "$VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then
echo "Error: Invalid tag format '$LATEST_TAG'. Expected format: transports/vMAJOR.MINOR.PATCH"
exit 1
fi

MAJOR=$(echo $VERSION | cut -d. -f1)
MINOR=$(echo $VERSION | cut -d. -f2)
PATCH=$(echo $VERSION | cut -d. -f3)

# Increment patch version
NEW_PATCH=$((PATCH + 1))
NEW_TAG="transports/v${MAJOR}.${MINOR}.${NEW_PATCH}"
fi

# Check if the new tag already exists
if git tag --list | grep -q "^${NEW_TAG}$"; then
echo "Error: Tag '$NEW_TAG' already exists!"
exit 1
fi

echo "new_tag=${NEW_TAG}" >> $GITHUB_OUTPUT
echo "New transport version will be: ${NEW_TAG}"

- name: Update transport dependency
working-directory: transports
run: |
echo "Updating core dependency to ${{ steps.get_version.outputs.version }}"
if ! go get github.com/maximhq/bifrost/core@${{ steps.get_version.outputs.version }}; then
echo "Error: Failed to fetch core version ${{ steps.get_version.outputs.version }}"
exit 1
fi
go mod tidy

- name: Build transport
working-directory: transports
run: go build ./...

- name: Commit and push changes
run: |
git add transports/go.mod transports/go.sum
if git diff --staged --quiet; then
echo "No changes to commit. Dependency is already up to date."
else
git commit -m "chore: update transport's core dependency to ${{ steps.get_version.outputs.version }}"
git push
fi

- name: Create and push transport tag
run: |
git tag ${{ steps.next_version.outputs.new_tag }}
git push origin ${{ steps.next_version.outputs.new_tag }}

build-and-push-docker:
if: always() && needs.update-transport-dependency.result != 'failure' && (startsWith(github.ref, 'refs/tags/transports/v') || needs.update-transport-dependency.result == 'success')
needs: [update-transport-dependency]
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Extract and validate metadata
id: meta
run: |
# Determine the tag to use
if [ "${{ needs.update-transport-dependency.outputs.new_transport_tag }}" != "" ]; then
# Use the tag created by dependency update
TAG="${{ needs.update-transport-dependency.outputs.new_transport_tag }}"
else
# Use the tag that triggered this workflow (manual tag)
TAG=${GITHUB_REF#refs/tags/}
fi

echo "tag=${TAG}" >> $GITHUB_OUTPUT

# Extract version from tag
VERSION=${TAG#transports/v}

# Validate version format
if ! echo "$VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then
echo "Error: Invalid tag format '$TAG'. Expected format: transports/vMAJOR.MINOR.PATCH"
exit 1
fi

# Create image tags (Docker tags cannot contain slashes, so use version only)
echo "tags<<EOF" >> $GITHUB_OUTPUT
echo "${{ env.REGISTRY }}/${{ env.ACCOUNT }}/${{ env.IMAGE_NAME }}:v${VERSION}" >> $GITHUB_OUTPUT
echo "${{ env.REGISTRY }}/${{ env.ACCOUNT }}/${{ env.IMAGE_NAME }}:latest" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Generate timestamp
id: timestamp
run: echo "created_at=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT

- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: ./transports
file: ./transports/Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: |
org.opencontainers.image.title=Bifrost LLM Gateway (HTTP)
org.opencontainers.image.description=The fastest LLM gateway written in Go. Learn more here: https://github.com/maximhq/bifrost
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
org.opencontainers.image.version=${{ steps.meta.outputs.tag }}
org.opencontainers.image.created=${{ steps.timestamp.outputs.created_at }}
org.opencontainers.image.revision=${{ github.sha }}
build-args: |
TRANSPORT_TYPE=http
platforms: linux/amd64,linux/arm64
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Image digest
run: echo "Image pushed successfully with tags from previous step"
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
.env
.vscode
.DS_Store
*_creds*
**/venv/
**/__pycache__/**
private.*
Loading