Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
6d395ec
fixes
brody192 Feb 12, 2026
ccdca55
Merge pull request #7 from brody192/brody/small-fixes
brody192 Feb 12, 2026
7a4e27b
feat: add otel_http mode
matheusvellone Feb 11, 2026
cb9ade5
Merge pull request #6 from meistrari/main
brody192 Feb 20, 2026
860253d
Add service_namespace functionality
case Mar 1, 2026
9c9e41c
Address review feedback
case Mar 1, 2026
f179557
Scope service namespace to just Grafana & Otel
case Mar 1, 2026
3ebf916
Remove the test
case Mar 1, 2026
8856db5
Merge pull request #8 from case/grafana-service-namespace
brody192 Mar 1, 2026
e9c0bc3
rename otel
brody192 Mar 1, 2026
19eb2d4
Merge pull request #9 from brody192/brody/rename-otel
brody192 Mar 1, 2026
4ae8c60
rename folder
brody192 Mar 2, 2026
1641bab
Merge pull request #10 from brody192/brody/rename-otel-folder
brody192 Mar 2, 2026
c76dcbe
Container publish workflow - add arm64 support
case Mar 2, 2026
a2158d2
Merge pull request #11 from case/add-arm64
brody192 Mar 2, 2026
4770496
better ci
brody192 Mar 3, 2026
169d918
parallel builds
brody192 Mar 3, 2026
e388e05
consolidate build logic
brody192 Mar 3, 2026
5966d14
Merge pull request #12 from brody192/brody/release-ci
brody192 Mar 3, 2026
961824c
Update docker-build.yml
brody192 Mar 3, 2026
f57f326
Merge pull request #13 from brody192/brody/release-ci
brody192 Mar 3, 2026
775971d
Update release.yml
brody192 Mar 3, 2026
3ecc672
Merge pull request #14 from brody192/brody/release-ci
brody192 Mar 3, 2026
efafb4e
first pass
brody192 Mar 3, 2026
76e68c0
errgroup context
brody192 Mar 5, 2026
032a03c
bug fixes
brody192 Mar 5, 2026
54705f4
bug fixes and improvements
brody192 Mar 9, 2026
bce5065
Add beta image workflow
brody192 Mar 11, 2026
04b8741
Merge pull request #15 from brody192/brody/beta-workflow
brody192 Mar 11, 2026
4fadd05
Consolidate duplicated subscription retry logic and replace metadata …
brody192 Mar 14, 2026
a2ad991
Replace manual from attrs with auto-injecting fromHandler in logger p…
brody192 Mar 15, 2026
bb230c9
Add locomotive binary to .gitignore
brody192 Mar 15, 2026
d631326
Add retry logic for deployment API calls and normalize retry infrastr…
brody192 Mar 16, 2026
c0f7541
update go version and deps
brody192 Mar 17, 2026
b60b16b
Fix memory leaks and reduce memory usage
brody192 Mar 17, 2026
6d52798
Refactor log reconstructors to use byte-level JSON operations
brody192 Mar 17, 2026
6c55197
Refactor papertrail reconstructor to use syslog helpers
brody192 Mar 17, 2026
e447813
Optimize sentry and loki reconstructors to reduce CPU usage
brody192 Mar 18, 2026
5bcc701
Move log serialization out of webhook package into logline/serializer
brody192 Mar 18, 2026
a9b174d
Refactor Datadog reconstructor to use shared reconstruct_json package
brody192 Mar 18, 2026
2b02ae7
Update environment.go
brody192 Mar 18, 2026
8c302b2
formatting
brody192 Mar 18, 2026
dbbfc29
modernize
brody192 Mar 18, 2026
d855e1e
feat: add signoz support
Nageshbansal Apr 5, 2026
bc4c75c
docs: adds docs for signoz provider in readme
Nageshbansal Apr 5, 2026
4db14a8
docs: add admonition for self-hosted signoz
Nageshbansal Apr 10, 2026
0e4e7e1
Merge pull request #18 from Nageshbansal/feat/reconstruct_signoz
brody192 Apr 10, 2026
b2f16c9
chore: update GitHub Actions to Node 24 versions
brody192 Apr 10, 2026
db2ca04
Merge pull request #19 from brody192/chore/update-actions-node24
brody192 Apr 10, 2026
0afa619
Merge branch 'main' into brody/queue
brody192 Apr 10, 2026
b94e9fb
chore: skip build check when beta label is present
brody192 Apr 10, 2026
8166604
Merge branch 'main' into brody/queue
brody192 Apr 10, 2026
6cdcd64
Merge pull request #16 from brody192/brody/queue
brody192 Apr 11, 2026
5dbf3e0
docs: replace angle bracket placeholders with curly braces in README
brody192 Apr 11, 2026
25ea278
Merge branch 'main' of https://github.com/brody192/locomotive
brody192 Apr 11, 2026
bb024e3
feat: support victoria logs
xLanStar May 13, 2026
397a554
Merge pull request #20 from xLanStar/main
brody192 May 19, 2026
3d457a1
feat(sentry): forward Railway environment as native sentry.environment
brody192 Jun 10, 2026
5ec618c
Merge pull request #21 from brody192/brody/sentry-environment
brody192 Jun 10, 2026
17e7bae
fix(subscribe): stop log-subscription resubscribe storms and reduce load
brody192 Jun 18, 2026
7f8fe15
refactor(subscribe): collapse the three read loops onto Subscription.Run
brody192 Jun 18, 2026
02cb3c9
refactor: name the log-pipeline strings instead of passing literals
brody192 Jun 18, 2026
61a1f93
refactor: name the pipeline sub-component name suffixes
brody192 Jun 18, 2026
0c6f12e
clean funcs
brody192 Jun 18, 2026
eb8404c
refactor: remove dead code and consolidate internals
brody192 Jun 18, 2026
879950f
fix(status): only surface dropped-log counts in debug mode
brody192 Jun 18, 2026
7a13334
fix(config): don't warn for modes with no expected host
brody192 Jun 19, 2026
7bab457
Merge pull request #22 from brody192/brody/subscription-resubscribe-h…
brody192 Jun 19, 2026
8847945
chore(subscribe): include the subscription type in debug logs
brody192 Jun 19, 2026
c26fb38
Revert "chore(subscribe): include the subscription type in debug logs"
brody192 Jun 19, 2026
c10fe65
chore(subscribe): include the subscription type in debug logs
brody192 Jun 19, 2026
f2db784
Merge pull request #23 from brody192/brody/debug-log-subscription-type
brody192 Jun 19, 2026
7841a2b
feat(subscribe): exponential backoff with jitter for resubscribes and…
brody192 Jun 19, 2026
1eefaab
better logging
brody192 Jun 19, 2026
9f05d1b
fix(queue): delay before every RetryBackoff attempt, including the first
brody192 Jun 19, 2026
79bc580
feat(logs): raise beforeLimit to the backend max (5000) for http and …
brody192 Jun 19, 2026
b9f1446
Merge pull request #24 from brody192/brody/retry-backoff
brody192 Jun 19, 2026
44b171b
feat(http-logs): tail only services with a domain, stagger + tune res…
brody192 Jun 21, 2026
2daebd7
feat(http-logs): clearer log when no services have a domain
brody192 Jun 21, 2026
aaefe1d
Merge pull request #25 from brody192/brody/http-log-subscriptions
brody192 Jun 21, 2026
ae58416
Sync locomotive to upstream aaefe1d and re-apply OTLP gRPC export
tnsardesai Jul 1, 2026
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
55 changes: 55 additions & 0 deletions .github/workflows/beta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Beta

