Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
19 changes: 10 additions & 9 deletions .github/workflows/docker_image_ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
# tags: ["2.0.0"]

env:
IMAGE_NAME: contextforge-gateway-rs
IMAGE_NAME: contextforge-data-plane

jobs:

Expand All @@ -21,17 +21,18 @@ jobs:
id: set_version
run: |
CF_VERSION=$(grep -m 1 '^version' Cargo.toml | sed 's/version\s*=\s*"\(.*\)"/\1/')
echo "CF_VERSION=$CF_VERSION" >> $GITHUB_ENV
echo "CF_VERSION=${CF_VERSION}" >> "${GITHUB_ENV}"
- name: Show version
run: echo $CF_VERSION
run: echo "${CF_VERSION}"
- name: Build the Docker image
run: docker build . --file docker/Dockerfile --tag $IMAGE_NAME:latest
run: docker build . --file docker/Dockerfile --tag "${IMAGE_NAME}:latest"
- name: Log in to registry
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u "${{ github.actor }}" --password-stdin
- name: Push image
run: |
IMAGE_ID=ghcr.io/${{ github.repository_owner }}/$IMAGE_NAME
docker tag $IMAGE_NAME:latest $IMAGE_ID:$CF_VERSION
docker push $IMAGE_ID:$CF_VERSION

IMAGE_ID="ghcr.io/${{ github.repository_owner }}/${IMAGE_NAME}"
docker tag "${IMAGE_NAME}:latest" "${IMAGE_ID}:v${CF_VERSION}"
docker tag "${IMAGE_NAME}:latest" "${IMAGE_ID}:latest"
docker push "${IMAGE_ID}:v${CF_VERSION}"
docker push "${IMAGE_ID}:latest"

2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ target
**/mutants.out*/

# Generated by gateway local runs
contextforge-gateway-rs.log.*
contextforge-data-plane.log.*

# Generated by mdBook
docs/book/book/
Expand Down
8 changes: 4 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# AGENTS.md

Guidance for agents working on `contextforge-gateway-rs`.
Guidance for agents working on `contextforge-data-plane`.

This repo is the Rust dataplane part of ContextForge. It must stay compatible
with the external ContextForge control plane in
Expand All @@ -25,13 +25,13 @@ control-plane, UI, IAM, or metrics-storage app.

## Architecture

Architecture documentation lives in The ContextForge Gateway Book under
Architecture documentation lives in The ContextForge Data Plane Book under
[docs/book](docs/book/README.md). Read the relevant page before changing the
hot path:

| Page | Read it for |
| --- | --- |
| [What is ContextForge Gateway?](docs/book/src/what-is-contextforge-gateway.md) | Scope, boundaries, key terms, and the mental model. |
| [What is ContextForge Data Plane?](docs/book/src/what-is-contextforge-data-plane.md) | Scope, boundaries, key terms, and the mental model. |
| [System Shape](docs/book/src/system-shape.md) | Crate layout, control-plane boundary, pipeline shape, state ownership, and module boundaries. |
| [Request Flow](docs/book/src/request-flow.md) | Startup, middleware order, initialize fanout, authorized calls, and the response path. |
| [Concurrency And Runtime Model](docs/book/src/concurrency-and-runtime.md) | Executor shapes, shared state and locks, fanout, and cancellation. |
Expand All @@ -49,7 +49,7 @@ see [docs/book/README.md](docs/book/README.md) for build and validation steps.

## Working Rules

- Most product behavior belongs in `contextforge-gateway-rs-lib`; avoid adding
- Most product behavior belongs in `contextforge-data-plane-lib`; avoid adding
dataplane logic to the binary crate.
- Keep persistent config access behind `UserConfigStore`; do not push Redis
details into routing code.
Expand Down
20 changes: 10 additions & 10 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 8 additions & 8 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
[workspace]
members = [
"crates/contextforge-gateway-rs",
"crates/contextforge-gateway-rs-apis",
"crates/contextforge-gateway-rs-cpex",
"crates/contextforge-gateway-rs-lib",
"crates/contextforge-data-plane",
"crates/contextforge-data-plane-apis",
"crates/contextforge-data-plane-cpex",
"crates/contextforge-data-plane-lib",
"crates/contextforge-load-test",
"crates/plugins/cpex-secrets-detection",
]
Expand All @@ -15,15 +15,15 @@ edition = "2024"
rust-version = "1.96"
license = "Apache-2.0"
keywords = ["mcp", "gateway", "rust", "contextforge", "a2a", "ai", "llm"]
homepage = "https://github.com/contextforge-gateway-rs/contextforge-gateway-rs"
homepage = "https://github.com/contextforge-org/contextforge-data-plane"
readme = "./README.md"
repository = "https://github.com/contextforge-gateway-rs/contextforge-gateway-rs"
repository = "https://github.com/contextforge-org/contextforge-data-plane"


[workspace.dependencies]
# Keep dependencies here only when at least two workspace members inherit them.
contextforge-gateway-rs-cpex = { path = "./crates/contextforge-gateway-rs-cpex" }
contextforge-gateway-rs-apis = { path = "./crates/contextforge-gateway-rs-apis"}
contextforge-data-plane-cpex = { path = "./crates/contextforge-data-plane-cpex" }
contextforge-data-plane-apis = { path = "./crates/contextforge-data-plane-apis"}
rmcp = { version = "3.1.1", features = [
"server",
"client",
Expand Down
8 changes: 4 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
help: ## Show this help
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'

docker-prod: ## Build production Docker image (dataplane:latest) from docker/Dockerfile
docker build -t dataplane:latest -f docker/Dockerfile .
docker-prod: ## Build production Docker image (contextforge-data-plane:latest) from docker/Dockerfile
docker build -t contextforge-data-plane:latest -f docker/Dockerfile .

testing-up: ## Launch testing stack: nginx, control plane, redis, postgres, pgbouncer, dataplane, fast_time_server
@docker image inspect dataplane:latest >/dev/null 2>&1 || { \
echo "Image dataplane:latest not found. Run 'make docker-prod' first."; \
@docker image inspect contextforge-data-plane:latest >/dev/null 2>&1 || { \
echo "Image contextforge-data-plane:latest not found. Run 'make docker-prod' first."; \
exit 1; \
}
docker compose -f docker/docker-compose.yml up -d nginx control-plane redis postgres pgbouncer data-plane fast_time_server register_fast_time
Expand Down
Loading
Loading