# Run swish locally

**URL:** <https://swi-prolog.discourse.group/t/run-swish-locally/9612>\
**Category:** Tools\
**Tags:** swish\
**Created:** [May 9, 2026, 7:37pm UTC](https://swi-prolog.discourse.group/t/run-swish-locally/9612 "2026-05-09T19:37:12Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![mgondan1](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/mgondan1/32/803_2.png) [@mgondan1](https://swi-prolog.discourse.group/u/mgondan1)\
**Post date:** [May 9, 2026, 7:37pm UTC](https://swi-prolog.discourse.group/t/run-swish-locally/9612/1 "2026-05-09T19:37:12Z")

</div>

I followed the steps here,

> **[GitHub - SWI-Prolog/swish: SWI-Prolog for SHaring: a SWI-Prolog web IDE](https://github.com/SWI-Prolog/swish#local-installation)**
>
> SWI-Prolog for SHaring: a SWI-Prolog web IDE

```prolog
git clone https://github.com/SWI-Prolog/swish
cd swish
git submodule update --init
make packs
sudo apt install npm nodejs
sudo npm i yarn -g
yarn
make src
sudo apt-get install imagemagick
sudo apt-get install graphviz
swipl run.pl

```

But in the browser on localhost:3050, I just see an empty page (with the cogwheel and the search bar). Did I miss something?

---

<div class="post-metadata">

**Author:** ![EricGT](https://avatars.discourse-cdn.com/v4/letter/e/f1d935/32.png) [@EricGT](https://swi-prolog.discourse.group/u/EricGT)\
**Post date:** [May 9, 2026, 10:05pm UTC](https://swi-prolog.discourse.group/t/run-swish-locally/9612/2 "2026-05-09T22:05:27Z")

</div>

This just a wild first guess that is untested.

`git submodule update --init --recursive`

---

<div class="post-metadata">

**Author:** ![jan](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/jan/32/4_2.png) [@jan](https://swi-prolog.discourse.group/u/jan)\
**Post date:** [May 10, 2026, 6:18am UTC](https://swi-prolog.discourse.group/t/run-swish-locally/9612/3 "2026-05-10T06:18:08Z")

</div>

> [@mgondan1](#):
>
> Did I miss something?

At first sight, no. Some error/warning that may give a clue? You may also wish to open the browser console and check for errors.

> [@EricGT](#):
>
> –recursive

There are no recursive submodules in SWISH.

---

<div class="post-metadata">

**Author:** ![mgondan1](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/mgondan1/32/803_2.png) [@mgondan1](https://swi-prolog.discourse.group/u/mgondan1)\
**Post date:** [May 10, 2026, 7:21am UTC](https://swi-prolog.discourse.group/t/run-swish-locally/9612/4 "2026-05-10T07:21:18Z")

</div>

The recursive option should not change anything. I‘ll see if I find suspicious warnings in the browser.

---

<div class="post-metadata">

**Author:** ![mgondan1](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/mgondan1/32/803_2.png) [@mgondan1](https://swi-prolog.discourse.group/u/mgondan1)\
**Post date:** [May 10, 2026, 8:29am UTC](https://swi-prolog.discourse.group/t/run-swish-locally/9612/5 "2026-05-10T08:29:11Z")

</div>

I see this error in the browser’s console:

```prolog
Uncaught Error: Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4
    <anonymous> http://localhost:3050/node_modules/bootstrap/dist/js/bootstrap.min.js?ts=1778401356226:6
    <anonymous> http://localhost:3050/node_modules/bootstrap/dist/js/bootstrap.min.js?ts=1778401356226:6

```

The workaround via [http://www.swi-prolog.org/download/swish/swish-node-modules.zip](http://www.swi-prolog.org/download/swish/swish-node-modules.zip) and `make yarn-zip` solved the problem.

---

<div class="post-metadata">

**Author:** ![mgondan1](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/mgondan1/32/803_2.png) [@mgondan1](https://swi-prolog.discourse.group/u/mgondan1)\
**Post date:** [May 10, 2026, 8:46am UTC](https://swi-prolog.discourse.group/t/run-swish-locally/9612/6 "2026-05-10T08:46:38Z")

</div>

All right, thanks for the hint. Just for the records, if I want to use R from SWISH, the two following steps are needed (they are documented, but I repeat them here):

```prolog
$ cp config-available/r_serve.pl config-enabled/
$ R
> install.packages("Rserve")
> library(Rserve)
> Rserve()
$ swipl
?- pack_install(rserve_client).
$ swipl run.pl

```
