diff --git a/groundStation/gui/MicroCART/MicroCART.pro b/groundStation/gui/MicroCART/MicroCART.pro
index 094787c0fc0a27ed7504a4aaeed3448e5a849aaf..d2c2206c6e0deed66c3ef56870ae1faa244c5be3 100644
--- a/groundStation/gui/MicroCART/MicroCART.pro
+++ b/groundStation/gui/MicroCART/MicroCART.pro
@@ -18,12 +18,14 @@ SOURCES += main.cpp\
         mainwindow.cpp \
     trackerworker.cpp \
     controlworker.cpp \
-    quaditem.cpp
+    quaditem.cpp \
+    slotprocess.cpp
 
 HEADERS  += mainwindow.h \
     trackerworker.h \
     controlworker.h \
-    quaditem.h
+    quaditem.h \
+    slotprocess.h
 
 FORMS    += mainwindow.ui
 
diff --git a/groundStation/gui/MicroCART/mainwindow.cpp b/groundStation/gui/MicroCART/mainwindow.cpp
index 04c33474622e797371beb24a337367f32c3f0a27..0c0b3ffdcc7d4e2cc0f8d748585cc0e5656ae517 100644
--- a/groundStation/gui/MicroCART/mainwindow.cpp
+++ b/groundStation/gui/MicroCART/mainwindow.cpp
@@ -12,6 +12,7 @@
 #include "controlworker.h"
 #include "graph_blocks.h"
 #include "quaditem.h"
+#include "slotprocess.h"
 
 #include <iostream>
 MainWindow::MainWindow(QWidget *parent) :
@@ -100,6 +101,16 @@ MainWindow::MainWindow(QWidget *parent) :
     /* Connect various things that can result in sending setpoints */
     connect(ui->pbSendSetpoint, SIGNAL (clicked()), this, SLOT (sendSetpoints()));
     connect(ui->setpointList, SIGNAL (doubleClicked(QModelIndex)), this, SLOT (sendSelectedSetpoint()));
+
+    /* Populate scripts list */
+    QDir scriptsDir("scripts/");
+    QStringList scripts = scriptsDir.entryList();
+    for (int i = 0; i < scripts.size(); i++) {
+        QAction * action = ui->menuScripts->addAction(scripts[i]);
+        SlotProcess * scriptProcess = new SlotProcess(action);
+        scriptProcess->setProgram(scriptsDir.filePath(scripts[i]));
+        connect(action, SIGNAL (triggered()), scriptProcess, SLOT (startProcess()));
+    }
 }
 
 MainWindow::~MainWindow()
diff --git a/groundStation/gui/MicroCART/mainwindow.ui b/groundStation/gui/MicroCART/mainwindow.ui
index 4412aa3c3db2598c6b13dfe3aa8c319145a12aee..da97a7a4baf0599c025dbd6d81e62e06b90abefb 100644
--- a/groundStation/gui/MicroCART/mainwindow.ui
+++ b/groundStation/gui/MicroCART/mainwindow.ui
@@ -1131,6 +1131,12 @@
      <height>27</height>
     </rect>
    </property>
+   <widget class="QMenu" name="menuScripts">
+    <property name="title">
+     <string>Scripts</string>
+    </property>
+   </widget>
+   <addaction name="menuScripts"/>
   </widget>
   <widget class="QToolBar" name="mainToolBar">
    <attribute name="toolBarArea">
diff --git a/groundStation/gui/MicroCART/slotprocess.cpp b/groundStation/gui/MicroCART/slotprocess.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f12cb0fe50dd76f7d7a1df8c616039e1c17d3e69
--- /dev/null
+++ b/groundStation/gui/MicroCART/slotprocess.cpp
@@ -0,0 +1,30 @@
+#include "slotprocess.h"
+#include <QDebug>
+
+void SlotProcess::startProcess()
+{
+    qInfo() << "Started process " + program();
+    setProcessChannelMode(QProcess::ForwardedChannels);
+    connect(this, SIGNAL (finished(int, QProcess::ExitStatus)), this, SLOT (notifyFinished(int, QProcess::ExitStatus)));
+    connect(this, SIGNAL (errorOccurred(QProcess::ProcessError)), this, SLOT (notifyError(QProcess::ProcessError)));
+    start();
+}
+
+void SlotProcess::notifyFinished(int status, QProcess::ExitStatus exitStatus)
+{
+    qInfo() << "Finished process " + program();
+    if (exitStatus != QProcess::NormalExit) {
+        qInfo() << "Did not exit normally!" + QString::number(status);
+    }
+}
+
+void SlotProcess::notifyError(QProcess::ProcessError error)
+{
+    qInfo() << "Error with process " + program() + " " + errorString();
+}
+
+SlotProcess::SlotProcess(QObject * parent) :
+    QProcess(parent)
+{
+
+}
diff --git a/groundStation/gui/MicroCART/slotprocess.h b/groundStation/gui/MicroCART/slotprocess.h
new file mode 100644
index 0000000000000000000000000000000000000000..ce86da25fc7282460b6c6257581dc37c594c7262
--- /dev/null
+++ b/groundStation/gui/MicroCART/slotprocess.h
@@ -0,0 +1,19 @@
+#ifndef SLOTPROCESS_H
+#define SLOTPROCESS_H
+
+#include <QObject>
+#include <QProcess>
+
+class SlotProcess : public QProcess
+{
+    Q_OBJECT
+public:
+   SlotProcess(QObject *);
+
+public slots:
+    void startProcess();
+    void notifyFinished(int status, QProcess::ExitStatus);
+    void notifyError(QProcess::ProcessError error);
+};
+
+#endif // SLOTPROCESS_H