diff --git a/baystation12.dme b/baystation12.dme
index 6ddd4de538e..fa319db3fab 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -508,6 +508,7 @@
#include "code\game\objects\items\robot\robot_parts.dm"
#include "code\game\objects\items\robot\robot_upgrades.dm"
#include "code\game\objects\items\stacks\medical.dm"
+#include "code\game\objects\items\stacks\nanopaste.dm"
#include "code\game\objects\items\stacks\rods.dm"
#include "code\game\objects\items\stacks\stack.dm"
#include "code\game\objects\items\stacks\sheets\glass.dm"
diff --git a/code/game/objects/items/stacks/nanopaste.dm b/code/game/objects/items/stacks/nanopaste.dm
new file mode 100644
index 00000000000..c4697e63b6f
--- /dev/null
+++ b/code/game/objects/items/stacks/nanopaste.dm
@@ -0,0 +1,37 @@
+/obj/item/stack/nanopaste
+ name = "nanopaste"
+ singular_name = "nanite swarm"
+ desc = "A tube of paste containing swarms of repair nanties. Very effective in repairing robotic machinery."
+ icon = 'icons/obj/nanopaste.dmi'
+ icon_state = "tube"
+ origin_tech = "materials=4;engineering=3"
+ amount = 10
+
+
+/obj/item/stack/nanopaste/attack(mob/living/M as mob, mob/user as mob)
+ if (!istype(M) || !istype(user))
+ return 0
+ if (istype(M,/mob/living/silicon/robot)) //Repairing cyborgs
+ var/mob/living/silicon/robot/R = M
+ if (R.getBruteLoss() || R.getFireLoss() )
+ R.adjustBruteLoss(-60)
+ R.adjustFireLoss(-60)
+ R.updatehealth()
+ use(1)
+ user.visible_message("You apply some [src] at [R]'s damaged areas.",\
+ "\The [user] applied some [src] at [R]'s damaged areas.")
+ else
+ user << "All [R]'s systems are nominal."
+
+ if (istype(M,/mob/living/carbon/human)) //Repairing robolimbs
+ var/mob/living/carbon/human/H = M
+ var/datum/organ/external/S = H.get_organ(user.zone_sel.selecting)
+ if (S && (S.status & ORGAN_ROBOT))
+ if(S.get_damage())
+ S.heal_damage(30, 30, robo_repair = 1)
+ H.updatehealth()
+ use(1)
+ user.visible_message("You apply some nanite paste at [user == M ? "your" : "[M]'s"] [S.display_name]",\
+ "\The [user] applies some nanite paste at[user != M ? " \the [M]'s" : " \the"][S.display_name] with \the [src]")
+ else
+ user << "Nothing to fix here."
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index 0fd82e0b38a..f1a4e8b683c 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -1321,6 +1321,14 @@ datum/design/synthetic_flash
build_path = "/obj/item/device/flash/synthetic"
category = "Misc"
+datum/design/nanopaste
+ name = "nanopaste"
+ desc = "A tube of paste containing swarms of repair nanties. Very effective in repairing robotic machinery."
+ id = "nanopaste"
+ req_tech = list("materials" = 4, "engineering" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 7000, "$glass" = 7000)
+ build_path = "/obj/item/stack/nanopaste"
/////////////////////////////////////////
/////////////////Weapons/////////////////
/////////////////////////////////////////
diff --git a/icons/obj/nanopaste.dmi b/icons/obj/nanopaste.dmi
new file mode 100644
index 00000000000..b3c096325f9
Binary files /dev/null and b/icons/obj/nanopaste.dmi differ