The Eagle 3D Streaming Automation Kit is a Node.js package that uploads a packaged Unreal build, registers it, and waits for the stream test — so a deployment can be a step in a script rather than a person at a browser.
The Automation Tools plugin works from inside Unreal, which suits a developer packaging by hand. The Automation Kit works from a script, which is what you want in a CI/CD pipeline where nobody is watching.
npm install e3ds-automation-kit
The package is on npm.
const { uploadStreamingApp } = require("e3ds-automation-kit");
(async () => {
try {
await uploadStreamingApp(
"../../Downloads/tinyApp.zip", // path to the .zip
process.env.E3DS_API_KEY, // your API key
"MyStreamingApp" // app name
);
console.log("Upload completed successfully!");
} catch (err) {
console.error("Upload failed:", err.message);
}
})();
node index.js
Which then validates the path, requests a signed upload URL, uploads with progress, and polls until the stream test finishes.
Most failures here are the path, so it is worth getting right first time. It must point at the .zip file itself, not the folder holding it and not the project directory.
| Form | Example | Works |
|---|---|---|
Relative to where you run node | "../../Downloads/tinyApp.zip" | Yes |
| Windows, forward slashes | "C:/Users/USER/Downloads/tinyApp.zip" | Yes — the easiest on Windows |
| Windows, escaped backslashes | "C:\\Users\\USER\\Downloads\\tinyApp.zip" | Yes |
| macOS or Linux | "/Users/USER/Downloads/tinyApp.zip" | Yes |
| Windows, single backslashes | "C:\Users\USER\Downloads\tinyApp.zip" | No — JavaScript reads \ as an escape character |
| A folder | "C:/Users/USER/Downloads/" | No — must end in .zip |
Letters, numbers and underscores only. No spaces, no hyphens, no dots, no other punctuation.
"MyStreamingApp" // fine
"My_App_01" // fine
"app123" // fine
"My Streaming App" // space
"My-App" // hyphen
"My@App" // symbol
"My.App" // dot
This is the name that appears in your Control Panel once the upload lands.
| Symptom | Cause | Fix |
|---|---|---|
Cannot find module 'e3ds-automation-kit' | Not installed in this project | npm install e3ds-automation-kit |
Cannot find module '...index.js' | Wrong filename or wrong directory | Run the file that exists, from where it exists. |
| No output at all | Node did not run | Check node -v works. |
Fails at once with Invalid appName | Spaces or symbols in the app name | The name is checked before anything is sent, so nothing was uploaded. Use letters, numbers, underscores. |
| It retries repeatedly | Unstable connection | It retries each step several times on its own, with growing waits — up to 10 times for the upload itself. If every retry fails, the network is the problem. |
Log says Stream test did not complete within 10 minutes | Large build, slow link | The kit stops waiting after 10 minutes but does not throw — the promise still resolves, so the script above prints Upload completed successfully! anyway. Look for that log line, then check the Control Panel, where the stream test may still be progressing. |
What happens to the build once it arrives.
Last updated