openc3-cosmos-tool-docs 6.4.2 → 6.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. checksums.yaml +4 -4
  2. data/tools/staticdocs/404.html +1 -1
  3. data/tools/staticdocs/assets/images/alert_logs-8273c6912804a4a16ce15d59cedf266f32d8c0a4ace2ab25fd8d3f149fb7fed2.png +0 -0
  4. data/tools/staticdocs/assets/images/alert_notifications-c68f0ff77eec9c2bc0d31bd6693fce4055d21722f985e418c05533992be71631.png +0 -0
  5. data/tools/staticdocs/assets/images/checks_rb-4e28c3a8422638404e790054f83f6a61592f5cf848ff6d9bd1ce228813622c9a.png +0 -0
  6. data/tools/staticdocs/assets/images/disk_usage-c91c5ef35de6ec1c4ebcf485c6f74c68daeac6215bf185691ed613b7fd2a95cf.png +0 -0
  7. data/tools/staticdocs/assets/images/environment_variables-72bbb71e6f428ec5efa340eb402289b6d42a84d3c5ce724025d32415242dec09.png +0 -0
  8. data/tools/staticdocs/assets/images/process_metrics-534358ca0a064ed4c24ff1a29f48686d1189e331da23e0f7a6625405278b31eb.png +0 -0
  9. data/tools/staticdocs/assets/images/redis_metrics-646d362a7855604a8b6de1b7064f6949914be7b84ad1ab78822990d56d6ebcc1.png +0 -0
  10. data/tools/staticdocs/assets/images/refresh_interval-8673071593ce24cb2bb0adedfd0e7fc4d612496c393c7f3f52ba37db497f9344.png +0 -0
  11. data/tools/staticdocs/assets/images/right_click-81df09085fe9f75805cf35b5876177789eef0d879b54a734a8395e3817f1959d.png +0 -0
  12. data/tools/staticdocs/assets/images/script_suite-0d1f45f9226d3ac0ed12d5ce91220dccf88402fd8582c4512acc8886a3cf2249.png +0 -0
  13. data/tools/staticdocs/assets/images/system_health_configuration-728cde02f1da6b75e606152e113e288b6d949dd1f4183c4691b0f61c4c47b30e.png +0 -0
  14. data/tools/staticdocs/assets/images/system_overview_gauges-3975fb0011287cf4f98af7dfdf9dba681943913c0b47642645cd19b583e35b74.png +0 -0
  15. data/tools/staticdocs/assets/images/systemhealth-fc26a7d9cda6242569255ecd4264d1c91ad47d85a3805b610d3c946e0d10cfbf.png +0 -0
  16. data/tools/staticdocs/assets/js/019369f3.52424baa.js +1 -0
  17. data/tools/staticdocs/assets/js/058ffc22.82c2873e.js +1 -0
  18. data/tools/staticdocs/assets/js/0686a885.f620e3dc.js +1 -0
  19. data/tools/staticdocs/assets/js/{078dbab0.43788fd9.js → 078dbab0.babf69ab.js} +1 -1
  20. data/tools/staticdocs/assets/js/0f5d161c.bc74590c.js +1 -0
  21. data/tools/staticdocs/assets/js/0ff569c9.14ed0a79.js +1 -0
  22. data/tools/staticdocs/assets/js/103cc3be.b15ac140.js +1 -0
  23. data/tools/staticdocs/assets/js/13196248.e1f20841.js +1 -0
  24. data/tools/staticdocs/assets/js/13c1b4e4.58a03be2.js +1 -0
  25. data/tools/staticdocs/assets/js/1602.a7ddd3dc.js +1 -0
  26. data/tools/staticdocs/assets/js/1e02e6a3.68a73184.js +1 -0
  27. data/tools/staticdocs/assets/js/2047b354.58bf5de8.js +1 -0
  28. data/tools/staticdocs/assets/js/22b3ac48.5ab6a17a.js +1 -0
  29. data/tools/staticdocs/assets/js/2368.4443f5c4.js +4 -0
  30. data/tools/staticdocs/assets/js/2bb7bf90.882f03a1.js +1 -0
  31. data/tools/staticdocs/assets/js/2c15ad40.a56e1a40.js +1 -0
  32. data/tools/staticdocs/assets/js/35398c5c.d6cb2a82.js +1 -0
  33. data/tools/staticdocs/assets/js/3687.062fee32.js +101 -0
  34. data/tools/staticdocs/assets/js/3dd7ef3b.4782cafe.js +1 -0
  35. data/tools/staticdocs/assets/js/40365d27.cdd0a061.js +1 -0
  36. data/tools/staticdocs/assets/js/411898ad.63be48ce.js +1 -0
  37. data/tools/staticdocs/assets/js/42170351.49ebb70c.js +1 -0
  38. data/tools/staticdocs/assets/js/43652efd.deefbd37.js +1 -0
  39. data/tools/staticdocs/assets/js/54d0d530.9fccf082.js +1 -0
  40. data/tools/staticdocs/assets/js/59ed27a4.6a4d4905.js +1 -0
  41. data/tools/staticdocs/assets/js/5b233ba7.169a9701.js +1 -0
  42. data/tools/staticdocs/assets/js/5bc719f6.adbdce65.js +1 -0
  43. data/tools/staticdocs/assets/js/5c6ce5ec.1827793d.js +1 -0
  44. data/tools/staticdocs/assets/js/5fe211ef.866de8e9.js +1 -0
  45. data/tools/staticdocs/assets/js/6831b732.d0e1b5a6.js +1 -0
  46. data/tools/staticdocs/assets/js/696b4199.adf3731a.js +1 -0
  47. data/tools/staticdocs/assets/js/6b210247.bb5dedd5.js +1 -0
  48. data/tools/staticdocs/assets/js/6b65133b.c431a22a.js +1 -0
  49. data/tools/staticdocs/assets/js/6f92e431.13b5aeef.js +1 -0
  50. data/tools/staticdocs/assets/js/72c6d8a8.8f66ae6e.js +1 -0
  51. data/tools/staticdocs/assets/js/75e64983.31d1e579.js +1 -0
  52. data/tools/staticdocs/assets/js/7719.d199daa3.js +1 -0
  53. data/tools/staticdocs/assets/js/80c97f38.4f6a5637.js +1 -0
  54. data/tools/staticdocs/assets/js/{867640d5.32ca371f.js → 867640d5.9dd71bf3.js} +1 -1
  55. data/tools/staticdocs/assets/js/89e76475.a0353bb2.js +1 -0
  56. data/tools/staticdocs/assets/js/8b939c74.5fd8e3e8.js +1 -0
  57. data/tools/staticdocs/assets/js/8f7843ee.b3358f6f.js +1 -0
  58. data/tools/staticdocs/assets/js/9424f0b3.b8d6d2bf.js +1 -0
  59. data/tools/staticdocs/assets/js/964eb012.cb76dd8a.js +1 -0
  60. data/tools/staticdocs/assets/js/97535711.c3a1a5a1.js +1 -0
  61. data/tools/staticdocs/assets/js/99581c43.c9f8e384.js +1 -0
  62. data/tools/staticdocs/assets/js/9fb6059a.91edfcba.js +1 -0
  63. data/tools/staticdocs/assets/js/a677c089.d33ab1ca.js +1 -0
  64. data/tools/staticdocs/assets/js/a9987364.530c9592.js +1 -0
  65. data/tools/staticdocs/assets/js/a9b2dc27.50f54e80.js +1 -0
  66. data/tools/staticdocs/assets/js/{aa6b6c1b.bc122746.js → aa6b6c1b.dc1c4a62.js} +1 -1
  67. data/tools/staticdocs/assets/js/{b062d239.4e8142cb.js → b062d239.ff2df9fd.js} +1 -1
  68. data/tools/staticdocs/assets/js/b38a6d74.62bc94a3.js +1 -0
  69. data/tools/staticdocs/assets/js/b4596165.a2357781.js +1 -0
  70. data/tools/staticdocs/assets/js/b6d70f94.22ca3e8a.js +1 -0
  71. data/tools/staticdocs/assets/js/b9f60ba6.677e8e46.js +1 -0
  72. data/tools/staticdocs/assets/js/{bd0034eb.a201a4a7.js → bd0034eb.09d6bbbc.js} +1 -1
  73. data/tools/staticdocs/assets/js/c24eae19.3db158fe.js +1 -0
  74. data/tools/staticdocs/assets/js/cb8c3f08.0de82997.js +1 -0
  75. data/tools/staticdocs/assets/js/cd879be4.d650ab29.js +1 -0
  76. data/tools/staticdocs/assets/js/d1b923aa.240ccf18.js +1 -0
  77. data/tools/staticdocs/assets/js/d1bfc316.5c7b9c2f.js +1 -0
  78. data/tools/staticdocs/assets/js/{d24bf9b6.e348c06d.js → d24bf9b6.ea1e95ab.js} +1 -1
  79. data/tools/staticdocs/assets/js/d57a4b5d.82790d9f.js +1 -0
  80. data/tools/staticdocs/assets/js/d5d77c37.a1299467.js +1 -0
  81. data/tools/staticdocs/assets/js/d66bf9c0.8018f0a0.js +1 -0
  82. data/tools/staticdocs/assets/js/d8ca4191.ca5f5dde.js +1 -0
  83. data/tools/staticdocs/assets/js/d9b92eba.41086b81.js +1 -0
  84. data/tools/staticdocs/assets/js/db8fa1d0.5107d903.js +1 -0
  85. data/tools/staticdocs/assets/js/dbe31111.8f1677f3.js +1 -0
  86. data/tools/staticdocs/assets/js/dc5f7beb.dfbe012c.js +1 -0
  87. data/tools/staticdocs/assets/js/e501b0d1.512e0a0b.js +1 -0
  88. data/tools/staticdocs/assets/js/{f15615f1.a4d98d69.js → f15615f1.d668576a.js} +1 -1
  89. data/tools/staticdocs/assets/js/f75a5f33.d3a97a44.js +1 -0
  90. data/tools/staticdocs/assets/js/main.8c741ee1.js +38 -0
  91. data/tools/staticdocs/assets/js/runtime~main.7674b06d.js +1 -0
  92. data/tools/staticdocs/docs/configuration/accessors.html +2 -2
  93. data/tools/staticdocs/docs/configuration/command.html +2 -2
  94. data/tools/staticdocs/docs/configuration/conversions.html +10 -8
  95. data/tools/staticdocs/docs/configuration/format.html +2 -2
  96. data/tools/staticdocs/docs/configuration/interfaces.html +2 -2
  97. data/tools/staticdocs/docs/configuration/limits-response.html +19 -0
  98. data/tools/staticdocs/docs/configuration/plugins.html +9 -3
  99. data/tools/staticdocs/docs/configuration/processors.html +42 -0
  100. data/tools/staticdocs/docs/configuration/protocols.html +2 -2
  101. data/tools/staticdocs/docs/configuration/ssl-tls.html +2 -2
  102. data/tools/staticdocs/docs/configuration/table.html +3 -3
  103. data/tools/staticdocs/docs/configuration/target.html +2 -2
  104. data/tools/staticdocs/docs/configuration/telemetry-screens.html +9 -9
  105. data/tools/staticdocs/docs/configuration/telemetry.html +4 -2
  106. data/tools/staticdocs/docs/configuration.html +2 -2
  107. data/tools/staticdocs/docs/development/curl.html +1 -1
  108. data/tools/staticdocs/docs/development/developing.html +1 -1
  109. data/tools/staticdocs/docs/development/json-api.html +1 -1
  110. data/tools/staticdocs/docs/development/log-structure.html +1 -1
  111. data/tools/staticdocs/docs/development/roadmap.html +1 -1
  112. data/tools/staticdocs/docs/development/streaming-api.html +1 -1
  113. data/tools/staticdocs/docs/development/testing.html +1 -1
  114. data/tools/staticdocs/docs/development.html +1 -1
  115. data/tools/staticdocs/docs/getting-started/cli.html +16 -5
  116. data/tools/staticdocs/docs/getting-started/generators.html +19 -21
  117. data/tools/staticdocs/docs/getting-started/gettingstarted.html +1 -1
  118. data/tools/staticdocs/docs/getting-started/installation.html +1 -1
  119. data/tools/staticdocs/docs/getting-started/key-concepts.html +1 -1
  120. data/tools/staticdocs/docs/getting-started/podman.html +5 -2
  121. data/tools/staticdocs/docs/getting-started/requirements.html +1 -1
  122. data/tools/staticdocs/docs/getting-started/upgrading.html +2 -2
  123. data/tools/staticdocs/docs/getting-started.html +1 -1
  124. data/tools/staticdocs/docs/guides/bridges.html +1 -1
  125. data/tools/staticdocs/docs/guides/cfs.html +1 -1
  126. data/tools/staticdocs/docs/guides/custom-widgets.html +1 -1
  127. data/tools/staticdocs/docs/guides/dynamic-packets.html +3 -1
  128. data/tools/staticdocs/docs/guides/exposing-microservices.html +1 -1
  129. data/tools/staticdocs/docs/guides/little-endian-bitfields.html +1 -1
  130. data/tools/staticdocs/docs/guides/local-mode.html +1 -1
  131. data/tools/staticdocs/docs/guides/logging.html +1 -1
  132. data/tools/staticdocs/docs/guides/monitoring.html +1 -1
  133. data/tools/staticdocs/docs/guides/performance.html +1 -1
  134. data/tools/staticdocs/docs/guides/raspberrypi.html +1 -1
  135. data/tools/staticdocs/docs/guides/reference-architectures.html +1 -1
  136. data/tools/staticdocs/docs/guides/script-writing.html +1 -1
  137. data/tools/staticdocs/docs/guides/scripting-api.html +2 -2
  138. data/tools/staticdocs/docs/guides.html +1 -1
  139. data/tools/staticdocs/docs/meta/contributing.html +1 -1
  140. data/tools/staticdocs/docs/meta/licenses.html +1 -1
  141. data/tools/staticdocs/docs/meta/philosophy.html +1 -1
  142. data/tools/staticdocs/docs/meta/xtce.html +1 -1
  143. data/tools/staticdocs/docs/meta.html +1 -1
  144. data/tools/staticdocs/docs/privacy.html +1 -1
  145. data/tools/staticdocs/docs/tools/admin.html +2 -2
  146. data/tools/staticdocs/docs/tools/autonomic.html +2 -2
  147. data/tools/staticdocs/docs/tools/bucket-explorer.html +2 -2
  148. data/tools/staticdocs/docs/tools/calendar.html +2 -2
  149. data/tools/staticdocs/docs/tools/cmd-sender.html +2 -2
  150. data/tools/staticdocs/docs/tools/cmd-tlm-server.html +2 -2
  151. data/tools/staticdocs/docs/tools/command_history.html +2 -2
  152. data/tools/staticdocs/docs/tools/data-extractor.html +2 -2
  153. data/tools/staticdocs/docs/tools/data-viewer.html +2 -2
  154. data/tools/staticdocs/docs/tools/handbooks.html +2 -2
  155. data/tools/staticdocs/docs/tools/limits-monitor.html +2 -2
  156. data/tools/staticdocs/docs/tools/packet-viewer.html +2 -2
  157. data/tools/staticdocs/docs/tools/script-runner.html +12 -6
  158. data/tools/staticdocs/docs/tools/systemhealth.html +42 -0
  159. data/tools/staticdocs/docs/tools/table-manager.html +3 -3
  160. data/tools/staticdocs/docs/tools/tlm-grapher.html +2 -2
  161. data/tools/staticdocs/docs/tools/tlm-viewer.html +2 -2
  162. data/tools/staticdocs/docs/tools.html +2 -2
  163. data/tools/staticdocs/docs.html +1 -1
  164. data/tools/staticdocs/img/script_runner/checks_rb.png +0 -0
  165. data/tools/staticdocs/img/script_runner/environment_variables.png +0 -0
  166. data/tools/staticdocs/img/script_runner/right_click.png +0 -0
  167. data/tools/staticdocs/img/script_runner/script_suite.png +0 -0
  168. data/tools/staticdocs/img/systemhealth/alert_logs.png +0 -0
  169. data/tools/staticdocs/img/systemhealth/alert_notifications.png +0 -0
  170. data/tools/staticdocs/img/systemhealth/disk_usage.png +0 -0
  171. data/tools/staticdocs/img/systemhealth/process_metrics.png +0 -0
  172. data/tools/staticdocs/img/systemhealth/redis_metrics.png +0 -0
  173. data/tools/staticdocs/img/systemhealth/refresh_interval.png +0 -0
  174. data/tools/staticdocs/img/systemhealth/system_health_configuration.png +0 -0
  175. data/tools/staticdocs/img/systemhealth/system_overview_gauges.png +0 -0
  176. data/tools/staticdocs/img/systemhealth/systemhealth.png +0 -0
  177. data/tools/staticdocs/index.html +1 -1
  178. data/tools/staticdocs/lunr-index-1749788530521.json +1 -0
  179. data/tools/staticdocs/lunr-index.json +1 -1
  180. data/tools/staticdocs/markdown-page.html +1 -1
  181. data/tools/staticdocs/search-doc-1749788530521.json +1 -0
  182. data/tools/staticdocs/search-doc.json +1 -1
  183. data/tools/staticdocs/sitemap.xml +1 -1
  184. metadata +105 -79
  185. data/tools/staticdocs/assets/images/checks_rb-89f400098ff47774008ea420860c665c15ebf06819c3ee7050bed301ea0a9f46.png +0 -0
  186. data/tools/staticdocs/assets/images/right_click-371e3683026c0bb2b27187277b4e99727c6b52965e0190a5f81335248f40ef9b.png +0 -0
  187. data/tools/staticdocs/assets/images/script_suite-16647c3b3de01a8749f1b5c4ab2f8b452630df8c0470e5be38652acacfc98b5d.png +0 -0
  188. data/tools/staticdocs/assets/js/019369f3.5dd06a57.js +0 -1
  189. data/tools/staticdocs/assets/js/058ffc22.ed3ac5fa.js +0 -1
  190. data/tools/staticdocs/assets/js/0686a885.ef66a55c.js +0 -1
  191. data/tools/staticdocs/assets/js/0f5d161c.7aacaf90.js +0 -1
  192. data/tools/staticdocs/assets/js/0ff569c9.7aa50138.js +0 -1
  193. data/tools/staticdocs/assets/js/103cc3be.ff33b528.js +0 -1
  194. data/tools/staticdocs/assets/js/13196248.14de6ce1.js +0 -1
  195. data/tools/staticdocs/assets/js/13c1b4e4.2dafa283.js +0 -1
  196. data/tools/staticdocs/assets/js/1602.502ef9b1.js +0 -1
  197. data/tools/staticdocs/assets/js/1e02e6a3.d99a363c.js +0 -1
  198. data/tools/staticdocs/assets/js/2047b354.d91543a5.js +0 -1
  199. data/tools/staticdocs/assets/js/22b3ac48.5eb8d876.js +0 -1
  200. data/tools/staticdocs/assets/js/2368.fd1bb46a.js +0 -4
  201. data/tools/staticdocs/assets/js/2bb7bf90.1eee5bcb.js +0 -1
  202. data/tools/staticdocs/assets/js/2c15ad40.7f30b517.js +0 -1
  203. data/tools/staticdocs/assets/js/35398c5c.4f30c5da.js +0 -1
  204. data/tools/staticdocs/assets/js/3687.8bc61ef3.js +0 -101
  205. data/tools/staticdocs/assets/js/3dd7ef3b.dfbe9bb7.js +0 -1
  206. data/tools/staticdocs/assets/js/40365d27.42b05c12.js +0 -1
  207. data/tools/staticdocs/assets/js/411898ad.e55efd5d.js +0 -1
  208. data/tools/staticdocs/assets/js/42170351.2de491d4.js +0 -1
  209. data/tools/staticdocs/assets/js/43652efd.f7c95691.js +0 -1
  210. data/tools/staticdocs/assets/js/54d0d530.7cc2c5cc.js +0 -1
  211. data/tools/staticdocs/assets/js/5b233ba7.29533a03.js +0 -1
  212. data/tools/staticdocs/assets/js/5bc719f6.62d9a8b8.js +0 -1
  213. data/tools/staticdocs/assets/js/5c6ce5ec.40e0caf8.js +0 -1
  214. data/tools/staticdocs/assets/js/5fe211ef.2d29f3fb.js +0 -1
  215. data/tools/staticdocs/assets/js/6831b732.ec0009ac.js +0 -1
  216. data/tools/staticdocs/assets/js/696b4199.1c205c60.js +0 -1
  217. data/tools/staticdocs/assets/js/6b210247.32ded6d5.js +0 -1
  218. data/tools/staticdocs/assets/js/6b65133b.b2a62736.js +0 -1
  219. data/tools/staticdocs/assets/js/6f92e431.7bd2a1f1.js +0 -1
  220. data/tools/staticdocs/assets/js/72c6d8a8.21321ecc.js +0 -1
  221. data/tools/staticdocs/assets/js/75e64983.e0eb7741.js +0 -1
  222. data/tools/staticdocs/assets/js/7719.0d312792.js +0 -1
  223. data/tools/staticdocs/assets/js/80c97f38.a0dfbdf7.js +0 -1
  224. data/tools/staticdocs/assets/js/89e76475.20b3a636.js +0 -1
  225. data/tools/staticdocs/assets/js/8f7843ee.6d7c9cd4.js +0 -1
  226. data/tools/staticdocs/assets/js/9424f0b3.75b12400.js +0 -1
  227. data/tools/staticdocs/assets/js/964eb012.0eee94ba.js +0 -1
  228. data/tools/staticdocs/assets/js/97535711.630cee4d.js +0 -1
  229. data/tools/staticdocs/assets/js/99581c43.73b5cd90.js +0 -1
  230. data/tools/staticdocs/assets/js/9fb6059a.715fc441.js +0 -1
  231. data/tools/staticdocs/assets/js/a677c089.76d13f14.js +0 -1
  232. data/tools/staticdocs/assets/js/a9987364.3b3e7379.js +0 -1
  233. data/tools/staticdocs/assets/js/a9b2dc27.da1da6f1.js +0 -1
  234. data/tools/staticdocs/assets/js/b38a6d74.4a10f506.js +0 -1
  235. data/tools/staticdocs/assets/js/b4596165.08749f15.js +0 -1
  236. data/tools/staticdocs/assets/js/b6d70f94.776bc00f.js +0 -1
  237. data/tools/staticdocs/assets/js/b9f60ba6.ce400445.js +0 -1
  238. data/tools/staticdocs/assets/js/c24eae19.77326c08.js +0 -1
  239. data/tools/staticdocs/assets/js/cb8c3f08.73cefada.js +0 -1
  240. data/tools/staticdocs/assets/js/cd879be4.dc2adfcc.js +0 -1
  241. data/tools/staticdocs/assets/js/d1b923aa.57f5e162.js +0 -1
  242. data/tools/staticdocs/assets/js/d1bfc316.73bb876f.js +0 -1
  243. data/tools/staticdocs/assets/js/d57a4b5d.885590b1.js +0 -1
  244. data/tools/staticdocs/assets/js/d5d77c37.1143a9d4.js +0 -1
  245. data/tools/staticdocs/assets/js/d66bf9c0.0ffb9759.js +0 -1
  246. data/tools/staticdocs/assets/js/d8ca4191.fe602968.js +0 -1
  247. data/tools/staticdocs/assets/js/d9b92eba.a115a366.js +0 -1
  248. data/tools/staticdocs/assets/js/db8fa1d0.1aefa4e7.js +0 -1
  249. data/tools/staticdocs/assets/js/dbe31111.9c957b0c.js +0 -1
  250. data/tools/staticdocs/assets/js/dc5f7beb.ddc630ca.js +0 -1
  251. data/tools/staticdocs/assets/js/e501b0d1.f9c2d1fc.js +0 -1
  252. data/tools/staticdocs/assets/js/main.ba1fa268.js +0 -38
  253. data/tools/staticdocs/assets/js/runtime~main.ca894d1e.js +0 -1
  254. data/tools/staticdocs/lunr-index-1748640055686.json +0 -1
  255. data/tools/staticdocs/search-doc-1748640055686.json +0 -1
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdocs_openc3_com=self.webpackChunkdocs_openc3_com||[]).push([["9148"],{2840:function(e,t,o){o.d(t,{Z:()=>a,a:()=>r});var n=o(2784);let s={},i=n.createContext(s);function r(e){let t=n.useContext(i);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),n.createElement(i.Provider,{value:t},e.children)}},9011:function(e,t,o){o.r(t),o.d(t,{frontMatter:()=>r,default:()=>d,contentTitle:()=>a,assets:()=>l,toc:()=>c,metadata:()=>n});var n=JSON.parse('{"id":"meta/philosophy","title":"Philosophy","description":"COSMOS goals and philosophy","source":"@site/docs/meta/philosophy.md","sourceDirName":"meta","slug":"/meta/philosophy","permalink":"/tools/staticdocs/docs/meta/philosophy","draft":false,"unlisted":false,"editUrl":"https://github.com/OpenC3/cosmos/tree/main/docs.openc3.com/docs/meta/philosophy.md","tags":[],"version":"current","frontMatter":{"title":"Philosophy","description":"COSMOS goals and philosophy","sidebar_custom_props":{"myEmoji":"\uD83E\uDD14"}},"sidebar":"defaultSidebar","previous":{"title":"Licenses","permalink":"/tools/staticdocs/docs/meta/licenses"},"next":{"title":"XTCE Support","permalink":"/tools/staticdocs/docs/meta/xtce"}}'),s=o(2322),i=o(2840);let r={title:"Philosophy",description:"COSMOS goals and philosophy",sidebar_custom_props:{myEmoji:"\uD83E\uDD14"}},a=void 0,l={},c=[];function h(e){let t={li:"li",ol:"ol",p:"p",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.p,{children:"COSMOS is a C3 (Command, Control and Communication) system with the following primary goals:"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Interface with Anything"}),"\n",(0,s.jsx)(t.p,{children:"COSMOS should be able to communicate with anything that provides a computer-to-computer interface, regardless of what the interface is. This means that COSMOS adapts to what other systems are doing and evolves over time. It does not publish an API that hardware must adhere to if it wants to communicate with COSMOS."}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Log Everything"}),"\n",(0,s.jsx)(t.p,{children:"All data that flows into and out of COSMOS is logged. This provides history as well as attribution for what happened when and why. Keeping accurate logs is an essential and critical aspect of COSMOS."}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Open Architecture and Source"}),"\n",(0,s.jsx)(t.p,{children:"Nothing about how COSMOS is implemented is meant to be secret or hidden, even in Enterprise. In all implementations, the source code for everything in COSMOS is provided and available for users to inspect or modify as needed. Never worry about an unsolvable problem or having to accept some detail that you don't like. This also opens the world to integrate anything they need into COSMOS without restriction or limitation."}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Be Modular"}),"\n",(0,s.jsx)(t.p,{children:"There are infinite number of things for COSMOS to connect to, but it is impossible to ship COSMOS with all the code it would need to talk to everything. For this reason, COSMOS is designed to be modular in all the places that matter."}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Use Configuration when Possible, and Code When Logic Is Needed"}),"\n",(0,s.jsx)(t.p,{children:"Configuration is great for making COSMOS as usable as possible by non-software engineers. It also shows where common patterns exist. However, configuration is horrible when logic or custom math are needed."}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Empower Developers"}),"\n",(0,s.jsx)(t.p,{children:"COSMOS is meant to be easy enough to be used by everyone, not just C2 software experts."}),"\n"]}),"\n"]})]})}function d(e={}){let{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdocs_openc3_com=self.webpackChunkdocs_openc3_com||[]).push([["4737"],{2840:function(e,n,t){t.d(n,{Z:()=>c,a:()=>r});var o=t(2784);let s={},i=o.createContext(s);function r(e){let n=o.useContext(i);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}},3628:function(e,n,t){t.r(n),t.d(n,{frontMatter:()=>r,default:()=>h,contentTitle:()=>c,assets:()=>l,toc:()=>a,metadata:()=>o});var o=JSON.parse('{"id":"getting-started/installation","title":"Installation","description":"Installing OpenC3 COSMOS","source":"@site/docs/getting-started/installation.md","sourceDirName":"getting-started","slug":"/getting-started/installation","permalink":"/tools/staticdocs/docs/getting-started/installation","draft":false,"unlisted":false,"editUrl":"https://github.com/OpenC3/cosmos/tree/main/docs.openc3.com/docs/getting-started/installation.md","tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"sidebar_position":2,"title":"Installation","description":"Installing OpenC3 COSMOS","sidebar_custom_props":{"myEmoji":"\uD83D\uDCBE"}},"sidebar":"defaultSidebar","previous":{"title":"Key Concepts","permalink":"/tools/staticdocs/docs/getting-started/key-concepts"},"next":{"title":"Getting Started","permalink":"/tools/staticdocs/docs/getting-started/gettingstarted"}}'),s=t(2322),i=t(2840);let r={sidebar_position:2,title:"Installation",description:"Installing OpenC3 COSMOS",sidebar_custom_props:{myEmoji:"\uD83D\uDCBE"}},c=void 0,l={},a=[{value:"Installing OpenC3 COSMOS",id:"installing-openc3-cosmos",level:2},{value:"Installing OpenC3 COSMOS on Host Machines",id:"installing-openc3-cosmos-on-host-machines",level:2},{value:"PREREQUISITES",id:"prerequisites",level:3},{value:"CLONE PROJECT",id:"clone-project",level:3},{value:"CERTIFICATES",id:"certificates",level:3},{value:"RUN",id:"run",level:3},{value:"CONNECT",id:"connect",level:3},{value:"NEXT STEPS",id:"next-steps",level:3},{value:"Feedback",id:"feedback",level:3}];function d(e){let n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"installing-openc3-cosmos",children:"Installing OpenC3 COSMOS"}),"\n",(0,s.jsx)(n.p,{children:"The following sections describe how to get OpenC3 COSMOS installed on various operating systems. This document should help you setup you host machine to allow you to have a running version of COSMOS in no time."}),"\n",(0,s.jsx)(n.h2,{id:"installing-openc3-cosmos-on-host-machines",children:"Installing OpenC3 COSMOS on Host Machines"}),"\n",(0,s.jsx)(n.h3,{id:"prerequisites",children:"PREREQUISITES"}),"\n",(0,s.jsxs)(n.p,{children:["If you're on Linux (recommended for production), we recommend installing Docker using the ",(0,s.jsx)(n.a,{href:"https://docs.docker.com/engine/install/",children:"Install Docker Engine"})," instructions (do not use Docker Desktop on Linux). Note: Red Hat users should read the ",(0,s.jsx)(n.a,{href:"podman",children:"Podman"})," documentation. If you're on Windows or Mac, install ",(0,s.jsx)(n.a,{href:"https://docs.docker.com/get-docker/",children:"Docker Desktop"}),". All platforms also need to install ",(0,s.jsx)(n.a,{href:"https://docs.docker.com/compose/install/",children:"Docker Compose"}),"."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Minimum Resources allocated to Docker: 8GB RAM, 1 CPU, 80GB Disk"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Recommended Resources allocated to Docker: 16GB RAM, 2+ CPUs, 100GB Disk"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Docker on Windows with WSL2:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["WSL2 consumes 50% of total memory on Windows or 8GB, whichever is less. However, on Windows builds before 20175 (use ",(0,s.jsx)(n.code,{children:"winver"})," to check) it consumes 80% of your total memory. This can have a negative effect on Windows performance!"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["On Windows builds < 20175 or for more fine grained control, create C:\\Users\\<username>\\",(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/windows/wsl/wsl-config",children:".wslconfig"}),". Suggested contents on a 32GB machine:"]}),"\n",(0,s.jsx)(n.p,{children:"[wsl2]\nmemory=16GB\nswap=0"}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{title:"Important: Modify Docker Connection Timeouts",type:"warning",children:(0,s.jsxs)(n.p,{children:['Docker by default will break idle (no data) connections after a period of 5 minutes. This "feature" will eventually cause you problems if you don\'t adjust the Docker settings. This may manifest as idle connections dropping or simply failing to resume after data should have started flowing again. Find the file at C:\\Users\\username\\AppData\\Roaming\\Docker\\settings.json on Windows or ~/Library/Group Containers/group.com.docker/settings.json on MacOS. Modify the value ',(0,s.jsx)(n.code,{children:"vpnKitMaxPortIdleTime"})," to change the timeout (recommend setting to 0). ",(0,s.jsx)(n.strong,{children:"Note:"})," 0 means no timeout (idle connections not dropped)"]})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Note:"})," As of December 2021 the COSMOS Docker containers are based on the Alpine Docker image."]}),"\n",(0,s.jsx)(n.h3,{id:"clone-project",children:"CLONE PROJECT"}),"\n",(0,s.jsxs)(n.p,{children:["We recommend using the COSMOS ",(0,s.jsx)(n.a,{href:"key-concepts#projects",children:"project template"})," to get started."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/OpenC3/cosmos-project.git\ngit clone https://github.com/OpenC3/cosmos-enterprise-project.git\n"})}),"\n",(0,s.jsxs)(n.admonition,{title:"Offline Installation",type:"info",children:[(0,s.jsx)("p",{style:{"margin-bottom":"20px"},children:"If you need to install in an offline environment you should first see if you're able to directly use the COSMOS containers. If so you can first save the containers:"}),(0,s.jsx)("p",{style:{"margin-bottom":"20px"},children:(0,s.jsx)("code",{children:"./openc3.sh util save docker.io openc3inc 5.16.2"})}),(0,s.jsx)("p",{style:{"margin-bottom":"20px"},children:"This will download the COSMOS containers from the docker.io repo using the openc3inc namespace and version 5.16.2. The repo, namespace and version are all configurable. Tar files are created in the 'tmp' directory which you can transfer to your offline environment. Transfer the tar files to your offline environment's project 'tmp' dir and import them with:"}),(0,s.jsx)("p",{style:{"margin-bottom":"20px"},children:(0,s.jsx)("code",{children:"./openc3.sh util load 5.16.2"})}),(0,s.jsx)("p",{style:{"margin-bottom":"20px"},children:"Note the version specified in save needs to match the version in load."})]}),"\n",(0,s.jsx)(n.h3,{id:"certificates",children:"CERTIFICATES"}),"\n",(0,s.jsxs)(n.p,{children:["The COSMOS containers are designed to work and be built in the presence of an SSL Decryption device. To support this a cacert.pem file can be placed at the base of the COSMOS 5 project that includes any certificates needed by your organization. ",(0,s.jsx)(n.strong,{children:"Note"}),": If you set the path to the ssl file in the ",(0,s.jsx)(n.code,{children:"SSL_CERT_FILE"})," environment variables the openc3 setup script will copy it and place it for the docker container to load."]}),"\n",(0,s.jsxs)(n.admonition,{title:"SSL Issues",type:"warning",children:[(0,s.jsx)(n.p,{children:'Increasingly organizations are using some sort of SSL decryptor device which can cause curl and other command line tools like git to have SSL certificate problems. If installation fails with messages that involve "certificate", "SSL", "self-signed", or "secure" this is the problem. IT typically sets up browsers to work correctly but not command line applications. Note that the file extension might not be .pem, it could be .pem, crt, .ca-bundle, .cer, .p7b, .p7s, or potentially something else.'}),(0,s.jsx)(n.p,{children:"The workaround is to get a proper local certificate file from your IT department that can be used by tools like curl (for example C:\\Shared\\Ball.pem). Doesn't matter just somewhere with no spaces."}),(0,s.jsx)(n.p,{children:"Then set the following environment variables to that path (ie. C:\\Shared\\Ball.pem)"}),(0,s.jsxs)(n.p,{children:["SSL_CERT_FILE",(0,s.jsx)("br",{}),"\nCURL_CA_BUNDLE",(0,s.jsx)("br",{}),"\nREQUESTS_CA_BUNDLE",(0,s.jsx)("br",{})]}),(0,s.jsxs)(n.p,{children:["Here are some directions on environment variables in Windows: ",(0,s.jsx)(n.a,{href:"https://www.computerhope.com/issues/ch000549.htm",children:"Windows Environment Variables"})]}),(0,s.jsx)(n.p,{children:"You will need to create new ones with the names above and set their value to the full path to the certificate file."})]}),"\n",(0,s.jsx)(n.h3,{id:"run",children:"RUN"}),"\n",(0,s.jsxs)(n.p,{children:['Add the locally cloned project directory to your path so you can directly use the batch file or shell script. In Windows this would be adding "C:\\openc3-project" to the PATH. In Linux you would edit your shell\'s rc file and export the PATH. For example, on a Mac add the following to ~/.zshrc: ',(0,s.jsx)(n.code,{children:"export PATH=~/cosmos-project:$PATH"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Run ",(0,s.jsx)(n.code,{children:"openc3.bat run"})," (Windows), or ",(0,s.jsx)(n.code,{children:"./openc3.sh run"})," (linux/Mac)."]}),"\n",(0,s.jsx)(n.p,{children:"Note, you can edit the .env file and change OPENC3_TAG to a specific release (e.g. 5.0.9) rather than 'latest'."}),"\n",(0,s.jsxs)(n.p,{children:["If you see an error indicating docker daemon is not running ensure Docker and Docker compose is installed and running. If it errors please try to run ",(0,s.jsx)(n.code,{children:"docker --version"})," or ",(0,s.jsx)(n.code,{children:"docker-compose --version"})," and try to run the start command again. If the error continues please include the version in your issue if you choose to create one."]}),"\n",(0,s.jsxs)(n.p,{children:["Running ",(0,s.jsx)(n.code,{children:"docker ps"})," can help show the running containers."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"openc3.*"})," takes multiple arguments. Run with no arguments for help. An example run of openc3.sh with no arguments will show a usage guide."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./openc3.sh\nUsage: ./openc3.sh [cli, cliroot, start, stop, cleanup, run, util]\n* cli: run a cli command as the default user ('cli help' for more info)\n* cliroot: run a cli command as the root user ('cli help' for more info)\n* start: start the docker-compose openc3\n* stop: stop the running dockers for openc3\n* cleanup: cleanup network and volumes for openc3\n* run: run the prebuilt containers for openc3\n* util: various helper commands\n"})}),"\n",(0,s.jsx)(n.h3,{id:"connect",children:"CONNECT"}),"\n",(0,s.jsxs)(n.p,{children:["Connect a web browser to ",(0,s.jsx)(n.a,{href:"http://localhost:2900",children:"http://localhost:2900"}),". Set the password to whatever you want."]}),"\n",(0,s.jsx)(n.h3,{id:"next-steps",children:"NEXT STEPS"}),"\n",(0,s.jsxs)(n.p,{children:["Continue to ",(0,s.jsx)(n.a,{href:"gettingstarted",children:"Getting Started"}),"."]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h3,{id:"feedback",children:"Feedback"}),"\n",(0,s.jsx)(n.admonition,{title:"Find a problem in the documentation?",type:"note",children:(0,s.jsxs)(n.p,{children:["Please ",(0,s.jsx)(n.a,{href:"https://github.com/OpenC3/cosmos/issues/new/choose",children:"create an issue"})," on\nGitHub describing what we can do to make it better."]})})]})}function h(e={}){let{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdocs_openc3_com=self.webpackChunkdocs_openc3_com||[]).push([["9564"],{1844:function(e,t,s){s.d(t,{Z:()=>i});let i=s.p+"assets/images/microservices-805cc7d137958ac8183579cdb9a9845e7aef79db19723f0773f4ea4d957b48a1.png"},1932:function(e,t,s){s.d(t,{Z:()=>i});let i=s.p+"assets/images/interfaces-fa10646a27eb9045b70c2c485498a864bed1896ff171b7f31f8698288e08ae73.png"},1945:function(e,t,s){s.r(t),s.d(t,{frontMatter:()=>l,default:()=>h,contentTitle:()=>c,assets:()=>o,toc:()=>r,metadata:()=>i});var i=JSON.parse('{"id":"tools/admin","title":"Admin","description":"Administer COSMOS, install plugins, change settings","source":"@site/docs/tools/admin.md","sourceDirName":"tools","slug":"/tools/admin","permalink":"/tools/staticdocs/docs/tools/admin","draft":false,"unlisted":false,"editUrl":"https://github.com/OpenC3/cosmos/tree/main/docs.openc3.com/docs/tools/admin.md","tags":[],"version":"current","frontMatter":{"title":"Admin","description":"Administer COSMOS, install plugins, change settings","sidebar_custom_props":{"myEmoji":"\uD83D\uDEE0\uFE0F"}},"sidebar":"defaultSidebar","previous":{"title":"Tools","permalink":"/tools/staticdocs/docs/tools"},"next":{"title":"Autonomic (Enterprise)","permalink":"/tools/staticdocs/docs/tools/autonomic"}}'),n=s(2322),a=s(2840);let l={title:"Admin",description:"Administer COSMOS, install plugins, change settings",sidebar_custom_props:{myEmoji:"\uD83D\uDEE0\uFE0F"}},c=void 0,o={},r=[{value:"Introduction",id:"introduction",level:2},{value:"Plugins",id:"plugins",level:3},{value:"Targets",id:"targets",level:3},{value:"Interfaces",id:"interfaces",level:3},{value:"Routers",id:"routers",level:3},{value:"Microservices",id:"microservices",level:3},{value:"Packages",id:"packages",level:3},{value:"Tools",id:"tools",level:3},{value:"Redis",id:"redis",level:3},{value:"Secrets",id:"secrets",level:3},{value:"Settings",id:"settings",level:3}];function d(e){let t={a:"a",h2:"h2",h3:"h3",img:"img",p:"p",...(0,a.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h2,{id:"introduction",children:"Introduction"}),"\n",(0,n.jsx)(t.p,{children:"Admin has it's own dedicated button at the top of the tools list. It is responsible for administering the COSMOS system including installing new plugins, viewing configuration, storing secrets and changing settings."}),"\n",(0,n.jsx)(t.h3,{id:"plugins",children:"Plugins"}),"\n",(0,n.jsx)(t.p,{children:"The Plugins tab is where you install new plugins into the COSMOS system. Plugins can dynamically add targets, microservices, interfaces, protocols, Telemetry Viewer widgets, and entire tools into the COSMOS runtime. The following screenshot shows the Plugins tab when only the COSMOS Demo is installed:"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Plugins",src:s(8880).Z+"",width:"2200",height:"874"})}),"\n",(0,n.jsx)(t.p,{children:"The plugin gem name is listed along with all the targets it contains. You can Download, Edit, Upgrade, or Delete (uninstall) the plugin using the buttons to the right. If a plugin's target has been modified, the target name turns into a link which when clicked will download the changed files. New plugins are installed by clicking the top field."}),"\n",(0,n.jsx)(t.h3,{id:"targets",children:"Targets"}),"\n",(0,n.jsx)(t.p,{children:"The Targets tab shows all the targets installed and what plugin they came from. Clicking the eyeball shows the raw JSON that makes up the target configuration."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Targets",src:s(2241).Z+"",width:"2200",height:"964"})}),"\n",(0,n.jsx)(t.h3,{id:"interfaces",children:"Interfaces"}),"\n",(0,n.jsx)(t.p,{children:"The Interfaces tab shows all the interfaces installed. Clicking the eyeball shows the raw JSON that makes up the interface configuration."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Interfaces",src:s(1932).Z+"",width:"2200",height:"766"})}),"\n",(0,n.jsx)(t.h3,{id:"routers",children:"Routers"}),"\n",(0,n.jsx)(t.p,{children:"The Routers tab shows all the routers installed. Clicking the eyeball shows the raw JSON that makes up the router configuration."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Routers",src:s(3238).Z+"",width:"2200",height:"480"})}),"\n",(0,n.jsx)(t.h3,{id:"microservices",children:"Microservices"}),"\n",(0,n.jsx)(t.p,{children:"The Microservices tab shows all the microservices installed, their update time, state, and count. Clicking the eyeball shows the raw JSON that makes up the microservice configuration."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Microservices",src:s(1844).Z+"",width:"2200",height:"1226"})}),"\n",(0,n.jsx)(t.h3,{id:"packages",children:"Packages"}),"\n",(0,n.jsx)(t.p,{children:"The Packages tab shows all the Ruby gems and Python packages installed in the system. You can also install packages from this tab if you're in an offline (air gapped) environment where COSMOS can't pull dependencies from Rubygems or Pypi."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Packages",src:s(633).Z+"",width:"2200",height:"2620"})}),"\n",(0,n.jsx)(t.h3,{id:"tools",children:"Tools"}),"\n",(0,n.jsx)(t.p,{children:"The Tools tab lists all the tools installed. You can reorder the tools in the Navigation bar by dragging and dropping the left side grab handle."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Tools",src:s(7065).Z+"",width:"2200",height:"2192"})}),"\n",(0,n.jsxs)(t.p,{children:["You can also add links to existing tools in the navigation bar by using the Add button. Any ",(0,n.jsx)(t.a,{href:"https://pictogrammers.com/library/mdi/",children:"material design icons"})," can be used as the Tool icon."]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Add Tool",src:s(6387).Z+"",width:"2060",height:"232"})}),"\n",(0,n.jsx)(t.h3,{id:"redis",children:"Redis"}),"\n",(0,n.jsx)(t.p,{children:"The Redis tab allows you to interact directly with the underlying Redis database, making it easy to modify or delete data. THIS IS DANGEROUS, and should only be performed by COSMOS developers."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Redis",src:s(6462).Z+"",width:"2200",height:"1254"})}),"\n",(0,n.jsx)(t.h3,{id:"secrets",children:"Secrets"}),"\n",(0,n.jsxs)(t.p,{children:["The Secrets tab allows you to create secrets that can be used by Interfaces or Microservices using the ",(0,n.jsx)(t.a,{href:"../configuration/plugins#secret",children:"SECRET"})," keyword. Secrets require setting the Secret Name and then can be set to an individual value using the Secret Value, or to the contents of a file (like a certificate file) using the file selector. In the following example the USERNAME and PASSWORD were set to values while CA_FILE was set using an uploaded certificate file."]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Secrets",src:s(6728).Z+"",width:"2200",height:"962"})}),"\n",(0,n.jsx)(t.h3,{id:"settings",children:"Settings"}),"\n",(0,n.jsx)(t.p,{children:"The Settings tab contains various settings used throughout COSMOS. These including clearing saved tool configuration, hiding the Astro Clock, changing the system time zone, adding a top and bottom banner, creating a subtitle in the navigation bar, and changing the URLs of the various package libraries."}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.img,{alt:"Settings1",src:s(7792).Z+"",width:"2200",height:"2172"}),"\n",(0,n.jsx)(t.img,{alt:"Settings2",src:s(4512).Z+"",width:"2200",height:"2436"})]})]})}function h(e={}){let{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},2241:function(e,t,s){s.d(t,{Z:()=>i});let i=s.p+"assets/images/targets-c02c28769712aa226fdcbd3b90329285aeb39e775b9be1df6ab0e2ad31231518.png"},2840:function(e,t,s){s.d(t,{Z:()=>c,a:()=>l});var i=s(2784);let n={},a=i.createContext(n);function l(e){let t=i.useContext(a);return i.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:l(e.components),i.createElement(a.Provider,{value:t},e.children)}},3238:function(e,t,s){s.d(t,{Z:()=>i});let i=s.p+"assets/images/routers-489fe07165973feede7a63adf71781cca7ecb1f7d17c069761c1c57e70cf926e.png"},4512:function(e,t,s){s.d(t,{Z:()=>i});let i=s.p+"assets/images/settings2-c18e478b65ba569bea37a2bb185b4702e347aecc570fbc7b26a6e66aeecc9129.png"},633:function(e,t,s){s.d(t,{Z:()=>i});let i=s.p+"assets/images/packages-3bfae1a91b0534077280c323a40e879a8ac6a7c3ac45376b3c706a098dab12c3.png"},6387:function(e,t,s){s.d(t,{Z:()=>i});let i=s.p+"assets/images/add_tool-6919be6e6c05db133a8816a9fc03bf98b0789a8525da4cdaa7b041b25bf9edb8.png"},6462:function(e,t,s){s.d(t,{Z:()=>i});let i=s.p+"assets/images/redis-4553b5b35292cca3df1fa08577f2175efef34e0fdfe512f30ca70785b086b24f.png"},6728:function(e,t,s){s.d(t,{Z:()=>i});let i=s.p+"assets/images/secrets-c8daf324829a0d4dde1d30f9da89d884ca06ce458e400dfa5d1de4ccb10395a1.png"},7065:function(e,t,s){s.d(t,{Z:()=>i});let i=s.p+"assets/images/tools-d3ea80e2fdc04e5b85743146ebaf1fc7f1406b7b5e6ec9b700ed35dedc8d16e6.png"},7792:function(e,t,s){s.d(t,{Z:()=>i});let i=s.p+"assets/images/settings1-36a446ec0455ae5ab3a6d225647264647e517e1e2d83da5c639a63756e0339a6.png"},8880:function(e,t,s){s.d(t,{Z:()=>i});let i=s.p+"assets/images/plugins-aabbe060bec19e6fa2490b737f20758af9000066121f5af85f260a3b14f9b3d8.png"}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdocs_openc3_com=self.webpackChunkdocs_openc3_com||[]).push([["1029"],{4148:function(e,t,n){n.r(t),n.d(t,{default:()=>O});var s=n(2322),a=n(2784),l=n(1904),i=n(3972);let r=a.createContext(null);function o(e){let{children:t,content:n}=e,l=(0,a.useMemo)(()=>({metadata:n.metadata,frontMatter:n.frontMatter,assets:n.assets,contentTitle:n.contentTitle,toc:n.toc}),[n]);return(0,s.jsx)(r.Provider,{value:l,children:t})}function c(){let e=(0,a.useContext)(r);if(null===e)throw new i.i6("DocProvider");return e}function d(){let{metadata:e,frontMatter:t,assets:n}=c();return(0,s.jsx)(l.d,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var u=n(7239),h=n(4755),m=n(9061);function b(){let{metadata:e}=c();return(0,s.jsx)(m.Z,{className:"docusaurus-mt-lg",previous:e.previous,next:e.next})}var x=n(7997),v=n(8674),p=n(6460),j=n(6117),g=n(5819);let f={tag:"tag_qE9H",tagRegular:"tagRegular_aHXt",tagWithCount:"tagWithCount_UC8q"};function _(e){let{permalink:t,label:n,count:a,description:l}=e;return(0,s.jsxs)(g.Z,{rel:"tag",href:t,title:l,className:(0,u.Z)(f.tag,a?f.tagWithCount:f.tagRegular),children:[n,a&&(0,s.jsx)("span",{children:a})]})}function Z(e){let{tags:t}=e;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("b",{children:(0,s.jsx)(j.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,s.jsx)("ul",{className:(0,u.Z)("tags_q74f","padding--none","margin-left--sm"),children:t.map(e=>(0,s.jsx)("li",{className:"tag_lSC7",children:(0,s.jsx)(_,{...e})},e.permalink))})]})}var C=n(7955);function N(){let{metadata:e}=c(),{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:a,tags:l}=e,i=l.length>0,r=!!(t||n||a);return i||r?(0,s.jsxs)("footer",{className:(0,u.Z)(p.k.docs.docFooter,"docusaurus-mt-lg"),children:[i&&(0,s.jsx)("div",{className:(0,u.Z)("row margin-top--sm",p.k.docs.docFooterTagsRow),children:(0,s.jsx)("div",{className:"col",children:(0,s.jsx)(Z,{tags:l})})}),r&&(0,s.jsx)(C.Z,{className:(0,u.Z)("margin-top--sm",p.k.docs.docFooterEditMetaRow),editUrl:t,lastUpdatedAt:n,lastUpdatedBy:a})]}):null}var k=n(8859),L=n(231);let T={tocCollapsibleButton:"tocCollapsibleButton_htYj",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_pAh7"};function w(e){let{collapsed:t,...n}=e;return(0,s.jsx)("button",{type:"button",...n,className:(0,u.Z)("clean-btn",T.tocCollapsibleButton,!t&&T.tocCollapsibleButtonExpanded,n.className),children:(0,s.jsx)(j.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}let B={tocCollapsible:"tocCollapsible_O_Qc",tocCollapsibleContent:"tocCollapsibleContent_SlnY",tocCollapsibleExpanded:"tocCollapsibleExpanded_klrc"};function I(e){let{toc:t,className:n,minHeadingLevel:a,maxHeadingLevel:l}=e,{collapsed:i,toggleCollapsed:r}=(0,k.u)({initialState:!0});return(0,s.jsxs)("div",{className:(0,u.Z)(B.tocCollapsible,!i&&B.tocCollapsibleExpanded,n),children:[(0,s.jsx)(w,{collapsed:i,onClick:r}),(0,s.jsx)(k.z,{lazy:!0,className:B.tocCollapsibleContent,collapsed:i,children:(0,s.jsx)(L.Z,{toc:t,minHeadingLevel:a,maxHeadingLevel:l})})]})}function y(){let{toc:e,frontMatter:t}=c();return(0,s.jsx)(I,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,u.Z)(p.k.docs.docTocMobile,"tocMobile_tjDr")})}var A=n(17);function E(){let{toc:e,frontMatter:t}=c();return(0,s.jsx)(A.Z,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:p.k.docs.docTocDesktop})}var H=n(4126),M=n(8093);function R(e){let{children:t}=e,n=function(){let{metadata:e,frontMatter:t,contentTitle:n}=c();return t.hide_title||void 0!==n?null:e.title}();return(0,s.jsxs)("div",{className:(0,u.Z)(p.k.docs.docMarkdown,"markdown"),children:[n&&(0,s.jsx)("header",{children:(0,s.jsx)(H.Z,{as:"h1",children:n})}),(0,s.jsx)(M.Z,{children:t})]})}var V=n(4814),F=n(5015);let D={docItemContainer:"docItemContainer_Rv5Z",docItemCol:"docItemCol_YAwJ"};function J(e){let{children:t}=e,n=function(){let{frontMatter:e,toc:t}=c(),n=(0,h.i)(),a=e.hide_table_of_contents,l=!a&&t.length>0;return{hidden:a,mobile:l?(0,s.jsx)(y,{}):void 0,desktop:l&&("desktop"===n||"ssr"===n)?(0,s.jsx)(E,{}):void 0}}(),{metadata:a}=c();return(0,s.jsxs)("div",{className:"row",children:[(0,s.jsxs)("div",{className:(0,u.Z)("col",!n.hidden&&D.docItemCol),children:[(0,s.jsx)(F.Z,{metadata:a}),(0,s.jsx)(x.Z,{}),(0,s.jsxs)("div",{className:D.docItemContainer,children:[(0,s.jsxs)("article",{children:[(0,s.jsx)(V.Z,{}),(0,s.jsx)(v.Z,{}),n.mobile,(0,s.jsx)(R,{children:t}),(0,s.jsx)(N,{})]}),(0,s.jsx)(b,{})]})]}),n.desktop&&(0,s.jsx)("div",{className:"col col--3",children:n.desktop})]})}function O(e){let t=`docs-doc-id-${e.content.metadata.id}`,n=e.content;return(0,s.jsx)(o,{content:e.content,children:(0,s.jsxs)(l.FG,{className:t,children:[(0,s.jsx)(d,{}),(0,s.jsx)(J,{children:(0,s.jsx)(n,{})})]})})}},4814:function(e,t,n){n.d(t,{Z:()=>g});var s=n(2322);n(2784);var a=n(7239),l=n(6460),i=n(606),r=n(3422),o=n(5819),c=n(6117),d=n(7720);function u(e){return(0,s.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,s.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}function h(){let e=(0,d.ZP)("/");return(0,s.jsx)("li",{className:"breadcrumbs__item",children:(0,s.jsx)(o.Z,{"aria-label":(0,c.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,s.jsx)(u,{className:"breadcrumbHomeIcon_JFrk"})})})}var m=n(7173),b=n(3687);function x(e){let t=function(e){let{breadcrumbs:t}=e,{siteConfig:n}=(0,b.Z)();return{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:t.filter(e=>e.href).map((e,t)=>({"@type":"ListItem",position:t+1,name:e.label,item:`${n.url}${e.href}`}))}}({breadcrumbs:e.breadcrumbs});return(0,s.jsx)(m.Z,{children:(0,s.jsx)("script",{type:"application/ld+json",children:JSON.stringify(t)})})}let v={breadcrumbsContainer:"breadcrumbsContainer_zCmv"};function p(e){let{children:t,href:n,isLast:a}=e,l="breadcrumbs__link";return a?(0,s.jsx)("span",{className:l,children:t}):n?(0,s.jsx)(o.Z,{className:l,href:n,children:(0,s.jsx)("span",{children:t})}):(0,s.jsx)("span",{className:l,children:t})}function j(e){let{children:t,active:n}=e;return(0,s.jsx)("li",{className:(0,a.Z)("breadcrumbs__item",{"breadcrumbs__item--active":n}),children:t})}function g(){let e=(0,i.s1)(),t=(0,r.Ns)();return e?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(x,{breadcrumbs:e}),(0,s.jsx)("nav",{className:(0,a.Z)(l.k.docs.docBreadcrumbs,v.breadcrumbsContainer),"aria-label":(0,c.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,s.jsxs)("ul",{className:"breadcrumbs",children:[t&&(0,s.jsx)(h,{}),e.map((t,n)=>{let a=n===e.length-1,l="category"===t.type&&t.linkUnlisted?void 0:t.href;return(0,s.jsx)(j,{active:a,children:(0,s.jsx)(p,{href:l,isLast:a,children:t.label})},n)})]})})]}):null}},7997:function(e,t,n){n.d(t,{Z:()=>v});var s=n(2322);n(2784);var a=n(7239),l=n(3687),i=n(5819),r=n(6117),o=n(7691),c=n(6460),d=n(2972),u=n(8354);let h={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,s.jsx)(r.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:(0,s.jsx)("b",{children:n.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,s.jsx)(r.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:(0,s.jsx)("b",{children:n.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function m(e){let t=h[e.versionMetadata.banner];return(0,s.jsx)(t,{...e})}function b(e){let{versionLabel:t,to:n,onClick:a}=e;return(0,s.jsx)(r.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:(0,s.jsx)("b",{children:(0,s.jsx)(i.Z,{to:n,onClick:a,children:(0,s.jsx)(r.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function x(e){let{className:t,versionMetadata:n}=e,{siteConfig:{title:i}}=(0,l.Z)(),{pluginId:r}=(0,o.gA)({failfast:!0}),{savePreferredVersionName:u}=(0,d.J)(r),{latestDocSuggestion:h,latestVersionSuggestion:x}=(0,o.Jo)(r),v=h??x.docs.find(e=>e.id===x.mainDocId);return(0,s.jsxs)("div",{className:(0,a.Z)(t,c.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,s.jsx)("div",{children:(0,s.jsx)(m,{siteTitle:i,versionMetadata:n})}),(0,s.jsx)("div",{className:"margin-top--md",children:(0,s.jsx)(b,{versionLabel:x.label,to:v.path,onClick:()=>u(x.name)})})]})}function v(e){let{className:t}=e,n=(0,u.E)();return n.banner?(0,s.jsx)(x,{className:t,versionMetadata:n}):null}},8674:function(e,t,n){n.d(t,{Z:()=>o});var s=n(2322);n(2784);var a=n(7239),l=n(6117),i=n(6460),r=n(8354);function o(e){let{className:t}=e,n=(0,r.E)();return n.badge?(0,s.jsx)("span",{className:(0,a.Z)(t,i.k.docs.docVersionBadge,"badge badge--secondary"),children:(0,s.jsx)(l.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label},children:"Version: {versionLabel}"})}):null}},9061:function(e,t,n){n.d(t,{Z:()=>o});var s=n(2322);n(2784);var a=n(7239),l=n(6117),i=n(5819);function r(e){let{permalink:t,title:n,subLabel:l,isNext:r}=e;return(0,s.jsxs)(i.Z,{className:(0,a.Z)("pagination-nav__link",r?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[l&&(0,s.jsx)("div",{className:"pagination-nav__sublabel",children:l}),(0,s.jsx)("div",{className:"pagination-nav__label",children:n})]})}function o(e){let{className:t,previous:n,next:i}=e;return(0,s.jsxs)("nav",{className:(0,a.Z)(t,"pagination-nav"),"aria-label":(0,l.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[n&&(0,s.jsx)(r,{...n,subLabel:(0,s.jsx)(l.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),i&&(0,s.jsx)(r,{...i,subLabel:(0,s.jsx)(l.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdocs_openc3_com=self.webpackChunkdocs_openc3_com||[]).push([["8884"],{2308:function(e,t,i){i.d(t,{Z:()=>n});let n=i.p+"assets/images/reload_file-056b240b1d48539a9fecfe2ad1bac0c27d83f5dddcd29af6cf719986869406ee.png"},2840:function(e,t,i){i.d(t,{Z:()=>a,a:()=>c});var n=i(2784);let o={},s=n.createContext(o);function c(e){let t=n.useContext(s);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),n.createElement(s.Provider,{value:t},e.children)}},3079:function(e,t,i){i.d(t,{Z:()=>n});let n=i.p+"assets/images/delete_modified-ecf9beabf5e6cc6b8cc9d249ba9e313bd18d51c671ebc36029b4cebd729fa2d0.png"},4465:function(e,t,i){i.d(t,{Z:()=>n});let n=i.p+"assets/images/project-c521374330008c1292b4da1b9a1c8af6647ab59f1617b470f26e76a521fe8059.png"},5295:function(e,t,i){i.r(t),i.d(t,{frontMatter:()=>c,default:()=>h,contentTitle:()=>a,assets:()=>d,toc:()=>l,metadata:()=>n});var n=JSON.parse('{"id":"guides/local-mode","title":"Local Mode","description":"Edit scripts and screens directly on the host file system","source":"@site/docs/guides/local-mode.md","sourceDirName":"guides","slug":"/guides/local-mode","permalink":"/tools/staticdocs/docs/guides/local-mode","draft":false,"unlisted":false,"editUrl":"https://github.com/OpenC3/cosmos/tree/main/docs.openc3.com/docs/guides/local-mode.md","tags":[],"version":"current","frontMatter":{"title":"Local Mode","description":"Edit scripts and screens directly on the host file system","sidebar_custom_props":{"myEmoji":"\uD83E\uDDED"}},"sidebar":"defaultSidebar","previous":{"title":"Little Endian Bitfields","permalink":"/tools/staticdocs/docs/guides/little-endian-bitfields"},"next":{"title":"Logging","permalink":"/tools/staticdocs/docs/guides/logging"}}'),o=i(2322),s=i(2840);let c={title:"Local Mode",description:"Edit scripts and screens directly on the host file system",sidebar_custom_props:{myEmoji:"\uD83E\uDDED"}},a=void 0,d={},l=[{value:"Using Local Mode",id:"using-local-mode",level:2},{value:"Editing scripts",id:"editing-scripts",level:3},{value:"Disabling Local Mode",id:"disabling-local-mode",level:3},{value:"Configuration Management",id:"configuration-management",level:2}];function r(e){let t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",p:"p",pre:"pre",...(0,s.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.p,{children:"Local Mode is a new feature in the 5.0.9 COSMOS release. It is intended to capture the configuration of an edited plugin so it can be configuration managed. It allows you to edit portions of a plugin (scripts and screens) locally in the editor of your choice and instantly have those changes appear in the COSMOS plugin. This avoids the plugin build / install cycle which is required when editing command and telemetry or interface definitions."}),"\n",(0,o.jsx)(t.h2,{id:"using-local-mode",children:"Using Local Mode"}),"\n",(0,o.jsxs)(t.p,{children:["In this tutorial we will use the COSMOS Demo as configured by the ",(0,o.jsx)(t.a,{href:"/tools/staticdocs/docs/getting-started/installation",children:"Installation Guide"}),". You should have cloned a ",(0,o.jsx)(t.a,{href:"https://github.com/OpenC3/cosmos-project",children:"cosmos-project"})," and started it using ",(0,o.jsx)(t.code,{children:"openc3.sh run"}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["If you check the project directory you should see a ",(0,o.jsx)(t.code,{children:"plugins/DEFAULT/openc3-cosmos-demo"})," directory. This will contain both the gem that was installed and a ",(0,o.jsx)(t.code,{children:"plugin_instance.json"})," file. The ",(0,o.jsx)(t.code,{children:"plugin_instance.json"})," file captures the plugin.txt values when the plugin was installed. Note, all files in the plugins directory are meant to be configuration managed with the project. This ensures if you make local edits and check them in, another user can clone the project and get the exact same configuration. We will demonstrate this later."]}),"\n",(0,o.jsx)(t.h3,{id:"editing-scripts",children:"Editing scripts"}),"\n",(0,o.jsx)(t.admonition,{title:"Visual Studio Code",type:"info",children:(0,o.jsxs)(t.p,{children:["This tutorial will use ",(0,o.jsx)(t.a,{href:"https://code.visualstudio.com",children:"VS Code"})," which is the editor used by the COSMOS developers."]})}),"\n",(0,o.jsxs)(t.p,{children:["The most common use case for Local Mode is script development. Launch Script Runner and open the ",(0,o.jsx)(t.code,{children:"INST/procedures/checks.rb"})," file. If you run this script you'll notice that it has a few errors (by design) which prevent it from running to completion. Let's fix it! Comment out lines 7 & 9 and save the script. You should now notice that Local Mode has saved a copy of the script to ",(0,o.jsx)(t.code,{children:"plugins/targets_modified/INST/procedures/checks.rb"}),"."]}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"Project Layout",src:i(4465).Z+"",width:"991",height:"547"})}),"\n",(0,o.jsxs)(t.p,{children:["At this point Local Mode keeps these scripts in sync so we can edit in either place. Let's edit the local script by adding a simple comment at the top: ",(0,o.jsx)(t.code,{children:"# This is a script"}),". Now if we go back to Script Runner the changes have not ",(0,o.jsx)(t.em,{children:"automatically"})," appeared. However, there is a Reload button next to the filename that will refresh the file from the backend."]}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"Project Layout",src:i(2308).Z+"",width:"839",height:"532"})}),"\n",(0,o.jsx)(t.p,{children:"Clicking this reloads the file which has been synced into COSMOS and now we see our comment."}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"Project Layout",src:i(9).Z+"",width:"839",height:"232"})}),"\n",(0,o.jsx)(t.h3,{id:"disabling-local-mode",children:"Disabling Local Mode"}),"\n",(0,o.jsxs)(t.p,{children:["If you want to disable Local Mode you can edit the .env file and delete the setting ",(0,o.jsx)(t.code,{children:"OPENC3_LOCAL_MODE=1"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"configuration-management",children:"Configuration Management"}),"\n",(0,o.jsx)(t.p,{children:"It is recommended to configuration manage the entire project including the plugins directory. This will allow any user who starts COSMOS to launch an identical configuration. Plugins are created and updated with any modifications found in the targets_modified directory."}),"\n",(0,o.jsx)(t.p,{children:"At some point you will probably want to release your local changes back to the plugin they originated from. Simply copy the entire targets_modified/TARGET directory back to the original plugin. At that point you can rebuild the plugin using the CLI."}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{children:"openc3-cosmos-demo % ./openc3.sh cli rake build VERSION=1.0.1\n Successfully built RubyGem\n Name: openc3-cosmos-demo\n Version: 1.0.1\n File: openc3-cosmos-demo-1.0.1.gem\n"})}),"\n",(0,o.jsx)(t.p,{children:"Upgrade the plugin using the Admin Plugins tab and the Upgrade link. When you select your newly built plugin, COSMOS detects the existing changes and asks if you want to delete them. There is a stern warning attached because this will permanently remove these changes! Since we just moved over the changes and rebuilt the plugin we will check the box and INSTALL."}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"Project Layout",src:i(3079).Z+"",width:"1272",height:"619"})}),"\n",(0,o.jsxs)(t.p,{children:["When the new plugin is installed, the project's ",(0,o.jsx)(t.code,{children:"plugins"})," directory gets updated with the new plugin and everything under the targets_modified directory is removed because there are no modifications on a new install."]}),"\n",(0,o.jsx)(t.p,{children:"Local Mode is a powerful way to develop scripts and screens on the local file system and automatically have them sync to COSMOS."})]})}function h(e={}){let{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(r,{...e})}):r(e)}},9:function(e,t,i){i.d(t,{Z:()=>n});let n=i.p+"assets/images/reloaded-516bc4c257f9b7f6ce3714f5a06eeef8ad47a8461e21613ba26989d5e56260ec.png"}}]);