diff --git a/.github/workflows/publish_github.yml b/.github/workflows/publish_github.yml
new file mode 100644
index 0000000000000000000000000000000000000000..86972fb7006087edc9f308a40534f222f5afeb54
--- /dev/null
+++ b/.github/workflows/publish_github.yml
@@ -0,0 +1,37 @@
+name: Publish to GitHub Releases
+
+on:
+  push:
+    tags:
+      - "llamaindex@*"
+
+jobs:
+  build-and-publish:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout Repo
+        uses: actions/checkout@v4
+
+      - uses: pnpm/action-setup@v3
+
+      - name: Setup Node.js
+        uses: actions/setup-node@v4
+        with:
+          node-version-file: ".nvmrc"
+          cache: "pnpm"
+
+      - name: Install dependencies
+        run: pnpm install
+
+      - name: Build tarball
+        run: |
+          pnpm pack
+        working-directory: packages/core
+
+      - name: Create release
+        uses: ncipollo/release-action@v1
+        with:
+          artifacts: "packages/core/llamaindex-*.tgz"
+          name: Release ${{ github.ref }}
+          bodyFile: "packages/core/CHANGELOG.md"
+          token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/packages/core/.gitignore b/packages/core/.gitignore
index 485ee85c2944728f046f93e2e3c5100a4242ea01..8c7df6be225d7a549cc68febfa9d5a610acf0177 100644
--- a/packages/core/.gitignore
+++ b/packages/core/.gitignore
@@ -1,3 +1,4 @@
 .turbo
 /README.md
-LICENSE
\ No newline at end of file
+LICENSE
+*.tgz
\ No newline at end of file