diff --git a/.gitignore b/.gitignore
index 2b4f54f21d9cf186ece79748c5ccf45d6620dc45..993b9c8b2112ae1fd38f410d6e1e1d5cd504da02 100644
--- a/.gitignore
+++ b/.gitignore
@@ -54,6 +54,7 @@ _build
 /dev/fc-time
 /dev/fc-memuse
 /bin/ocamldep_transitive_closure
+/bin/ivette
 
 #share
 /share/Makefile.config
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2b3f95777cc993fbea6088cf52928c941a60c56c..1373161286b2f6e7f26e5439ad9953a82e0e09cc 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -122,7 +122,7 @@ ivette:
     - node --version
     - npm --version
     - yarn --version
-    - make -C ivette
+    - make -C ivette lint dome-app
   tags:
     - docker
 
diff --git a/Makefile b/Makefile
index 9d94325ae423e998f608e5d2d06ac95347178f4e..cccd90e1305ba9f8cdc448f87a2fee4122d37c47 100644
--- a/Makefile
+++ b/Makefile
@@ -73,6 +73,18 @@ endif
 	dune clean
 	rm -rf _build .merlin
 
+##############################################################################
+# IVETTE
+################################
+
+.PHONY: ivette ivette-dev
+
+ivette:
+	@$(MAKE) -C ivette
+
+ivette-dev:
+	@$(MAKE) -C ivette dev
+
 ##############################################################################
 # HELP
 ################################
diff --git a/ivette/.gitignore b/ivette/.gitignore
index 5137465dd358ebe9aa0f203fc100c0b4cae255b5..08b3cc95e60a655d4d140fb6f410ec9dbedb4ebc 100644
--- a/ivette/.gitignore
+++ b/ivette/.gitignore
@@ -9,7 +9,6 @@
 .eslint-cache
 node_modules
 yarn-error.log
-/bin
 /dist
 /doc/html
 /src/renderer/loader.ts
diff --git a/ivette/Makefile b/ivette/Makefile
index 84dc2b6ad5acadfdc84b34dcd8cd4d92a1f949b9..137f743ac2696b9cd67ca6a2343e85c840a77ef7 100644
--- a/ivette/Makefile
+++ b/ivette/Makefile
@@ -23,9 +23,9 @@
 # --------------------------------------------------------------------------
 APP=Ivette
 DOME=./src/dome
-DOME_ARGS=--command $$(dirname $$0)/../../bin/frama-c
+DOME_ARGS=--command $$(dirname $$0)/frama-c
 DOME_DEV=-server-debug 1
-DOME_CLI=./bin/ivette
+DOME_CLI=../bin/ivette
 DOME_API=./src/frama-c
 DOME_CUSTOM_ENTRIES= yes
 COPYRIGHT=CEA LIST / LSL
@@ -39,8 +39,8 @@ COPYRIGHT=CEA LIST / LSL
 
 all: pkg lint app
 
-app: dome-app
-dev: dome-dev
+app: api dome-app
+dev: api dome-dev
 
 lint: dome-pkg dome-templ checkcase
 	@echo "[Ivette] running typechecker & linter"
diff --git a/ivette/ivette-bootstrap.sh b/ivette/ivette-bootstrap.sh
index 5ce9ba70657d986e5fcfde39fca87290fa614b23..7ab111cffcb3cb46eefcd2b8a65c5b04648bc2ad 100755
--- a/ivette/ivette-bootstrap.sh
+++ b/ivette/ivette-bootstrap.sh
@@ -87,15 +87,15 @@ fi
 echo "[2/3] Compiling Ivette"
 # --------------------------------------------------------------------------
 
-TMPDIR=`mktemp -d`
-cd $TMPDIR
+IVETTE_TMP_DIR=`mktemp -d`
+cd $IVETTE_TMP_DIR
 tar zxf $PREFIX/lib/frama-c/ivette.tgz
 cd ivette
 make dist
 if [ "$?" != "0" ]
 then
     echo "Compilation Failed"
-    rm -fr $TMPDIR
+    rm -fr $IVETTE_TMP_DIR
     exit 2
 fi
 
@@ -107,11 +107,11 @@ make PREFIX=$PREFIX install
 if [ "$?" != "0" ]
 then
     echo "Installation Failed"
-    rm -fr $TMPDIR
+    rm -fr $IVETTE_TMP_DIR
     exit 3
 fi
 cd $USERCWD
-rm -fr $TMPDIR
+rm -fr $IVETTE_TMP_DIR
 rm -f $PREFIX/lib/frama-c/ivette.tgz
 
 # --------------------------------------------------------------------------
