PageSourceSearch

https://www.fluvio.io/assets/js/b2e594bc.ceb54e01.js

js fluvio.io collected 2026-10-04 00:28:26 UTC 4,640 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkfluvio_docs=self.webpackChunkfluvio_docs||[]).push([[731],{72334:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>i,contentTitle:()=>l,default:()=>c,frontMatter:()=>n,metadata:()=>d,toc:()=>a});var o=r(74848),t=r(28453);const n={sidebar_position:1,title:"Overview",description:"Create your own SmartModules"},l="Building Your Own SmartModule",d={id:"smartmodules/developers/overview",title:"Overview",description:"Create your own SmartModules",source:"@site/versioned_docs/version-0.15.1/smartmodules/developers/overview.mdx",sourceDirName:"smartmodules/developers",slug:"/smartmodules/developers/overview",permalink:"/docs/0.15.1/smartmodules/developers/overview",draft:!1,unlisted:!1,editUrl:"https://github.com/infinyon/fluvio-docs/tree/main/versioned_docs/version-0.15.1/smartmodules/developers/overview.mdx",tags:[],version:"0.15.1",lastUpdatedBy:"Felipe Cardozo",lastUpdatedAt:1752028303e3,sidebarPosition:1,frontMatter:{sidebar_position:1,title:"Overview",description:"Create your own SmartModules"},sidebar:"smartmodules",previous:{title:"CLI `smdk`",permalink:"/docs/0.15.1/smartmodules/smdk"},next:{title:"Generate",permalink:"/docs/0.15.1/smartmodules/developers/generate"}},i={},a=[{value:"Prerequisites",id:"prerequisites",level:5},{value:"SMDK - Operations",id:"smdk---operations",level:3},{value:"Steps",id:"steps",level:3},{value:"References",id:"references",level:3}];function u(e){const s={a:"a",code:"code",h1:"h1",h3:"h3",h5:"h5",header:"header",li:"li",ol:"ol",p:"p",ul:"ul",...(0,t.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.header,{children:(0,o.jsx)(s.h1,{id:"building-your-own-smartmodule",children:"Building Your Own SmartModule"})}),"\n",(0,o.jsxs)(s.p,{children:["Fluvio uses ",(0,o.jsx)(s.a,{href:"/docs/0.15.1/smartmodules/smdk",children:"SmartModules Development Kit (smdk)"}),", and independent executable downloadable via ",(0,o.jsx)(s.a,{href:"/docs/0.15.1/fluvio/fvm/introduction",children:(0,o.jsx)(s.code,{children:"fvm"})})," to help developers build and test SmartModules, and publish them to the SmartModule Hub."]}),"\n",(0,o.jsx)(s.p,{children:"Currently, SMDK is limited to the Rust programming language. However, you can be a Rust beginner and still take advantage of custom SmartModules."}),"\n",(0,o.jsx)(s.h5,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,o.jsxs)(s.p,{children:["SMDK generator will prompt you to ",(0,o.jsx)(s.a,{href:"https://www.rust-lang.org/tools/install",children:(0,o.jsx)(s.code,{children:"Install Rust"})})," on your system, add a Cargo target ",(0,o.jsx)(s.code,{children:"wasm32-unknown-unknown"})," for compiling SmartModule Rust code into WebAssembly modules, and install ",(0,o.jsx)(s.a,{href:"https://github.com/cargo-generate/cargo-generate",children:(0,o.jsx)(s.code,{children:"cargo-generate"})})," for generating new Rust SmartModule projects."]}),"\n",(0,o.jsx)(s.h3,{id:"smdk---operations",children:"SMDK - Operations"}),"\n",(0,o.jsx)(s.p,{children:"SMDK helps developers build, test in-line, load to local or cloud Cluster, then publish to SmartModule Hub."}),"\n",(0,o.jsx)(s.h3,{id:"steps",children:"Steps"}),"\n",(0,o.jsxs)(s.ol,{children:["\n",(0,o.jsx)(s.li,{children:(0,o.jsx)(s.a,{href:"/docs/0.15.1/smartmodules/developers/generate",children:"Generate a SmartModule"})}),"\n",(0,o.jsx)(s.li,{children:(0,o.jsx)(s.a,{href:"/docs/0.15.1/smartmodules/developers/build",children:"Build and Test"})}),"\n",(0,o.jsx)(s.li,{children:(0,o.jsx)(s.a,{href:"/docs/0.15.1/smartmodules/developers/load",children:"Load to your Cluster"})}),"\n",(0,o.jsx)(s.li,{children:(0,o.jsx)(s.a,{href:"/docs/0.15.1/smartmodules/developers/publish",children:"Publish to SmartModule Hub"})}),"\n"]}),"\n",(0,o.jsx)(s.h3,{id:"references",children:"References"}),"\n",(0,o.jsxs)(s.ul,{children:["\n",(0,o.jsx)(s.li,{children:(0,o.jsx)(s.a,{href:"https://github.com/infinyon/fluvio/tree/master/crates/smartmodule-development-kit",children:"SMDK Source code"})}),"\n",(0,o.jsx)(s.li,{children:(0,o.jsx)(s.a,{href:"https://github.com/infinyon/labs-projects",children:"Labs Projects"})}),"\n"]})]})}function c(e={}){const{wrapper:s}={...(0,t.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},28453:(e,s,r)=>{r.d(s,{R:()=>l,x:()=>d});var o=r(96540);const t={},n=o.createContext(t);function l(e){const s=o.useContext(n);return o.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),o.createElement(n.Provider,{value:s},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.