diff --git a/.changeset/lovely-mayflies-appear.md b/.changeset/lovely-mayflies-appear.md
new file mode 100644
index 0000000000000000000000000000000000000000..8038e3d8ae39075c935c3cce76aa84f3d2a35905
--- /dev/null
+++ b/.changeset/lovely-mayflies-appear.md
@@ -0,0 +1,5 @@
+---
+"create-llama": patch
+---
+
+refactor: use tsx instead of ts-node
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 2b82150df15e5e0e5b2ceff10a8c1e0c0f63fd7c..1226bda9909d6e578ebaed90fda712ac276a823c 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -7,7 +7,7 @@ Install NodeJS. Preferably v18 using nvm or n.
 Inside the `create-llama` directory:
 
 ```
-npm i -g pnpm ts-node
+npm i -g pnpm 
 pnpm install
 ```
 
diff --git a/helpers/typescript.ts b/helpers/typescript.ts
index e9553371524d1b7391749964ef7b6001a4404733..244403520b96b53e1874267a3af21fabd7c50e1e 100644
--- a/helpers/typescript.ts
+++ b/helpers/typescript.ts
@@ -205,7 +205,7 @@ async function updatePackageJson({
     // add generate script if using context engine
     packageJson.scripts = {
       ...packageJson.scripts,
-      generate: `ts-node ${path.join(
+      generate: `tsx ${path.join(
         relativeEngineDestPath,
         "engine",
         "generate.ts",
diff --git a/templates/types/streaming/express/package.json b/templates/types/streaming/express/package.json
index 53845d976f2b997d1efa296590b6b8c84036630e..834841f5393f5e6689ef4f840d9d7231619f5f02 100644
--- a/templates/types/streaming/express/package.json
+++ b/templates/types/streaming/express/package.json
@@ -26,7 +26,7 @@
     "nodemon": "^3.0.1",
     "prettier": "^3.2.5",
     "prettier-plugin-organize-imports": "^3.2.4",
-    "ts-node": "^10.9.2",
+    "tsx": "^4.7.2",
     "tsup": "^8.0.1",
     "typescript": "^5.3.2"
   }
diff --git a/templates/types/streaming/express/tsconfig.json b/templates/types/streaming/express/tsconfig.json
index b103d12f77950bd7956bd992d72e09658eb51b01..c242d5fa0e51e04f88a7f4c8e9b6c7274768716f 100644
--- a/templates/types/streaming/express/tsconfig.json
+++ b/templates/types/streaming/express/tsconfig.json
@@ -9,10 +9,5 @@
     "paths": {
       "@/*": ["./*"]
     }
-  },
-  "ts-node": {
-    "compilerOptions": {
-      "module": "commonjs"
-    }
   }
 }
diff --git a/templates/types/streaming/nextjs/package.json b/templates/types/streaming/nextjs/package.json
index 82d984d53eac5e708687403a5afcbe91cdb138b0..baddb358c8e0e3f971c06236087c42d01e2d08ef 100644
--- a/templates/types/streaming/nextjs/package.json
+++ b/templates/types/streaming/nextjs/package.json
@@ -44,7 +44,7 @@
     "prettier": "^3.2.5",
     "prettier-plugin-organize-imports": "^3.2.4",
     "tailwindcss": "^3.3.6",
-    "ts-node": "^10.9.2",
+    "tsx": "^4.7.2",
     "typescript": "^5.3.2"
   }
 }
diff --git a/templates/types/streaming/nextjs/tsconfig.json b/templates/types/streaming/nextjs/tsconfig.json
index 65e2ba60511dc1321cc982d093ac24de5f68d7f4..40c136b8255d33d2f7335e82f141d9d16005d878 100644
--- a/templates/types/streaming/nextjs/tsconfig.json
+++ b/templates/types/streaming/nextjs/tsconfig.json
@@ -24,10 +24,5 @@
     "forceConsistentCasingInFileNames": true
   },
   "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
-  "exclude": ["node_modules"],
-  "ts-node": {
-    "compilerOptions": {
-      "module": "commonjs"
-    }
-  }
+  "exclude": ["node_modules"]
 }