diff --git a/ivette/src/dome/main/dome.ts b/ivette/src/dome/main/dome.ts
index d32c37a3f9c3c371a5705628c5dd8acb56865dab..bec195e27ee9085cccef96609a09e8126e80988f 100644
--- a/ivette/src/dome/main/dome.ts
+++ b/ivette/src/dome/main/dome.ts
@@ -501,8 +501,13 @@ function createBrowserWindow(
 // --- Application Window(s) & Command Line
 // --------------------------------------------------------------------------
 
-function stripElectronArgv(argv: string[]): string[] {
-  return argv.slice(DEVEL ? 3 : (LOCAL ? 2 : 1)).filter((p) => !!p);
+interface Cmd { wdir: string; argv: string[] }
+
+function stripElectronArgv(cmd: Cmd): Cmd
+{
+  const wdir = DEVEL ? cmd.argv[3] : cmd.wdir ;
+  const argv = cmd.argv.slice(DEVEL ? 4 : (LOCAL ? 2 : 1)).filter((p) => !!p);
+  return { wdir, argv };
 }
 
 function createPrimaryWindow(): void {
@@ -516,14 +521,14 @@ function createPrimaryWindow(): void {
     });
   const cwd = process.cwd();
   const wdir = cwd === '/' ? app.getPath('home') : cwd;
-  const argv = stripElectronArgv(process.argv);
+  const cmd = stripElectronArgv({ wdir, argv: process.argv });
 
   // Initialize Theme
   const globals = obtainGlobalSettings();
   applyThemeSettings(globals);
 
   // Create Window
-  createBrowserWindow(true, { title: appName }, argv, wdir);
+  createBrowserWindow(true, { title: appName }, cmd.argv, cmd.wdir);
 }
 
 let appCount = 1;
@@ -538,9 +543,9 @@ function createSecondaryWindow(
   if (argString) {
     argString = argString.substring(argStart.length);
     const electronArgv = JSON.parse(argString);
-    const argv = stripElectronArgv(electronArgv);
+    const cmd = stripElectronArgv({ wdir, argv: electronArgv });
     const title = `${appName} #${++appCount}`;
-    createBrowserWindow(false, { title }, argv, wdir);
+    createBrowserWindow(false, { title }, cmd.argv, cmd.wdir);
   }
 }
 
diff --git a/ivette/src/dome/misc/system.ts b/ivette/src/dome/misc/system.ts
index f97d6e7760df5f02ba7cc2a1860290ec7b03bcea..0896e7712106c082ab1ad4a2db4d1da4354e55fa 100644
--- a/ivette/src/dome/misc/system.ts
+++ b/ivette/src/dome/misc/system.ts
@@ -144,6 +144,7 @@ let COMMAND_WDIR = '.';
 let COMMAND_ARGV: string[] = [];
 
 function setCommandLine(argv: string[], wdir: string): void {
+  process.chdir(wdir);
   COMMAND_ARGV = argv;
   COMMAND_WDIR = wdir;
 }
diff --git a/ivette/src/dome/template/makefile b/ivette/src/dome/template/makefile
index b79a6e427570a59875966f7b19825a5aa5039b02..1f8033fcaf03d3ec165d86b7e415fb9407dad4ce 100644
--- a/ivette/src/dome/template/makefile
+++ b/ivette/src/dome/template/makefile
@@ -25,6 +25,7 @@
 # --------------------------------------------------------------------------
 
 # DOMEMK_ reserved for makefile derived variables
+# CURDIR is a Makefile builtin variable
 
 APP?=$(shell basename $(CURDIR))
 COPYRIGHT?=CEA Tech
@@ -220,10 +221,11 @@ dome-dev: dome-pkg dome-templ
 	@echo "#!/bin/sh" >> $(DOME_CLI)
 	@echo "export DOME='$(DOME)'" >> $(DOME_CLI)
 	@echo "export DOME_ENV='dev'" >> $(DOME_CLI)
-	@echo 'exec $(DOME_MK_BIN)/electron-webpack dev $(DOME_ARGS) $(DOME_DEV) "$$@"' >> $(DOME_CLI)
+	@echo 'WDIR=$$PWD' >> $(DOME_CLI)
+	@echo 'ARGV="$(DOME_ARGS) $(DOME_DEV) $$@"' >> $(DOME_CLI)
+	@echo "cd $(CURDIR)" >> $(DOME_CLI)
+	@echo 'exec $(DOME_MK_BIN)/electron-webpack dev $$WDIR $$ARGV' >> $(DOME_CLI)
 	@chmod 555 $(DOME_CLI)
-	@echo "[Dome] running application (development)"
-	@$(DOME_CLI)
 
 # --------------------------------------------------------------------------
 # ---  Application Building