diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..70ee29cf59a85f52c6cb0a8f3331c02977ce8c60
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,5 @@
+mitogen:
+	ansible-playbook -c local mitogen.yaml -vv
+clean:
+	rm -rf dist/
+	rm *.retry
diff --git a/ansible.cfg b/ansible.cfg
index 6912e4d0891c9712fff031e76fe7db1831e442b7..bed2c4ae776592e2ae3b6ffda718468ac49f10fd 100644
--- a/ansible.cfg
+++ b/ansible.cfg
@@ -3,6 +3,8 @@ pipelining=True
 ssh_args = -o ControlMaster=auto -o ControlPersist=30m -o ConnectionAttempts=100 -o UserKnownHostsFile=/dev/null
 #control_path = ~/.ssh/ansible-%%r@%%h:%%p
 [defaults]
+strategy_plugins = plugins/mitogen/ansible_mitogen/plugins/strategy
+
 host_key_checking=False
 gathering = smart
 fact_caching = jsonfile
diff --git a/mitogen.yaml b/mitogen.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..5cae114ff78bb70c4e2e4959c1d652334b49d0f0
--- /dev/null
+++ b/mitogen.yaml
@@ -0,0 +1,30 @@
+- hosts: localhost
+  strategy: linear
+  vars:
+    mitogen_version: master
+    mitogen_url: https://github.com/dw/mitogen/archive/{{mitogen_version}}.zip
+  tasks:
+    - name: Create mitogen plugin dir
+      file:
+        path: "{{item}}"
+        state: directory
+      become: false
+      loop:
+        - "{{playbook_dir}}/plugins/mitogen"
+        - "{{playbook_dir}}/dist"
+
+    - name: download mitogen release
+      get_url:
+        url: "{{mitogen_url}}"
+        dest: "{{playbook_dir}}/dist/mitogen_{{mitogen_version}}.zip"
+        validate_certs: true
+
+    - name: extract zip
+      unarchive:
+        src: "{{playbook_dir}}/dist/mitogen_{{mitogen_version}}.zip"
+        dest: "{{playbook_dir}}/dist/"
+
+    - name: copy plugin
+      synchronize:
+        src: "{{playbook_dir}}/dist/mitogen-{{mitogen_version}}/"
+        dest: "{{playbook_dir}}/plugins/mitogen"