diff --git a/.gitignore b/.gitignore
index a98bc7bdd31d6ae1cca773f2e8d65fd5f22b4981..71c6a896992d914b21bb96b7588241447dee1d73 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,6 @@
 # Gradle
 .gradle/
 /build/
+
+# Generated
+/kernelspec/prob2/kernel.json
diff --git a/build.gradle b/build.gradle
index b1843d26b65d97fcf89a1a894d70a62892c2983c..a725fcdc5743839a65a9e6aefb5d2a2003979e93 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,3 +1,6 @@
+import java.nio.charset.StandardCharsets
+import java.nio.file.Files
+import java.nio.file.Paths
 import java.util.concurrent.TimeUnit
 
 plugins {
@@ -47,3 +50,35 @@ tasks.withType(JavaCompile) {
 }
 
 mainClassName = "de.prob2.jupyter.Main"
+
+final KERNEL_SPEC_PATH = project.projectDir.toPath().resolve(Paths.get("kernelspec", "prob2"))
+final KERNEL_JSON_PATH = KERNEL_SPEC_PATH.resolve("kernel.json")
+task createKernelSpec {
+	dependsOn = [shadowJar]
+	outputs.files(KERNEL_JSON_PATH.toFile())
+	
+	doFirst {
+		final jarPath = shadowJar.archivePath
+		final jsonText = """{
+\t"argv": [
+\t\t"java",
+\t\t"-jar",
+\t\t"$jarPath",
+\t\t"{connection_file}"
+\t],
+\t"display_name": "ProB 2",
+\t"language": "prob"
+}
+"""
+		Files.write(KERNEL_JSON_PATH, jsonText.getBytes(StandardCharsets.UTF_8))
+	}
+}
+
+task installKernelSpec(type: Exec) {
+	dependsOn = [createKernelSpec]
+	executable = "python3"
+	args = ["-m", "jupyter", "kernelspec", "install", "--sys-prefix", KERNEL_SPEC_PATH.toString()]
+}
+if (hasProperty("pythonInterpreter")) {
+	installKernelSpec.executable = pythonInterpreter
+}
diff --git a/kernelspec/prob2/logo-32x32.png b/kernelspec/prob2/logo-32x32.png
new file mode 100644
index 0000000000000000000000000000000000000000..2331b0da00935831167950296364775dfe203027
Binary files /dev/null and b/kernelspec/prob2/logo-32x32.png differ
diff --git a/kernelspec/prob2/logo-64x64.png b/kernelspec/prob2/logo-64x64.png
new file mode 100644
index 0000000000000000000000000000000000000000..44728e831a7df9e5492db14b45e127537e89e55b
Binary files /dev/null and b/kernelspec/prob2/logo-64x64.png differ