on:
pull_request:
types: [labeled, synchronize]
branches: [main]

concurrency:
group: beta-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
build:
if: contains(github.event.pull_request.labels.*.name, 'beta')
uses: ./.github/workflows/docker-build.yml
with:
push: true
image: ghcr.io/${{ github.repository }}
permissions:
packages: write
secrets: inherit

manifest:
name: Push Beta Manifest
needs: build
if: contains(github.event.pull_request.labels.*.name, 'beta')
runs-on: ubuntu-latest
permissions:
packages: write
steps:
- name: Download digests
uses: actions/download-artifact@v8
with:
path: /tmp/digests
pattern: digest-*
merge-multiple: true

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

- name: Log into ghcr.io
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Create and push manifest
working-directory: /tmp/digests
run: |
BRANCH="${{ github.head_ref }}"
BRANCH="${BRANCH##*/}"
docker buildx imagetools create \
-t ghcr.io/${{ github.repository }}:beta_${BRANCH} \
$(printf 'ghcr.io/${{ github.repository }}@sha256:%s ' *)
16 changes: 16 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Build

on:
pull_request:
branches: [main]

concurrency:
group: build-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
build:
if: "!contains(github.event.pull_request.labels.*.name, 'beta')"
uses: ./.github/workflows/docker-build.yml
with:
push: false
67 changes: 67 additions & 0 deletions .github/workflows/docker-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: Docker Build

