# Serverless Node-RED instance - tailless not headless!

**URL:** <https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715>\
**Category:** General\
**Created:** [14 December 2023 13:40 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715 "2023-12-14T13:40:50Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [14 December 2023 13:40 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/1 "2023-12-14T13:40:50Z")

</div>

Hi There!

Having played around with [Stackblitz](https://stackblitz.com/edit/node-djgejy?file=index.js&initialPath=/?fhid=aaab9308f8fbb2c5) and finding it to be suboptimal, I decided to create a [static Node-RED](https://cdn.flowhub.org) with a very basic dynamic server.

The idea is to give folks the feeling of Node-RED without having to install Node-RED. Ever since I started working with Node-RED, I've been trying to find a good way to get others to have a look at Node-RED. Obviously putting up a full-blown instance is simply an invitation to being hacked, putting up an instance with some kind of signup is a step too far for most. So a static editor version is a good - IMHO - way of introducing Node-RED to non-techies.

The static part is hosted at [GitHub](https://github.com/gorenje/cdn.flowhub.org) while the minimal dynamic server is represented by this [flow](https://flowhub.org/f/15cc9fb0e94d56cd) (the dynamic part is of course done with Node-RED!). The Node-RED editor could be used without a dynamic server _but_ it would be continually throwing errors about not being able to connect to the server. So the flow does three things: provide an endpoint of the websocket communication, provide an endpoint for posts (i.e. deploy succeeds but doesn't change anything) and thirdly it dynamically provides the initial flow.json.

This third part is what I use for now providing a link at [flowhub.org](http://flowhub.org) for viewing the flows I host there in Node-RED editor - "View in Node-RED" link. For example, the dynamic backend flow for the server can be viewed in [Node-RED](https://cdn.flowhub.org/?fhid=15cc9fb0e94d56cd).

For those who would like to create their own static Node-RED, its easier than one thinks but there are many pitfalls. I ended up modifying the [red.js](https://github.com/gorenje/cdn.flowhub.org/compare/e0cc205de0d7220fdf2528a056fd44f2bf02bca5..HEAD?w=1#diff-f1d7b9a00a573b86fb61a2f8ca02f32ccd7e7c2beed0ab8d01e2e2e566bf6094L117) to support static and dynamic content. Ironically playing around with Node-RED in Stackblitz gave many insights so that doing this was relatively easy.

Hope it Helps!

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [18 December 2023 17:46 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/2 "2023-12-18T17:46:07Z")

</div>

Just a quick update:

- gists are supported now so that a [flow @ flows.nodered.org](https://flows.nodered.org/flow/6822fd63b61538059faa9b93d3a63d28) becomes [gist=6822fd63b61538059faa9b93d3a63d28](https://cdn.flowhub.org/?gist=6822fd63b61538059faa9b93d3a63d28) when using the static node-red
- importing of flows can also be done, so a flow posted here:

```auto
[{"id":"554fcf2a1a054e30","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"fce77c1a380e8201","type":"inject","z":"554fcf2a1a054e30","name":"Sample Met Office Data","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[{\"time\":\"2023-11-14T19:00Z\",\"screenTemperature\":10.03,\"maxScreenAirTemp\":10.4,\"minScreenAirTemp\":9.99,\"screenDewPointTemperature\":7.56,\"feelsLikeTemperature\":8.09,\"windSpeed10m\":3.86,\"windDirectionFrom10m\":263,\"windGustSpeed10m\":7.72,\"max10mWindGust\":10.13,\"visibility\":16258,\"screenRelativeHumidity\":84.48,\"mslp\":100360,\"uvIndex\":0,\"significantWeatherCode\":0,\"precipitationRate\":0,\"totalPrecipAmount\":0,\"totalSnowAmount\":0,\"probOfPrecipitation\":0},{\"time\":\"2023-11-15T19:00Z\",\"screenTemperature\":12.13,\"maxScreenAirTemp\":13.2,\"minScreenAirTemp\":9.9,\"screenDewPointTemperature\":7.56,\"feelsLikeTemperature\":10.1,\"windSpeed10m\":4.53,\"windDirectionFrom10m\":254,\"windGustSpeed10m\":8.4,\"max10mWindGust\":11.1,\"visibility\":16365,\"screenRelativeHumidity\":75.36,\"mslp\":100372,\"uvIndex\":0.1,\"significantWeatherCode\":0,\"precipitationRate\":0,\"totalPrecipAmount\":0,\"totalSnowAmount\":0,\"probOfPrecipitation\":0}]","payloadType":"json","x":160,"y":60,"wires":[["c6624545f4820893","eb1eb4ae3f46518e"]]},{"id":"c6624545f4820893","type":"ui-chart","z":"554fcf2a1a054e30","group":"e23512b61ee4b0a2","name":"","label":"Feel Like Temperature","order":9007199254740991,"chartType":"line","category":"feels-like","categoryType":"str","xAxisProperty":"time","xAxisPropertyType":"msg","xAxisType":"time","yAxisProperty":"feelsLikeTemperature","ymin":"","ymax":"","showLegend":false,"removeOlder":1,"removeOlderUnit":"3600","removeOlderPoints":"","colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"width":6,"height":8,"className":"","x":480,"y":60,"wires":[[]]},{"id":"eb1eb4ae3f46518e","type":"ui-chart","z":"554fcf2a1a054e30","group":"e23512b61ee4b0a2","name":"","label":"Multiple Lines Example","order":9007199254740991,"chartType":"line","category":"[\"screenTemperature\", \"feelsLikeTemperature\"]","categoryType":"json","xAxisProperty":"time","xAxisPropertyType":"msg","xAxisType":"time","yAxisProperty":"","ymin":"","ymax":"","showLegend":true,"removeOlder":1,"removeOlderUnit":"3600","removeOlderPoints":"","colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"width":6,"height":8,"className":"","x":490,"y":100,"wires":[[]]},{"id":"8864477d6b15168d","type":"inject","z":"554fcf2a1a054e30","name":"Clear","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[]","payloadType":"json","x":210,"y":100,"wires":[["c6624545f4820893","eb1eb4ae3f46518e"]]}]

```

can be copied and then opened [https://cdn.flowhub.org](https://cdn.flowhub.org) by using "import flow" menu point and then pasting into the dialog.

---

<div class="post-metadata">

**Author:** ![jbudd](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jbudd](https://discourse.nodered.org/u/jbudd)\
**Post date:** [18 December 2023 18:22 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/3 "2023-12-18T18:22:11Z")

</div>

It's a useful thing to have a fully functional Node-red playground.

Could I achieve the same thing locally using Node-red on a Raspberry Pi with the overlay filesystem enabled, rebooting every day, so any changes made would be rolled back?

---

<div class="post-metadata">

**Author:** ![bakman2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bakman2/32/6207_2.png) [@bakman2](https://discourse.nodered.org/u/bakman2)\
**Post date:** [18 December 2023 18:43 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/4 "2023-12-18T18:43:05Z")

</div>

I recall some years ago where someone created node-red to actually run in the browser all the way, as for many things, no backend is 'truly' necessary. The project died off silently though.

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [18 December 2023 18:46 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/5 "2023-12-18T18:46:51Z")

</div>

> [@jbudd](#):
>
> Could I achieve the same thing locally using Node-red on a Raspberry Pi with the overlay filesystem enabled, rebooting every day, so any changes made would be rolled back?

Sure, are you going to put it up on the Net? It would be much better to have something that does have a server, I agree. I guess that's for those that come after me.

> [@jbudd](#):
>
> It's a useful thing to have a fully functional Node-red playground.

Something similar to what [BabylonJS](https://playground.babylonjs.com/#GT8E7R#1) has or [Mermaid](https://mermaid.live/edit#pako:eNptj0ELwjAMhf9KyNX5B3aYCB5E8ORNegltZgttM7sWGWP_3c6hJ3N6L3wh782oxTC2OPKzcNR8cvRIFFSEOkfvNO-7bncRG1s4s_cCq27AygsoMUxSDn_hDdMUVwQsU4LAFcUGA6dAztSv83qqMFsOrLCt0nBPxWeFKi4VpZLlNkWNbU9-5AbLYCh_U_62A8W7SPU5lWrZuCzpujX7FFze5AtNgg) has but it's not that simple with Node-RED, either of those have a server side.

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [18 December 2023 18:50 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/6 "2023-12-18T18:50:28Z")

</div>

> [@bakman2](#):
>
> node-red to actually run in the browser

Do you mean this [Node-Red in Browser via Stackblitz](https://discourse.nodered.org/t/node-red-in-browser-via-stackblitz/72224) - that was last year? I played around with that and it does semi-work but it's very fragile and only really works with Chromium browsers.

> [@bakman2](#):
>
> The project died off silently though.

I have other reasons for creating this "in browser" Node-RED, it's actually not that important that there is no server - at least for my purposes.

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [18 December 2023 18:52 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/7 "2023-12-18T18:52:29Z")

</div>

Well it's still hosted - [GitHub - monteslu/pagenodes: Completely Browser Based IOT Platform](https://github.com/monteslu/pagenodes)  
and @Monteslu is still very active on other projects 🙂

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [18 December 2023 19:08 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/8 "2023-12-18T19:08:11Z")

</div>

[https://pagenodes.com/](https://pagenodes.com/) ==\>

![Screen Shot 2023-12-18 at 19.58.52](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/a/1/a1d1950a67db52d3af62fcd3f865530a5af905b2.png)

Could it be hosted on GitHub as a pages thing?

Being six years old, which version of Node-RED would that be?

Pity about all the work that went into that creating browser workers to simulate the server.

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [18 December 2023 19:11 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/9 "2023-12-18T19:11:27Z")

</div>

Ok I accepted the certificate and now the NSA noticed I did this:

 ![Screen Shot 2023-12-18 at 20.10.10](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/c/3/c36e6414975dfefb25768a51c7aa1bff4329b2b4.png)

Is that original UI from Node-RED 2018?

Edit:

How do I use the Sentiment node?

![Screen Shot 2023-12-18 at 20.12.58](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/e/f/ef8d174f19b7a6f8e7c402d167d045bd67efb4b3.png)

😉

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [18 December 2023 19:14 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/10 "2023-12-18T19:14:27Z")

</div>

If you accept the risk it's still there -

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/f/7/f7f75af4e55f782584a29693522995395789c9ae.jpeg)

Can't recall the version but yes very old... and yes @monteslu is/was a beast.

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [18 December 2023 19:19 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/11 "2023-12-18T19:19:17Z")

</div>

All respect to everyone involved - it actually allowed me to import a 2023 flow and it displayed correctly.

---

<div class="post-metadata">

**Author:** ![jbudd](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jbudd](https://discourse.nodered.org/u/jbudd)\
**Post date:** [18 December 2023 19:20 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/12 "2023-12-18T19:20:16Z")

</div>

> [@gregorius](#):
>
> Sure, are you going to put it up on the Net?

Ah yes. It would have to be thought out carefully, probably involving many buzzwords and acronyms.

Fortunately, it's not easy to put my network on the Web because it's behind carrier grade Nat.

And there's a fistful of jargon already!

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [18 December 2023 19:42 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/13 "2023-12-18T19:42:06Z")

</div>

Wow! Whatever happened to the oscillator node?

 ![Screen Shot 2023-12-18 at 20.39.32](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/2/f/2fcdb62db92d7391b065015145f1b13ef21f1b5b.png)

I created this flow:

```auto
[{"id":"ZnCarn2EMvc","type":"inject","z":"kZRMsOFyOcU","name":"","topic":"","payload":"hello world","payloadType":"str","repeat":"","crontab":"","once":false,"allowDebugInput":false,"x":659,"y":549,"wires":[["uNYQrOQlQ48","wzZ9LUvgHyM","55mW_ID9RX8","7BU5MB1m0zE"]]},{"id":"uNYQrOQlQ48","type":"oscillator","z":"kZRMsOFyOcU","name":"","duration":500,"frequency":440,"shape":"sine","active":true,"x":1049,"y":666,"wires":[]},{"id":"wzZ9LUvgHyM","type":"delay","z":"kZRMsOFyOcU","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":788,"y":731,"wires":[["2PEw6d-_ARc","xpjzOGHaxto","0NfHRCI-LsI","c65GSyZSqj4"]]},{"id":"55mW_ID9RX8","type":"delay","z":"kZRMsOFyOcU","name":"","pauseType":"delay","timeout":"400","timeoutUnits":"milliseconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":727,"y":796,"wires":[["Uj5RKjRuReY"]]},{"id":"7BU5MB1m0zE","type":"delay","z":"kZRMsOFyOcU","name":"","pauseType":"delay","timeout":"350","timeoutUnits":"milliseconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":680,"y":872,"wires":[["vb_oH2qrT_g"]]},{"id":"2PEw6d-_ARc","type":"oscillator","z":"kZRMsOFyOcU","name":"430","duration":500,"frequency":"430","shape":"sine","active":true,"x":1039,"y":759,"wires":[]},{"id":"xpjzOGHaxto","type":"delay","z":"kZRMsOFyOcU","name":"","pauseType":"delay","timeout":"350","timeoutUnits":"milliseconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":970,"y":797,"wires":[["E4uUNUrlKlo"]]},{"id":"0NfHRCI-LsI","type":"delay","z":"kZRMsOFyOcU","name":"","pauseType":"delay","timeout":"400","timeoutUnits":"milliseconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1033,"y":717,"wires":[["d4MlNQqNe8Q"]]},{"id":"c65GSyZSqj4","type":"delay","z":"kZRMsOFyOcU","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1105,"y":602,"wires":[["ejh48qVqMp4","bueYWOFfyAo","gSrp32e8__E","9KkY1_6bbYE"]]},{"id":"Uj5RKjRuReY","type":"oscillator","z":"kZRMsOFyOcU","name":"430","duration":500,"frequency":"420","shape":"sine","active":true,"x":971,"y":840,"wires":[]},{"id":"vb_oH2qrT_g","type":"oscillator","z":"kZRMsOFyOcU","name":"430","duration":500,"frequency":"410","shape":"sine","active":true,"x":904,"y":903,"wires":[]},{"id":"E4uUNUrlKlo","type":"oscillator","z":"kZRMsOFyOcU","name":"430","duration":500,"frequency":"340","shape":"sine","active":true,"x":1205,"y":830,"wires":[]},{"id":"d4MlNQqNe8Q","type":"oscillator","z":"kZRMsOFyOcU","name":"430","duration":500,"frequency":"390","shape":"sine","active":true,"x":1226,"y":755,"wires":[]},{"id":"ejh48qVqMp4","type":"oscillator","z":"kZRMsOFyOcU","name":"430","duration":500,"frequency":"380","shape":"sine","active":true,"x":1232,"y":675,"wires":[]},{"id":"bueYWOFfyAo","type":"delay","z":"kZRMsOFyOcU","name":"","pauseType":"delay","timeout":"350","timeoutUnits":"milliseconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":909,"y":468,"wires":[["SmvQYzfQTUY"]]},{"id":"gSrp32e8__E","type":"delay","z":"kZRMsOFyOcU","name":"","pauseType":"delay","timeout":"400","timeoutUnits":"milliseconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":956,"y":392,"wires":[["PmFlSVuoxTs"]]},{"id":"9KkY1_6bbYE","type":"delay","z":"kZRMsOFyOcU","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1017,"y":327,"wires":[["aS_xapK3jjs"]]},{"id":"SmvQYzfQTUY","type":"oscillator","z":"kZRMsOFyOcU","name":"430","duration":500,"frequency":"410","shape":"sine","active":true,"x":1133,"y":499,"wires":[]},{"id":"PmFlSVuoxTs","type":"oscillator","z":"kZRMsOFyOcU","name":"430","duration":500,"frequency":"420","shape":"sine","active":true,"x":1200,"y":436,"wires":[]},{"id":"aS_xapK3jjs","type":"oscillator","z":"kZRMsOFyOcU","name":"430","duration":500,"frequency":"430","shape":"sine","active":true,"x":1241,"y":358,"wires":[]}]

```

and now my neighbours are complaining!

---

<div class="post-metadata">

**Author:** ![monteslu](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/monteslu/32/62114_2.png) [@monteslu](https://discourse.nodered.org/u/monteslu)\
**Post date:** [18 December 2023 20:03 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/14 "2023-12-18T20:03:23Z")

</div>

thanks for the kind words, dceejay

I really gotta update this. It's pretty far back from node-red main now, and needs https certs updated so it can use secure web APIs again.

I did a bunch of work for communcation with webcontainers. Been thinking about doing a new build of mainline node-red + webcontainers + browser APIs

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [18 December 2023 20:21 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/15 "2023-12-18T20:21:22Z")

</div>

> [@monteslu](#):
>
> I really gotta update this. It's pretty far back from node-red main now, and needs https certs updated so it can use secure web APIs again.

Great work 👍

Can't you put this up as a github pages thing? I did notice the [CNAME](https://github.com/monteslu/pagenodes/blob/master/editor/CNAME) file, was that an attempt at using github?

Btw just stole your oscillator node and will bring it back 😉

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [19 December 2023 11:15 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/16 "2023-12-19T11:15:31Z")

</div>

> [@gregorius](#):
>
> Btw just stole your oscillator node and will bring it back

For those who desire to make sound in their browser using Node-RED, check out [this flow](https://flowhub.org/f/dffde1454d88f8c5) (in Node-RED [view](https://cdn.flowhub.org/?fhid=dffde1454d88f8c5)) - the flow uses the [client code](https://flows.nodered.org/node/@gregoriusrippenstein/node-red-contrib-introspection) node for interfacing with the browser, the browser code then uses the [WebAudio](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API) API to create the sounds. I've added fade-in/out to avoid crackling but your mileage might vary.

---

<div class="post-metadata">

**Author:** ![Paul-Reed](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/paul-reed/32/66906_2.png) [@Paul-Reed](https://discourse.nodered.org/u/Paul-Reed)\
**Post date:** [19 December 2023 13:05 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/17 "2023-12-19T13:05:09Z")

</div>

> [@gregorius](#):
>
> (in Node-RED [view](https://cdn.flowhub.org/?fhid=dffde1454d88f8c5))

I get this error, when firing the inject node using google chrome browser on a laptop.

![execution](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/2/0/20af602fe8af2dbe61e4e003023bf2d87698a2f4.jpeg)

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [19 December 2023 15:30 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/18 "2023-12-19T15:30:45Z")

</div>

Feature not bug, it's a serverless node Red so nothing can be executed. It's only for the visual feel when using node Red.

But what you can do is view the code ~~beyond~~ behind the nodes, make changes and then export the flow to import into a serverful node Red instance.

Edit: beyond --\> behind

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [19 December 2023 17:51 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/19 "2023-12-19T17:51:44Z")

</div>

> [@gregorius](#):
>
> Feature not bug

Shouldn't that be an "expected" error then, not an unexpected one? 😉

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [19 December 2023 18:06 UTC](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715/20 "2023-12-19T18:06:43Z")

</div>

> [@TotallyInformation](#):
>
> Shouldn't that be an "expected" error then, not an unexpected one?

Well I knew it was a feature, so there is no talk of bug/error from me! 😉 Btw that's also a feature, not a bug!

Philosophical question: what's the difference between error and bug? A user has an error and a programmer finds the bug?

[Next page](https://discourse.nodered.org/t/serverless-node-red-instance-tailless-not-headless/83715.md?page=2)
