diff --git a/.github/workflows/ghrc-push-main.yml b/.github/workflows/ghrc-push-main.yml index dc08603c..bd7d2c0c 100644 --- a/.github/workflows/ghrc-push-main.yml +++ b/.github/workflows/ghrc-push-main.yml @@ -1,89 +1,88 @@ -name: Publish docker images to ghcr (latest) +# name: Publish docker image to ghcr (latest) -env: - IMAGE_NAME: ghcr.io/${{ github.repository_owner }}/archgw +# env: +# IMAGE_NAME: ghcr.io/${{ github.repository_owner }}/archgw -on: - push: - branches: [main] - # pull_request: +# on: +# push: +# branches: [main] -jobs: - build-arm64: - runs-on: [linux-arm64] - permissions: { contents: read, packages: write } - steps: - - uses: actions/checkout@v4 - - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} +# jobs: +# build-arm64: +# runs-on: [linux-arm64] +# permissions: { contents: read, packages: write } +# steps: +# - uses: actions/checkout@v4 +# - uses: docker/login-action@v3 +# with: +# registry: ghcr.io +# username: ${{ github.actor }} +# password: ${{ secrets.GITHUB_TOKEN }} - - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.IMAGE_NAME }} - tags: | - type=raw,value=latest +# - id: meta +# uses: docker/metadata-action@v5 +# with: +# images: ${{ env.IMAGE_NAME }} +# tags: | +# type=raw,value=latest - - name: Build and Push ARM64 Image - uses: docker/build-push-action@v5 - with: - context: . - file: ./arch/Dockerfile - platforms: linux/arm64 - push: true - # produce ghcr.io//archgw:latest-arm64 - tags: ${{ steps.meta.outputs.tags }}-arm64 +# - name: Build and Push ARM64 Image +# uses: docker/build-push-action@v5 +# with: +# context: . +# file: ./arch/Dockerfile +# platforms: linux/arm64 +# push: true +# # produce ghcr.io//archgw:latest-arm64 +# tags: ${{ steps.meta.outputs.tags }}-arm64 - build-amd64: - runs-on: ubuntu-latest - permissions: { contents: read, packages: write } - steps: - - uses: actions/checkout@v4 - - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} +# build-amd64: +# runs-on: ubuntu-latest +# permissions: { contents: read, packages: write } +# steps: +# - uses: actions/checkout@v4 +# - uses: docker/login-action@v3 +# with: +# registry: ghcr.io +# username: ${{ github.actor }} +# password: ${{ secrets.GITHUB_TOKEN }} - - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.IMAGE_NAME }} - tags: | - type=raw,value=latest +# - id: meta +# uses: docker/metadata-action@v5 +# with: +# images: ${{ env.IMAGE_NAME }} +# tags: | +# type=raw,value=latest - - name: Build and Push AMD64 Image - uses: docker/build-push-action@v5 - with: - context: . - file: ./arch/Dockerfile - platforms: linux/amd64 - push: true - tags: ${{ steps.meta.outputs.tags }}-amd64 +# - name: Build and Push AMD64 Image +# uses: docker/build-push-action@v5 +# with: +# context: . +# file: ./arch/Dockerfile +# platforms: linux/amd64 +# push: true +# tags: ${{ steps.meta.outputs.tags }}-amd64 - create-manifest: - runs-on: ubuntu-latest - needs: [build-arm64, build-amd64] - permissions: { contents: read, packages: write } - steps: - - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} +# create-manifest: +# runs-on: ubuntu-latest +# needs: [build-arm64, build-amd64] +# permissions: { contents: read, packages: write } +# steps: +# - uses: docker/login-action@v3 +# with: +# registry: ghcr.io +# username: ${{ github.actor }} +# password: ${{ secrets.GITHUB_TOKEN }} - - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.IMAGE_NAME }} - tags: | - type=raw,value=latest +# - id: meta +# uses: docker/metadata-action@v5 +# with: +# images: ${{ env.IMAGE_NAME }} +# tags: | +# type=raw,value=latest - - name: Create Multi-Arch Manifest - run: | - docker buildx imagetools create -t ${{ steps.meta.outputs.tags }} \ - ${{ env.IMAGE_NAME }}:latest-arm64 \ - ${{ env.IMAGE_NAME }}:latest-amd64 +# - name: Create Multi-Arch Manifest +# run: | +# docker buildx imagetools create -t ${{ steps.meta.outputs.tags }} \ +# ${{ env.IMAGE_NAME }}:latest-arm64 \ +# ${{ env.IMAGE_NAME }}:latest-amd64 diff --git a/.github/workflows/ghrc-push-release.yml b/.github/workflows/ghrc-push-release.yml index 35d5de92..5a446519 100644 --- a/.github/workflows/ghrc-push-release.yml +++ b/.github/workflows/ghrc-push-release.yml @@ -1,87 +1,87 @@ -name: release - publish docker image to ghcr (latest) +# name: release - publish docker image to ghcr (latest) -env: - IMAGE_NAME: ghcr.io/${{ github.repository_owner }}/archgw +# env: +# IMAGE_NAME: ghcr.io/${{ github.repository_owner }}/archgw -on: - release: - types: [published] +# on: +# release: +# types: [published] -jobs: - build-arm64: - runs-on: [linux-arm64] - permissions: { contents: read, packages: write } - steps: - - uses: actions/checkout@v4 - - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} +# jobs: +# build-arm64: +# runs-on: [linux-arm64] +# permissions: { contents: read, packages: write } +# steps: +# - uses: actions/checkout@v4 +# - uses: docker/login-action@v3 +# with: +# registry: ghcr.io +# username: ${{ github.actor }} +# password: ${{ secrets.GITHUB_TOKEN }} - - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.IMAGE_NAME }} - tags: | - type=raw,value={{tag}} +# - id: meta +# uses: docker/metadata-action@v5 +# with: +# images: ${{ env.IMAGE_NAME }} +# tags: | +# type=raw,value={{tag}} - - name: Build and Push ARM64 Image - uses: docker/build-push-action@v5 - with: - context: . - file: ./arch/Dockerfile - platforms: linux/arm64 - push: true - tags: ${{ steps.meta.outputs.tags }}-arm64 +# - name: Build and Push ARM64 Image +# uses: docker/build-push-action@v5 +# with: +# context: . +# file: ./arch/Dockerfile +# platforms: linux/arm64 +# push: true +# tags: ${{ steps.meta.outputs.tags }}-arm64 - build-amd64: - runs-on: ubuntu-latest - permissions: { contents: read, packages: write } - steps: - - uses: actions/checkout@v4 - - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} +# build-amd64: +# runs-on: ubuntu-latest +# permissions: { contents: read, packages: write } +# steps: +# - uses: actions/checkout@v4 +# - uses: docker/login-action@v3 +# with: +# registry: ghcr.io +# username: ${{ github.actor }} +# password: ${{ secrets.GITHUB_TOKEN }} - - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.IMAGE_NAME }} - tags: | - type=raw,value={{tag}} +# - id: meta +# uses: docker/metadata-action@v5 +# with: +# images: ${{ env.IMAGE_NAME }} +# tags: | +# type=raw,value={{tag}} - - name: Build and Push AMD64 Image - uses: docker/build-push-action@v5 - with: - context: . - file: ./arch/Dockerfile - platforms: linux/amd64 - push: true - tags: ${{ steps.meta.outputs.tags }}-amd64 +# - name: Build and Push AMD64 Image +# uses: docker/build-push-action@v5 +# with: +# context: . +# file: ./arch/Dockerfile +# platforms: linux/amd64 +# push: true +# tags: ${{ steps.meta.outputs.tags }}-amd64 - create-manifest: - runs-on: ubuntu-latest - needs: [build-arm64, build-amd64] - permissions: { contents: read, packages: write } - steps: - - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} +# create-manifest: +# runs-on: ubuntu-latest +# needs: [build-arm64, build-amd64] +# permissions: { contents: read, packages: write } +# steps: +# - uses: docker/login-action@v3 +# with: +# registry: ghcr.io +# username: ${{ github.actor }} +# password: ${{ secrets.GITHUB_TOKEN }} - - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.IMAGE_NAME }} - tags: | - type=raw,value={{tag}} +# - id: meta +# uses: docker/metadata-action@v5 +# with: +# images: ${{ env.IMAGE_NAME }} +# tags: | +# type=raw,value={{tag}} - - name: Create Multi-Arch Manifest - run: | - docker buildx imagetools create -t ${{ steps.meta.outputs.tags }} \ - ${{ steps.meta.outputs.tags }}-arm64 \ - ${{ steps.meta.outputs.tags }}-amd64 +# - name: Create Multi-Arch Manifest +# run: | +# docker buildx imagetools create -t ${{ steps.meta.outputs.tags }} \ +# ${{ steps.meta.outputs.tags }}-arm64 \ +# ${{ steps.meta.outputs.tags }}-amd64 diff --git a/README.md b/README.md index b31cdb70..2f3ff37b 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@
-_Arch is a smart proxy server designed as a modular edge and AI gateway for agents._