on:
workflow_call:
inputs:
push:
type: boolean
default: false
image:
type: string
default: ''

jobs:
build:
name: Docker Build (${{ matrix.platform }})
runs-on: ubuntu-latest
permissions:
packages: write
strategy:
matrix:
platform: [linux/amd64, linux/arm64]
steps:
- name: Checkout
uses: actions/checkout@v6

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

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

- name: Log into ghcr.io
if: inputs.push
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build
id: build
uses: docker/build-push-action@v7
with:
context: .
platforms: ${{ matrix.platform }}
push: false
cache-from: type=gha,scope=${{ matrix.platform }}
cache-to: type=gha,scope=${{ matrix.platform }},mode=max
outputs: ${{ inputs.push && format('type=image,name={0},push-by-digest=true,name-canonical=true,push=true', inputs.image) || '' }}

- name: Export digest
if: inputs.push
id: digest
run: |
mkdir -p /tmp/digests
digest="${{ steps.build.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"
slug="${{ matrix.platform }}"
echo "slug=${slug//\//-}" >> "$GITHUB_OUTPUT"

- name: Upload digest
if: inputs.push
uses: actions/upload-artifact@v7
with:
name: digest-${{ steps.digest.outputs.slug }}
path: /tmp/digests/*
if-no-files-found: error
59 changes: 0 additions & 59 deletions .github/workflows/docker-publish.yml

This file was deleted.

43 changes: 43 additions & 0 deletions .github/workflows/label-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Release Label

on:
pull_request:
types: [opened, labeled, unlabeled, synchronize, reopened]
branches: [main]

concurrency:
group: label-check-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
check:
name: Check Release Label
runs-on: ubuntu-latest
steps:
- name: Verify release label
env:
LABELS: ${{ toJSON(github.event.pull_request.labels.*.name) }}
run: |
MAJOR=$(echo "$LABELS" | jq '[.[] | select(. == "release/major")] | length')
MINOR=$(echo "$LABELS" | jq '[.[] | select(. == "release/minor")] | length')
PATCH=$(echo "$LABELS" | jq '[.[] | select(. == "release/patch")] | length')
SKIP=$(echo "$LABELS" | jq '[.[] | select(. == "release/skip")] | length')

TOTAL=$((MAJOR + MINOR + PATCH + SKIP))

if [ "$TOTAL" -eq 0 ]; then
echo "::error::Add a release label to this PR: release/major, release/minor, release/patch, or release/skip"
exit 1
fi

if [ "$TOTAL" -gt 1 ]; then
echo "::error::Only one release label is allowed per PR"
exit 1
fi

if [ "$MAJOR" -eq 1 ]; then TYPE="major"; fi
if [ "$MINOR" -eq 1 ]; then TYPE="minor"; fi
if [ "$PATCH" -eq 1 ]; then TYPE="patch"; fi
if [ "$SKIP" -eq 1 ]; then TYPE="skip"; fi

echo "Release type: ${TYPE}"
Loading