+_Arch is a smart edge and LLM proxy server for agents._

Arch handles the *pesky low-level work* in building agentic apps — like applying guardrails, clarifying vague user input, routing prompts to the right agent, and unifying access to any LLM. It’s a language and framework friendly infrastructure layer designed to help you build and ship agentic apps faster. @@ -23,6 +23,10 @@ _Arch is a smart proxy server designed as a modular edge and AI gateway for agen
+# About The Latest Release: +[0.3.15] [Preference-aware multi LLM routing for Claude Code 2.0](demos/use_cases/claude_code_router/README.md)
high-level network architecture for ArchGW + + # Overview Arch - Build fast, hyper-personalized agents with intelligent infra | Product Hunt @@ -48,7 +52,7 @@ With Arch, you can move faster by focusing on higher-level objectives in a langu - `🧱 Built on Envoy`: Arch runs alongside app servers as a containerized process, and builds on top of [Envoy's](https://envoyproxy.io) proven HTTP management and scalability features to handle ingress and egress traffic related to prompts and LLMs. **High-Level Sequence Diagram**: -![alt text](docs/source/_static/img/arch_network_diagram_high_level.png) +![high-level network architecture for ArchGW](docs/source/_static/img/arch_network_diagram_high_level.png) **Jump to our [docs](https://docs.archgw.com)** to learn how you can use Arch to improve the speed, security and personalization of your GenAI apps. diff --git a/crates/llm_gateway/src/stream_context.rs b/crates/llm_gateway/src/stream_context.rs index d2f7d8a6..f11134cb 100644 --- a/crates/llm_gateway/src/stream_context.rs +++ b/crates/llm_gateway/src/stream_context.rs @@ -785,7 +785,7 @@ impl HttpContext for StreamContext { // Extract user message for tracing self.user_message = deserialized_client_request.get_recent_user_message(); - debug!( + info!( "[ARCHGW_REQ_ID:{}] MODEL_RESOLUTION: req_model='{}' -> resolved_model='{}' provider='{}' streaming={}", self.request_identifier(), model_requested, diff --git a/docs/source/_static/img/claude_code_router.png b/docs/source/_static/img/claude_code_router.png new file mode 100644 index 00000000..f904dd28 Binary files /dev/null and b/docs/source/_static/img/claude_code_router.png differ