<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Seal</title>
    <description>The latest articles on DEV Community by Seal (@seal-software).</description>
    <link>https://dev.to/seal-software</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F8070%2Fc8c97370-151d-4037-94f2-69c1a9c8bc1d.png</url>
      <title>DEV Community: Seal</title>
      <link>https://dev.to/seal-software</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/seal-software"/>
    <language>en</language>
    <item>
      <title>Building Your Private ChatGPT and Knowledge Base with AnythingLLM and GPUStack</title>
      <dc:creator>Seal</dc:creator>
      <pubDate>Tue, 12 Nov 2024 04:27:09 +0000</pubDate>
      <link>https://dev.to/seal-software/building-your-private-chatgpt-and-knowledge-base-with-anythingllm-and-gpustack-5fgg</link>
      <guid>https://dev.to/seal-software/building-your-private-chatgpt-and-knowledge-base-with-anythingllm-and-gpustack-5fgg</guid>
      <description>&lt;p&gt;&lt;strong&gt;AnythingLLM&lt;/strong&gt; [&lt;a href="https://github.com/Mintplex-Labs/anything-llm" rel="noopener noreferrer"&gt;https://github.com/Mintplex-Labs/anything-llm&lt;/a&gt;] is an all-in-one AI application that runs on Mac, Windows, and Linux. Its goal is to enable the local creation of a &lt;strong&gt;personal ChatGPT&lt;/strong&gt; using either commercial or open-source LLMs along with vector database solutions. AnythingLLM goes beyond being a simple chatbot by including Retrieval-Augmented Generation (RAG) and Agent capabilities. These features allow it to perform a variety of tasks, such as fetching website information, generating charts, summarizing documents, and more.&lt;/p&gt;

&lt;p&gt;AnythingLLM can integrate various types of documents into different workspaces, enabling users to reference document content during chats. This provides a easy way to organize workspaces for different tasks and documents.&lt;/p&gt;

&lt;p&gt;In this article, we will introduce how to build a personal ChatGPT with knowledge base using &lt;strong&gt;AnythingLLM + GPUStack&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run models with GPUStack
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GPUStack is an open-source GPU cluster manager for running large language models (LLMs)&lt;/strong&gt;. It enables you to create a unified cluster from GPUs across various platforms, including Apple MacBooks, Windows PCs, and Linux servers. Administrators can deploy LLMs from popular repositories like Hugging Face, allowing developers to access these models as easily as they would access public LLM services from providers such as OpenAI or Microsoft Azure.&lt;/p&gt;

&lt;p&gt;Unlike Ollama, &lt;strong&gt;GPUStack&lt;/strong&gt; is a cluster solution designed to aggregate GPU resources from multiple devices to run models.&lt;/p&gt;

&lt;p&gt;To deploy the &lt;strong&gt;Chat Model&lt;/strong&gt; and &lt;strong&gt;Embedding Model&lt;/strong&gt; on &lt;strong&gt;GPUStack&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;​ • &lt;strong&gt;Chat Model&lt;/strong&gt;: &lt;strong&gt;llama3.1&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;​ • &lt;strong&gt;Embedding Model&lt;/strong&gt;: &lt;strong&gt;bge-m3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ja76tpzv298cm4rbmbg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ja76tpzv298cm4rbmbg.png" alt="image-20241105171908268" width="800" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And you need to create an API key. This key will be used by &lt;strong&gt;AnythingLLM&lt;/strong&gt; to authenticate when accessing the models API deployed on &lt;strong&gt;GPUStack&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install and configure AnythingLLM
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AnythingLLM&lt;/strong&gt; offers packages for &lt;strong&gt;Mac, Windows, and Linux&lt;/strong&gt;, you can download from &lt;a href="https://anythingllm.com/download" rel="noopener noreferrer"&gt;https://anythingllm.com/download&lt;/a&gt;. After installation, open AnythingLLM to begin the setup process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configure LLM Provider
&lt;/h3&gt;

&lt;p&gt;First, configure the chat model. Search for &lt;strong&gt;OpenAI&lt;/strong&gt;, select &lt;strong&gt;Generic OpenAI&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3nwdo25q7yjkjt1cfgvf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3nwdo25q7yjkjt1cfgvf.png" alt="image-20241105163235972" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And fill in the details for the model deployed on &lt;strong&gt;GPUStack&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F56l0jenlvsbsjcrt3f3j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F56l0jenlvsbsjcrt3f3j.png" alt="image-20241105163253668" width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Save and configure embedding model.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configure Embedding Provider
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;AnythingLLM&lt;/strong&gt; includes a lightweight embedding model, &lt;strong&gt;all-MiniLM-L6-v2&lt;/strong&gt;, which offers limited performance and context length. For more powerful embedding capabilities, you can either opt for public embedding services or run open-source embedding models. Here, we’ll configure the embedding model &lt;strong&gt;bge-m3&lt;/strong&gt;, which is running on &lt;strong&gt;GPUStack&lt;/strong&gt;. Set the embedding provider to &lt;strong&gt;Generic OpenAI&lt;/strong&gt; and fill in the relevant configuration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpk4o2vigwew0gx9j62m8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpk4o2vigwew0gx9j62m8.png" alt="image-20241105162753929" width="800" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then create a workspace, and we can use AnythingLLM after it's completed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use AnythingLLM
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Chat with LLM
&lt;/h3&gt;

&lt;p&gt;Select a workspace, create a new thread, and send your question to the LLM:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb7elc5gv56ax1c58nu6c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb7elc5gv56ax1c58nu6c.png" alt="image-20241105163657917" width="800" height="476"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Fetch website content
&lt;/h3&gt;

&lt;p&gt;Click the upload button next to the workspace, enter the website URL in the &lt;strong&gt;Fetch website&lt;/strong&gt; box, and fetch the website content.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fglm84zqsx96x94ismm4d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fglm84zqsx96x94ismm4d.png" alt="image-20241105164159767" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The fetched website content will be sent to the embedding model for vectorization and then stored in the vector database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6uhgfy1a5j2xtatyeo0q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6uhgfy1a5j2xtatyeo0q.png" alt="image-20241105164252415" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check the content fetched from the website:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff4h5iuarbzfsvbv6powo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff4h5iuarbzfsvbv6powo.png" alt="image-20241105164801193" width="800" height="476"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Documents embedding
&lt;/h3&gt;

&lt;p&gt;Click the upload button next to the workspace, then click the upload box and upload a document. The document will be sent to the embedding model for vectorization and then stored in the vector database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fptocyq1wx46igsbpb621.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fptocyq1wx46igsbpb621.png" alt="image-20241105164914343" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check the content of embedded documents:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhx706cbhdrtmwdtde4sr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhx706cbhdrtmwdtde4sr.png" alt="image-20241105165047935" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For more information, please read the &lt;code&gt;AnythingLLM&lt;/code&gt; documentation: &lt;a href="https://docs.anythingllm.com/" rel="noopener noreferrer"&gt;https://docs.anythingllm.com/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this tutorial, we have introduced how to use &lt;code&gt;AnythingLLM + GPUStack&lt;/code&gt; to aggregate GPUs across multiple devices and build an all-in-one AI application for RAG and AI Agents.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;GPUStack&lt;/code&gt; provides a standard OpenAI-compatible API, which can be quickly and smoothly integrated with various LLM ecosystem components. Wanna give it a go? Try to integrate your tools/frameworks/software with &lt;code&gt;GPUStack&lt;/code&gt; now and share with us!&lt;/p&gt;

&lt;p&gt;If you encounter any issues while integrating GPUStack with third parties, feel free to join &lt;a href="https://discord.gg/VXYJzuaqwD" rel="noopener noreferrer"&gt;GPUStack Discord Community&lt;/a&gt; and get support from our engineers.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Building Free GitHub Copilot Alternative with Continue + GPUStack</title>
      <dc:creator>Seal</dc:creator>
      <pubDate>Fri, 23 Aug 2024 17:00:00 +0000</pubDate>
      <link>https://dev.to/seal-software/building-free-github-copilot-alternative-with-continue-gpustack-2djh</link>
      <guid>https://dev.to/seal-software/building-free-github-copilot-alternative-with-continue-gpustack-2djh</guid>
      <description>&lt;p&gt;&lt;a href="https://seal.io/building-free-github-copilot-alternative-with-continue-and-gpustack/" rel="noopener noreferrer"&gt;Click here to read original post&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/continuedev/continue" rel="noopener noreferrer"&gt;&lt;code&gt;Continue&lt;/code&gt;&lt;/a&gt; is an open-source alternative to &lt;code&gt;GitHub Copilot&lt;/code&gt;, this is an open-source AI coding assistant that allows to connect various large language models(LLMs) within &lt;code&gt;VS Code&lt;/code&gt; and &lt;code&gt;JetBrains&lt;/code&gt; to build custom code autocompletion and chat capabilities. It supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code parsing
&lt;/li&gt;
&lt;li&gt;Code autocompletion&lt;/li&gt;
&lt;li&gt;Code optimization suggestions
&lt;/li&gt;
&lt;li&gt;Code refactoring &lt;/li&gt;
&lt;li&gt;Code implementations Inquiring
&lt;/li&gt;
&lt;li&gt;Documentation online searching&lt;/li&gt;
&lt;li&gt;Terminal errors parsing
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and more. It assists developers in coding and enhancing their development efficiency.&lt;/p&gt;

&lt;p&gt;In this tutorial, we are going to use &lt;strong&gt;&lt;code&gt;Continue + GPUStack&lt;/code&gt;&lt;/strong&gt; to build a free GitHub Copilot locally, providing developers with an AI-paired programming experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running Models with GPUStack
&lt;/h2&gt;

&lt;p&gt;First, we will deploy the models on &lt;code&gt;GPUStack&lt;/code&gt;. There are three model types recommended by &lt;code&gt;Continue&lt;/code&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chat model&lt;/strong&gt;: select &lt;code&gt;llama3.1&lt;/code&gt;, this is the latest open-source model trained by Meta.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autocompletion model&lt;/strong&gt;: select &lt;code&gt;starcoder2:3b&lt;/code&gt;, a highly advanced autocompletion model trained by Hugging Face.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embedding model&lt;/strong&gt;: select &lt;code&gt;nomic-embed-text&lt;/code&gt;, which supports a context length of 8192 tokens, it outperforms OpenAI ada-002 and text-embedding-3-small models for both short and long context tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lJmdCjxo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822143650047.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lJmdCjxo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822143650047.png" alt="image 1" width="800" height="353"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;After deploying the models, you are also required to create an &lt;code&gt;API key&lt;/code&gt; in the API Keys section for authentication when &lt;code&gt;Continue&lt;/code&gt; accesses the models deployed on &lt;code&gt;GPUStack&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing and Configuring Continue
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Continue&lt;/code&gt; provides extensions for both &lt;code&gt;VS Code&lt;/code&gt; and &lt;code&gt;JetBrains&lt;/code&gt;. In this article, we will use &lt;code&gt;VS Code&lt;/code&gt; as an example. Install &lt;code&gt;Continue&lt;/code&gt; from the &lt;code&gt;VS Code&lt;/code&gt; extension store:&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7YAwG3bw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822144006940.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7YAwG3bw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822144006940.png" alt="image 2" width="800" height="393"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Once installed, drag the &lt;code&gt;Continue&lt;/code&gt; extension to the right panel to avoid conflict with the file explorer:&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V5RTjRFc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822143946949.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V5RTjRFc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822143946949.png" alt="image 3" width="800" height="423"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Then, select the settings button in the bottom-right corner to edit &lt;code&gt;Continue&lt;/code&gt;'s configuration and connect to the models deployed on &lt;code&gt;GPUStack&lt;/code&gt;. Replace the sections for &lt;code&gt;"models"&lt;/code&gt;, &lt;code&gt;"tabAutocompleteModel"&lt;/code&gt;, and &lt;code&gt;"embeddingsProvider"&lt;/code&gt; with your own GPUStack-generated API Key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"models"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Llama 3.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"provider"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"openai"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"llama3.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"apiBase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://192.168.50.4/v1-openai"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"apiKey"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gpustack_f58451c1c04d8f14_c7e8fb2213af93062b4e87fa3c319005"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tabAutocompleteModel"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Starcoder 2 3b"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"provider"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"openai"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"starcoder2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"apiBase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://192.168.50.4/v1-openai"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"apiKey"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gpustack_f58451c1c04d8f14_c7e8fb2213af93062b4e87fa3c319005"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"embeddingsProvider"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"provider"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"openai"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"nomic-embed-text"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"apiBase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://192.168.50.4/v1-openai"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"apiKey"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gpustack_f58451c1c04d8f14_c7e8fb2213af93062b4e87fa3c319005"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;
    &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PaSNQp7S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822144033667.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PaSNQp7S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822144033667.png" alt="image 4" width="800" height="440"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4fWKwaFO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822144055057.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4fWKwaFO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822144055057.png" alt="image 5" width="800" height="439"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Get to Use Continue
&lt;/h2&gt;

&lt;p&gt;After configuring &lt;code&gt;Continue&lt;/code&gt; to connect to the GPUStack-deployed models, go to the top-right corner of the &lt;code&gt;Continue&lt;/code&gt; plugin interface and select &lt;code&gt;Llama 3.1&lt;/code&gt; model. Now you are able to use the features we mentioned at the beginning of this tutorial:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Code Parsing&lt;/strong&gt;: Select the code, press &lt;code&gt;Cmd/Ctrl + L&lt;/code&gt;, and enter a prompt to let the local LLM parse the code:  &lt;/p&gt;

&lt;p&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JFkUTpoF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822145951464.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JFkUTpoF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822145951464.png" alt="image 6" width="800" height="430"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Code Autocompletion&lt;/strong&gt;: While coding, press &lt;code&gt;Tab&lt;/code&gt; to let the local LLM attempt to autocomplete the code:  &lt;/p&gt;

&lt;p&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uxNMqP1I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822144132354.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uxNMqP1I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822144132354.png" alt="image 7" width="800" height="500"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Code Refactoring&lt;/strong&gt;: Select the code, press &lt;code&gt;Cmd/Ctrl + I&lt;/code&gt;, and enter a prompt to let the local LLM attempt to optimize the code:  &lt;/p&gt;

&lt;p&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Y_5V-xQ4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822145544825.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y_5V-xQ4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822145544825.png" alt="image 8" width="800" height="429"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;The LLM will provide suggestions, and you can decide whether to accept or reject them:  &lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Tcmwjwj2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822144207805.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Tcmwjwj2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822144207805.png" alt="image 9" width="800" height="549"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Inquire About Code Implementation&lt;/strong&gt;: You can try &lt;code&gt;@Codebase&lt;/code&gt; to ask questions about the codebase, such as how a certain feature is implemented:  &lt;/p&gt;

&lt;p&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8Jxf_qzk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822151421841.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8Jxf_qzk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822151421841.png" alt="image 10" width="800" height="429"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Documentation Search&lt;/strong&gt;: Use &lt;code&gt;@Docs&lt;/code&gt; and select the document site you wish to search for and ask your questions, enabling you to find the results you need:&lt;/p&gt;

&lt;p&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jJADXV4A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822144718627.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jJADXV4A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://gpustack-blogs.oss-cn-hongkong.aliyuncs.com/undefinedimage-20240822144718627.png" alt="image 11" width="800" height="428"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more information, please read the official &lt;code&gt;Continue&lt;/code&gt; documentation: &lt;a href="https://docs.continue.dev/how-to-use-continue" rel="noopener noreferrer"&gt;https://docs.continue.dev/how-to-use-continue&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this tutorial, we have introduced how to use &lt;code&gt;Continue + GPUStack&lt;/code&gt; to build a free local GitHub Copilot, offering AI-paired programming capabilities at no cost to developers.  &lt;/p&gt;

&lt;p&gt;&lt;code&gt;GPUStack&lt;/code&gt; provides a standard OpenAI-compatible API, which can be quickly and smoothly integrated with various LLM ecosystem components. Wanna give it a go? Try to integrate your tools/frameworks/software with &lt;code&gt;GPUStack&lt;/code&gt; now and share with us!&lt;/p&gt;

&lt;p&gt;If you encounter any issues while integrating GPUStack with third parties, feel free to join &lt;a href="https://discord.gg/VXYJzuaqwD" rel="noopener noreferrer"&gt;GPUStack Discord Community&lt;/a&gt; and get support from our engineers.&lt;/p&gt;

</description>
      <category>gpustack</category>
      <category>githubcopilot</category>
      <category>ai</category>
    </item>
    <item>
      <title>Introducing GPUStack: An open-source GPU cluster manager for running LLMs</title>
      <dc:creator>Seal</dc:creator>
      <pubDate>Fri, 26 Jul 2024 15:36:39 +0000</pubDate>
      <link>https://dev.to/seal-software/introducing-gpustack-an-open-source-gpu-cluster-manager-for-running-llms-2kol</link>
      <guid>https://dev.to/seal-software/introducing-gpustack-an-open-source-gpu-cluster-manager-for-running-llms-2kol</guid>
      <description>&lt;h2&gt;
  
  
  What is GPUStack?
&lt;/h2&gt;

&lt;p&gt;We are thrilled to launch GPUStack, an open-source GPU cluster manager for running Large Language Models (LLMs). Even though LLMs are widely available as public cloud services, organizations cannot easily host their own LLM deployments for private use. They need to install and manage complex clustering software such as Kubernetes and then figure out how to install and manage the AI tool stack on top. Popular ways to run LLMs locally, such as LMStudio and LocalAI, works on a single machine.&lt;/p&gt;

&lt;p&gt;GPUStack allows you to create a unified cluster from any brand of GPUs in Apple MacBooks, Windows PCs, and Linux servers. Administrators can deploy LLMs from popular repositories such as Hugging Face. Developers can then access LLMs just as easily as accessing public LLM services from vendors like OpenAI or Microsoft Azure.&lt;/p&gt;

&lt;p&gt;For more details about GPUStack, visit:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;GitHub repo: &lt;a href="https://github.com/gpustack/gpustack" rel="noopener noreferrer"&gt;https://github.com/gpustack/gpustack&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;User guide: &lt;a href="https://docs.gpustack.ai" rel="noopener noreferrer"&gt;https://docs.gpustack.ai&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why GPUStack?
&lt;/h2&gt;

&lt;p&gt;Today, organizations who want to host LLMs on a cluster of GPU servers have to do a lot of work to integrate a complex software stack. By using GPUStack, organizations no longer need to worry about cluster management, GPU optimization, LLM interference engines, usage and metering, user management, API access, and dashboard UI. GPUStack is a complete software platform for building your own LLM-as-a-Service (LLMaaS).&lt;/p&gt;

&lt;p&gt;As the following figure illustrates, the admin deploys models into GPUStack from a repository like HuggingFace, and then developers can connect to GPUStack to use these models in their applications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgpustack.ai%2Fwp-content%2Fuploads%2F2024%2F07%2Fllmaas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgpustack.ai%2Fwp-content%2Fuploads%2F2024%2F07%2Fllmaas.png" alt="img"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key features of GPUStack
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GPU cluster setup and resource aggregation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GPUStack aggregates all GPU resources within a cluster. It is designed to support all GPU vendors, including Nvidia, Apple, AMD, Intel, Qualcomm, and others. GPUStack is compatible with a laptops, desktops, workstations, and servers running MacOS, Windows, and Linux.&lt;/p&gt;

&lt;p&gt;The initial release of GPUStack supports Windows PCs and Linux servers with Nvidia graphics cards, and Apple Macs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployment and Inference for Models&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GPUStack supports distributed deployment and inference of LLMs across a cluster of GPU machines.&lt;/p&gt;

&lt;p&gt;GPUStack selects the best inference engine for running the given LLM on the given GPU. The first LLM inference engine supported by GPUStack is LLaMA.cpp, which allows GPUStack to support GGUF models from Hugging Face and all models listed in the Ollama library (&lt;a href="https://ollama.com/library" rel="noopener noreferrer"&gt;ollama.com/library&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;You can run any model on GPUStack by first converting it to GGUF format and uploading it to Hugging Face or Ollama library.&lt;/p&gt;

&lt;p&gt;Support of other inference engines, such as vLLM, is on our roadmap and will be provided in the future.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; GPUStack will automatically schedule the model you select to run on machines with appropriate resources, relieving you of manual intervention. If you want to assess the resource consumption of your chosen model, you can use our GGUF Parser project: &lt;a href="https://github.com/gpustack/gguf-parser-go" rel="noopener noreferrer"&gt;https://github.com/gpustack/gguf-parser-go&lt;/a&gt;. We intend to provide more detailed tutorials in the future.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Although GPU acceleration is recommended for inference, we also support CPU inference, though the performance isn't as good as GPU. Alternatively, using a mix of GPU and CPU for inference can maximize resource utilization, which is particularly useful in edge or resource-constrained environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Easy integration with your applications&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GPUStack offers OpenAI-compatible APIs and provides an LLM playground along with API keys. The playground enables AI developers to experiment with and customize your LLMs, and seamlessly integrate them into AI-enabled applications.&lt;/p&gt;

&lt;p&gt;Additionally, you can use the metrics GPUStack provides to understand how your AI applications utilize various LLMs. This helps administrators manage GPU resource consumption effectively.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observability metrics for GPUs and LLMs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GPUStack provides comprehensive metrics performance, utilization, and status monitoring.&lt;/p&gt;

&lt;p&gt;For GPUs, administrators can use GPUStack to monitor real-time resource utilization and system status. Based on these metrics:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Administrators perform scaling, optimization, and other maintenance operations.&lt;/li&gt;
&lt;li&gt;GPUStack adjusts its model scheduling algorithm.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For LLMs, developers can use GPUStack to access metrics like token throughput, token usage, and API request throughput. These metrics help developers evaluate model performance and optimize their applications. GPUStack plans to support auto-scaling based on these inference performance metrics in future releases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authentication and access control&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GPUStack also provides authentication and role-based access control (RBAC) for enterprises. Users on the platform can have either admin or regular user roles. This guarantees that only authorized administrators can deploy and manage LLMs and that only authorized developers can utilize them.&lt;/p&gt;

&lt;h2&gt;
  
  
  GPUStack Use Cases
&lt;/h2&gt;

&lt;p&gt;GPUStack unlocks a world of possibilities for running LLMs on any GPU vendors. Here are just a few examples of what you can achieve with GPUStack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aggregate existing MacBooks, Windows PCs, and other GPU resources to offer a low-cost LLMaaS for a development team.&lt;/li&gt;
&lt;li&gt;In limited resource environments, aggregate multiple edge nodes to provide LLMaaS on CPU resources.&lt;/li&gt;
&lt;li&gt;Create your own enterprise-wide LLMaaS in your own data center for highly sensitive workloads that cannot be hosted in a cloud.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started with GPUStack
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Linux or MacOS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GPUStack provides a script to install it as a service on systemd or launchd based systems. To install GPUStack using this method, execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sfL&lt;/span&gt; https://get.gpustack.ai | sh -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you have deployed and started the GPUStack server, which serves as the first worker node. You can access the GPUStack page via &lt;a href="http://myserver" rel="noopener noreferrer"&gt;http://myserver&lt;/a&gt; (Replace with the IP address or domain of the host you installed)&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Log in to GPUStack with username &lt;code&gt;admin&lt;/code&gt; and the default password. You can run the following command to get the password for the default setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; /var/lib/gpustack/initial_admin_password
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To add additional worker nodes and form a GPUStack cluster, please run the following command on each worker node:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sfL&lt;/span&gt; https://get.gpustack.ai | sh - &lt;span class="nt"&gt;--server-url&lt;/span&gt; http://myserver &lt;span class="nt"&gt;--token&lt;/span&gt; mytoken
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;strong&gt;&lt;code&gt;http://myserver&lt;/code&gt;&lt;/strong&gt; with your GPUStack server URL and &lt;strong&gt;&lt;code&gt;mytoken&lt;/code&gt;&lt;/strong&gt; with your secret token for adding workers. To retrieve the token in the default setup from the GPUStack server, use the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; /var/lib/gpustack/token
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or follow the instructions on GPUStack to add workers:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgpustack.ai%2Fwp-content%2Fuploads%2F2024%2F07%2Fadd-worker.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgpustack.ai%2Fwp-content%2Fuploads%2F2024%2F07%2Fadd-worker.png" alt="img"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Windows&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Run PowerShell as administrator, then run the following command to install GPUStack:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Invoke-Expression&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Invoke-WebRequest&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://get.gpustack.ai"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-UseBasicParsing&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Content&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can access the GPUStack page via &lt;a href="http://myserver" rel="noopener noreferrer"&gt;http://myserver&lt;/a&gt; (Replace with the IP address or domain of the host you installed)&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Log in to GPUStack with username &lt;code&gt;admin&lt;/code&gt; and the default password. You can run the following command to get the password for the default setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Get-Content&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Join-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$&lt;/span&gt;&lt;span class="nn"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nv"&gt;APPDATA&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ChildPath&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gpustack\initial_admin_password"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Raw&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Optionally, you can add extra workers to form a GPUStack cluster by running the following command on other nodes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Invoke-Expression&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;amp; { &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Invoke-WebRequest&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://get.gpustack.ai"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-UseBasicParsing&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;.Content) } -ServerURL http://myserver -Token mytoken"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the default setup, you can run the following to get the token used for adding workers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Get-Content&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Join-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$&lt;/span&gt;&lt;span class="nn"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nv"&gt;APPDATA&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ChildPath&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gpustack\token"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Raw&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For other installation scenarios, please refer to our installation documentation at: &lt;a href="https://gpustack.github.io/docs/quickstart" rel="noopener noreferrer"&gt;https://docs.gpustack.ai/docs/quickstart&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Serving LLMs
&lt;/h3&gt;

&lt;p&gt;As an LLM administrator, you can log in to GPUStack as the default system admin, navigate to &lt;strong&gt;&lt;code&gt;Resources&lt;/code&gt;&lt;/strong&gt; to monitor your GPU status and capacities, and then go to &lt;strong&gt;&lt;code&gt;Models&lt;/code&gt;&lt;/strong&gt;  to deploy any open-source LLM into the GPUStack cluster. This enables you to provide these LLMs to regular users for integration into their applications. This approach helps you to efficiently utilize your existing resources and deliver stable LLM services for various needs and scenarios.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access GPUStack to deploy the LLMs you need. Choose models from Hugging Face (only GGUF format is currently supported) or Ollama Library, download them to your local environment, and run the LLMs:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgpustack.ai%2Fwp-content%2Fuploads%2F2024%2F07%2Fdeploy-model.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgpustack.ai%2Fwp-content%2Fuploads%2F2024%2F07%2Fdeploy-model.png" alt="img"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPUStack will automatically schedule the model to run on the appropriate Worker:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgpustack.ai%2Fwp-content%2Fuploads%2F2024%2F07%2Fmodel-list.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgpustack.ai%2Fwp-content%2Fuploads%2F2024%2F07%2Fmodel-list.png" alt="img"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can manage and maintain LLMs by checking API requests, token consumption, token throughput, resource utilization status, and more. This helps you decide whether to scale up or upgrade LLMs to ensure service stability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgpustack.ai%2Fwp-content%2Fuploads%2F2024%2F07%2Fdashboard.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgpustack.ai%2Fwp-content%2Fuploads%2F2024%2F07%2Fdashboard.png" alt="img"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Integrating with your applications
&lt;/h3&gt;

&lt;p&gt;As an AI application developer, you can log in to GPUStack as a regular user and navigate to &lt;strong&gt;&lt;code&gt;Playground&lt;/code&gt;&lt;/strong&gt; from the menu. Here, you can interact with the LLM using the UI playground.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgpustack.ai%2Fwp-content%2Fuploads%2F2024%2F07%2Fplayground.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgpustack.ai%2Fwp-content%2Fuploads%2F2024%2F07%2Fplayground.png" alt="img"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, visit &lt;strong&gt;&lt;code&gt;API Keys&lt;/code&gt;&lt;/strong&gt; to generate and save your API key. Return to &lt;strong&gt;&lt;code&gt;Playground&lt;/code&gt;&lt;/strong&gt; to customize your LLM by adjusting the system prompt, adding few-shot learning examples, or resizing prompt parameters. When you're done, click &lt;strong&gt;&lt;code&gt;View Code&lt;/code&gt;&lt;/strong&gt; and select your preferred code format (curl, Python, Node.js) along with the API key. Use this code in your applications to enable communication with your private LLMs.&lt;/p&gt;

&lt;p&gt;you can access the OpenAI-compatible API now, for example, use curl as the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;GPUSTACK_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;myapikey
curl http://myserver/v1-openai/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$GPUSTACK_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "llama3",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "Hello!"
      }
    ],
    "stream": true
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Join Our Community
&lt;/h2&gt;

&lt;p&gt;Please find more information about GPUStack at: &lt;a href="https://gpustack.ai" rel="noopener noreferrer"&gt;https://gpustack.ai&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you encounter any issues or have suggestions for GPUStack, feel free to join our &lt;a href="https://discord.gg/VXYJzuaqwD" rel="noopener noreferrer"&gt;Community&lt;/a&gt; for support from the GPUStack team and to connect with fellow users globally.&lt;/p&gt;

&lt;p&gt;We are actively enhancing the GPUStack project and plan to introduce new features in the near future, including support for multimodal models, additional accelerators like AMD ROCm or Intel oneAPI, and more inference engines. Before getting started, we encourage you to follow and star our project on GitHub at &lt;a href="https://github.com/gpustack/gpustack" rel="noopener noreferrer"&gt;gpustack/gpustack&lt;/a&gt; to receive instant notifications about all future releases. We welcome your contributions to the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  About Us
&lt;/h2&gt;

&lt;p&gt;GPUStack is brought to you by Seal, Inc., a team dedicated to enabling AI access for all. Our mission is to enable enterprises to use AI to conduct their business, and GPUStack is a significant step towards achieving that goal.&lt;/p&gt;

&lt;p&gt;Quickly build your own LLMaaS platform with GPUStack! Start experiencing the ease of creating GPU clusters locally, running and using LLMs, and integrating them into your applications.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>news</category>
      <category>genai</category>
    </item>
    <item>
      <title>How to Enhance Developer Productivity with Platform Engineering</title>
      <dc:creator>Seal</dc:creator>
      <pubDate>Wed, 24 Apr 2024 15:07:00 +0000</pubDate>
      <link>https://dev.to/seal-software/how-to-enhance-developer-productivity-with-platform-engineering-571k</link>
      <guid>https://dev.to/seal-software/how-to-enhance-developer-productivity-with-platform-engineering-571k</guid>
      <description>&lt;p&gt;As the cloud computing, and GenAI technologies continue to evolve, the software industry faces increasingly fierce competition. Simultaneously, software development has become more complex. Developers need to acquire more knowledge and skills while dealing with additional problems and risks.&lt;/p&gt;

&lt;p&gt;To address these challenges, development teams must deliver valuable software products quickly, efficiently, and &lt;a href="https://www.seal.io/resource/blog/6-strategies-optimize-k8s-cost" rel="noopener noreferrer"&gt;cost-effectively&lt;/a&gt;. They must also approach problem-solving with simplicity, optimization, and innovation. This is precisely why discussions around development efficiency have become a hot topic.&lt;/p&gt;

&lt;p&gt;In this article, we will explore the definition and challenges of developer productivity, as well as how platform engineering can help organizations improve their efficiency.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Developer Productivity?
&lt;/h2&gt;

&lt;p&gt;Developer productivity is defined as the ability of a development team to deliver higher-quality, more reliable, and sustainable business value in a more efficient manner. This is a critical focus area for both emerging technology companies and traditional software enterprises because it directly impacts competitiveness and innovation.&lt;/p&gt;

&lt;p&gt;As the market changes rapidly, organizations that fail to adapt their development efficiency risk falling behind competitors and eventually being phased out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges in Improving Developer Productivity
&lt;/h2&gt;

&lt;p&gt;However, enhancing developer productivity is a challenging endeavor. With the continuous growth in software scale and complexity, expanding development team sizes, and accelerating business requirements and market changes, the path to improving development efficiency faces several challenges:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Technical Complexity:&lt;/strong&gt; As technology evolves, the technical complexity of products increases, thereby raising the technical bar for development. Modern software architectures consist of multiple layers, technologies, and services, demanding end-to-end understanding from developers. This complexity adds &lt;a href="https://www.seal.io/resource/blog/reduce-cognitive-load" rel="noopener noreferrer"&gt;cognitive load&lt;/a&gt; and increases the risk of errors and inefficiencies. Overcoming technical complexity requires substantial resource investment to ensure both efficiency and quality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Project Management Difficulty:&lt;/strong&gt; The complexity and scale of projects inevitably lead to greater project management challenges. Enterprises require robust project management systems and tools to coordinate and manage the activities of various development teams and project timelines. Additionally, fostering efficient teamwork and communication is crucial to ensuring projects are completed on time and with high quality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Technical Debt:&lt;/strong&gt; Many organizations encounter difficulties in adopting DevOps, cloud-native technologies, and other advanced approaches due to the challenges posed by legacy systems and outdated practices. These difficulties result in technical debt and skill gaps, which in turn impede the delivery of software at a faster and more optimal pace.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Lack of Standardization:&lt;/strong&gt; Enterprises often have multiple development teams using different tools and configurations for their applications and infrastructure. This lack of standardization creates silos and inconsistencies, making collaboration, sharing best practices, and ensuring quality and security more challenging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Low Productivity:&lt;/strong&gt; Developers spend significant time on non-value-added tasks such as environment setup, tool configuration, and debugging. This reduces their productivity and focus on delivering customer value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Lack of Continuous Improvement and Feedback Loop:&lt;/strong&gt;The improvement of development efficiency is a long-term project that requires continuous optimization. Without effective mechanisms and a culture of improvement and feedback within the organization, it is difficult to achieve sustained development efficiency gains.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Platform Engineering Boosts Developer Productivity
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.seal.io/resource/blog/platform-engineering-101" rel="noopener noreferrer"&gt;Platform engineering&lt;/a&gt; is a systematic approach aimed at improving software development efficiency and quality. By building reusable, scalable software platforms, platform engineering provides development teams with standardized development frameworks and tools. It optimizes collaboration and communication, enhances software testability and maintainability, and supports rapid iteration and innovation. Let's explore these aspects in more details:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Standardized Development Frameworks and Tools:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Platform engineering offers standardized development frameworks and tools, including code libraries, components, and templates. These enable teams to develop high-quality software more quickly, reducing developers' workload and time costs.&lt;/p&gt;

&lt;p&gt;Consistent frameworks and tools ensure everyone follows the same best practices and standards, improving efficiency, reducing errors, and minimizing technical disparities among team members. For specific industries, teams can leverage existing platforms and components without redeveloping all infrastructure, allowing developers to focus on core business logic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Optimized Team Collaboration and Communication:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Platform engineering provides standardized development processes and specifications, unifying team development methods and approaches. This reduces communication and coordination costs, enhancing collaboration efficiency.&lt;/p&gt;

&lt;p&gt;Centralized communication and coordination platforms (such as shared task lists, code repositories, documentation, and team discussions) allow developers to better understand each other's progress and challenges. This facilitates quick collaboration and issue resolution, ultimately improving team communication and efficiency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Improved Software Testability and Maintainability:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Platform engineering employs a range of techniques, including automated testing, code refactoring, and performance monitoring, with the objective of enhancing the testability and maintainability of software. This approach has the potential to reduce the burden on developers and the incidence of errors, thereby improving the efficiency, quality, and reliability of software development.&lt;/p&gt;

&lt;p&gt;Common code libraries and documentation provided by platform engineering help teams maintain and upgrade software effectively.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Support for Rapid Iteration and Innovation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The provision of reusable templates and components by platform engineering enables development teams to implement new ideas and features in a more expeditious manner. Furthermore, it facilitates rapid iteration and updates, thereby enabling businesses to gain a deeper understanding of user needs and behavior. This, in turn, enhances the user experience and market competitiveness.&lt;/p&gt;

&lt;p&gt;Additionally, platform engineering enhances traceability and transparency in the development process. Developers gain clearer insights into their tasks and goals, as well as the overall development status. By enabling rapid innovation and progress within teams, platform engineering facilitates enhanced development efficiency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In conclusion, platform engineering offers several advantages for improving developer productivity and is a crucial approach for businesses seeking to enhance their development processes. As digital transformation continues, it can be expected that platform engineering will play an increasingly important role in enterprise development. In the future, platform engineering will continue to evolve and find applications in various areas, including multi-cloud environments, automation, and AI technology integration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/seal-io/walrus" rel="noopener noreferrer"&gt;Walrus&lt;/a&gt; is an open-source application management platform based on IaC, that helps platform engineers build golden paths for developers and empowers developers with self-service capabilities. Its &lt;a href="https://seal-io.github.io/docs/operation/resource-definition" rel="noopener noreferrer"&gt;abstraction layers&lt;/a&gt; allow developers to leverage standardized and reusable &lt;a href="https://seal-io.github.io/docs/operation/template" rel="noopener noreferrer"&gt;IaC templates&lt;/a&gt; for self-service resource provisioning and deployments without being infrastructure expertise.&lt;/p&gt;

&lt;p&gt;If you want to discuss more with us, welcome to join &lt;a href="https://discord.gg/fXZUKK2baF" rel="noopener noreferrer"&gt;Seal Discord&lt;/a&gt; to share your thoughts and feedback.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>devops</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>Platform as a Product: Why do we need?</title>
      <dc:creator>Seal</dc:creator>
      <pubDate>Thu, 18 Apr 2024 15:00:00 +0000</pubDate>
      <link>https://dev.to/seal-software/platform-as-a-product-why-do-we-need-28dd</link>
      <guid>https://dev.to/seal-software/platform-as-a-product-why-do-we-need-28dd</guid>
      <description>&lt;p&gt;In today's fast-paced digital age, businesses are constantly seeking innovative ways to deliver value and drive growth. The concept of Platform as a Product (PaaP) has gained widespread attention.&lt;/p&gt;

&lt;p&gt;With the advancement of technology, traditional product-centric approaches are being replaced by more comprehensive, platform-based strategies. This article aims to delve into the concept of Platform as a Product, exploring its meaning, characteristics, advantages, and challenges.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Platform as a Product?
&lt;/h2&gt;

&lt;p&gt;Platform as a Product refers to a business model where a company creates and provides a platform that allows various stakeholders, including developers, third-party providers, and end-users, to build, customize, and distribute their own products or services. Unlike traditional products designed for end-users, PaaP serves as a foundation upon which others can develop and deliver their own products.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Characteristics of Platform as a Product
&lt;/h2&gt;

&lt;p&gt;Platform as a Product represents a shift in how businesses create value and interact with developers, partners, and users. By leveraging the characteristics of Platform as a Product, businesses can gain a competitive edge. Here, we summarize the five key characteristics of Platform as a Product.&lt;/p&gt;

&lt;h3&gt;
  
  
  Infrastructure and Technology Stack
&lt;/h3&gt;

&lt;p&gt;At the core of Platform as a Product is a robust infrastructure and technology stack. This includes the hardware, software frameworks, APIs, and developer tools that constitute the foundation for building and operating the platform.&lt;/p&gt;

&lt;p&gt;The infrastructure must be scalable, reliable, and capable of handling the diverse and growing needs of a varied user base and ecosystem. The technology stack facilitates seamless integration, enabling developers to leverage existing platform features and providing a consistent and secure environment for application development and deployment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Open and Collaboration
&lt;/h3&gt;

&lt;p&gt;One of the key features of Platform as a Product is that it is open to external developers, partners, and users. Open fosters collaboration, knowledge sharing, and innovation within the platform ecosystem. Companies provide accessible APIs, SDKs, and developer communities and encourage participation and contribution. By embracing open, the platform nurtures a vibrant ecosystem where developers and partners can build on top of the platform, extend its functionalities, and create value-added products and services. Collaboration within the ecosystem amplifies the platform's overall value proposition and enhances its competitive advantage.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0mvl5rszcvdr67utn821.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0mvl5rszcvdr67utn821.png" alt="collaboration" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Scalability and Flexibility
&lt;/h3&gt;

&lt;p&gt;Scalability is also a key characteristic of a successful PaaP model. The platform's design must be able to handle exponential growth, accommodate an increasing number of users, and support a wide range of applications and services. Scalability ensures that the platform can meet the evolving needs of its user base without impacting performance or user experience.&lt;/p&gt;

&lt;p&gt;Flexibility is another important aspect of PaaP. The platform should offer customization options, allowing developers to tailor the platform's functionalities according to their specific requirements. Customization enhances the platform's appeal, improves user satisfaction, and supports the creation of unique applications and services that cater to different needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resources and Support for Developers
&lt;/h3&gt;

&lt;p&gt;To attract developers, successful PaaP models provide comprehensive developer empowerment and support. This includes documentation, tutorials, sample code, and developer communities that facilitate knowledge exchange, troubleshooting, and collaboration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bmyvjvjvkcjnrpgg9yx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bmyvjvjvkcjnrpgg9yx.png" alt="resources" width="800" height="474"&gt;&lt;/a&gt;&lt;br&gt;
Organizations that prioritize providing resources and support for developers create an atmosphere where developers can thrive, experiment, and innovate. By providing the necessary resources and tools, the platform can attract top talent, accelerate development cycles, and drive ecosystem growth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advantages and Potential of Platform as a Product
&lt;/h2&gt;

&lt;p&gt;The adoption of the PaaP model changes the way businesses create value, attract developers and other stakeholders, and provide innovative solutions. By adopting the PaaP model, businesses stand to gain 3 major advantages and potential.&lt;/p&gt;

&lt;p&gt;One of the advantages that PaaP brings to businesses is tha*&lt;em&gt;t it fosters accelerated innovation&lt;/em&gt;*. By providing platform infrastructure, tools, and APIs, developers and partners can focus on building innovative products and services. This approach allows developers to leverage existing platform features and reduces the time and effort required to develop core functionalities. As a result, PaaP enables companies to quickly bring new products to market, iterate based on user feedback, and maintain a competitive edge.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxwj8h90rkj8y9wrn5op.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxwj8h90rkj8y9wrn5op.png" alt="innovation" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A platform as a product has the ability to attract a diverse array of developers, partners, and users, thereby &lt;strong&gt;creating a vibrant ecosystem&lt;/strong&gt;. These ecosystems can foster collaboration, knowledge exchange, and the creation of value-added services. By opening their platforms to external contributors, companies can harvest and leverage a broader range of talent, ideas, and resources. The expanded ecosystem not only enhances the platform's functionalities but also opens new revenue streams, drives user engagement, and fosters community awareness.&lt;/p&gt;

&lt;p&gt;Platform as a Product aims to deliver an excellent user experience. By integrating various services, features, and applications into a unified platform, users can access a comprehensive solution that simplifies their interactions, streamlines processes, and reduces friction. Through seamless integration, intuitive interfaces, and personalized experiences, &lt;strong&gt;PaaP improves user satisfaction and loyalty&lt;/strong&gt;. Additionally, as the ecosystem expands, users benefit from the continuous innovation and enrichment brought about by the contributions of developers and partners within the platform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2y2l8phdbj2clhstbpk0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2y2l8phdbj2clhstbpk0.png" alt="user-satisfaction" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges Faced by Platform as a Product
&lt;/h2&gt;

&lt;p&gt;While PaaP models offer many benefits and transformative opportunities for organizations, they also present unique challenges that must be strategically addressed. Implementing and managing a successful PaaP requires careful planning, continuous adjustment, and a customer-centric approach.&lt;/p&gt;

&lt;p&gt;PaaP platforms typically &lt;strong&gt;involve complex technical architectures, integration challenges, and scalability requirements&lt;/strong&gt;. Building and maintaining a robust and scalable infrastructure requires substantial resources and expertise. Companies need to invest in skilled technical teams, adopt agile development methodologies, and leverage cloud-based technologies to successfully overcome technical complexity. Collaborating with developers and partners can also help address technical challenges and ensure compatibility and interoperability within the ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F82su7dnn9pke9i04kvbh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F82su7dnn9pke9i04kvbh.png" alt="expertise" width="800" height="474"&gt;&lt;/a&gt;&lt;br&gt;
Another major challenge for PaaP is &lt;strong&gt;establishing effective governance and regulatory mechanisms&lt;/strong&gt;. As platforms open to external developers, partners, and users, ensuring fair competition, content quality, data privacy, and ethical standards becomes paramount. Companies must establish policies, guidelines, and mechanisms to effectively monitor and regulate the platform ecosystem. This includes content review, dispute resolution, enforcing compliance, and maintaining user trust. Therefore, striking a balance between platform openness and governance of responsibilities is a key challenge to be addressed.&lt;/p&gt;

&lt;p&gt;As PaaP becomes more popular, competition among platform providers will intensify. Businesses wanting to stand out in the industry need to attract and retain users and developers. Establishing a strong brand, providing an excellent user experience, and offering comprehensive developer support are basic strategies for maintaining a leading position, so &lt;strong&gt;businesses face the challenge of creating platform stickiness&lt;/strong&gt;. Businesses can try to cultivate a vibrant ecosystem, foster loyalty through incentives or rewards, and continuously innovate to provide new valuable features.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Platform as a Product has emerged as a transformative business model. By creating a foundation on which developers and users can build their own products and services, PaaP fosters innovation, ecosystem expansion, and enhanced user experience. While challenges exist, the benefits of PaaP are undeniable, and these benefits bring advantages to businesses, making PaaP increasingly attractive to enterprises across various industries. With the continuous advancement of technology, we can expect the continued development and adoption of Platform as a Product, becoming a key driver of digital transformation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you are interested in Platform engineering, Welcome to our community:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Discord: &lt;a href="https://discord.gg/fXZUKK2baF" rel="noopener noreferrer"&gt;https://discord.gg/fXZUKK2baF&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Twitter/X: &lt;a href="https://twitter.com/Seal_io" rel="noopener noreferrer"&gt;https://twitter.com/Seal_io&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;LinkedIn: &lt;a href="https://www.linkedin.com/company/seal-io" rel="noopener noreferrer"&gt;https://www.linkedin.com/company/seal-io&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Youtube: &lt;a href="https://www.youtube.com/@Seal-io" rel="noopener noreferrer"&gt;https://www.youtube.com/@Seal-io&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>devops</category>
      <category>coding</category>
      <category>design</category>
    </item>
    <item>
      <title>Introducing Walrus: Streamline your Delivery with the Platform Engineering Approach</title>
      <dc:creator>Seal</dc:creator>
      <pubDate>Thu, 11 Jan 2024 15:00:00 +0000</pubDate>
      <link>https://dev.to/seal-software/introducing-walrus-streamline-your-delivery-with-the-platform-engineering-approach-5c0f</link>
      <guid>https://dev.to/seal-software/introducing-walrus-streamline-your-delivery-with-the-platform-engineering-approach-5c0f</guid>
      <description>&lt;p&gt;The implementation of DevOps is facing challenges due to the increasing complexity of infrastructure. It can be tough for developers to learn non-development related knowledge, which adds to their cognitive load. As a result, the Infra/DevOps teams are constantly flooded with tickets and messages.&lt;/p&gt;

&lt;p&gt;It's time for change! In this article, we will dive into how Walrus streamlines your software delivery with the platform engineering approach that makes developers happy and DevOps happier.&lt;/p&gt;

&lt;h2&gt;
  
  
  Our Goal: Optimize DevOps for Developers and IT Operators
&lt;/h2&gt;

&lt;p&gt;Seal hosts two fully open-source projects: &lt;a href="https://github.com/seal-io/walrus" rel="noopener noreferrer"&gt;Walrus&lt;/a&gt;, an application management platform, and &lt;a href="https://github.com/seal-io/appilot" rel="noopener noreferrer"&gt;Appilot&lt;/a&gt;, an AI agent for DevOps. Our goal with these projects is to make DevOps and developers' lives easier:&lt;/p&gt;

&lt;p&gt;For developers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Focus on application development and business demands&lt;/li&gt;
&lt;li&gt;No need to navigate the complexities of Kubernetes and infrastructure&lt;/li&gt;
&lt;li&gt;Configure once and deploy applications polymorphically on various infrastructures&lt;/li&gt;
&lt;li&gt;Automate to create, release, start/stop environments dynamically&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For IT Operators&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable flexible orchestration of infrastructure capabilities, adhere to best practices, and ensure security compliance&lt;/li&gt;
&lt;li&gt;Eliminate tickets and enable self-service for developers&lt;/li&gt;
&lt;li&gt;Obtain a comprehensive view of the entire application system for efficient management and troubleshooting&lt;/li&gt;
&lt;li&gt;Optimize resource utilization and reduce costs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How IT operators and developers collaborate with Walrus&lt;br&gt;
Self-service infrastructure automation is the key to successful platform engineering. With the separation of concerns between IT operators and developers, Walrus's Resource Definition enables automated infrastructure deployment. Developers claim the resource they want in their applications system (MySQL database, Redis cache, etc.), and IT operators define how these resources should be provisioned and configured (MySQL helm charts, AWS RDS service, etc.) in different environments based on different infrastructures.&lt;/p&gt;

&lt;p&gt;In today's tech landscape, the collaboration between developers and operators requires intricate coordination. This often leads to a series of manual processes that can hinder the pace of development. Many organizations have turned to the creation of bespoke pipelines or ticketing systems for infrastructure deployments. However, these solutions only alleviate some of the challenges without fully eliminating the need for manual processes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is where Resource Definition steps in, offering a unique solution: IT operators can set up Infrastructure as Code (IaC) templates (such as Terraform modules and Helm charts) that developers can leverage for self-service resource provisioning and deployments.&lt;/strong&gt; Furthermore, Resource Definition empowers operators to establish and enforce corporate policies, dictating the usage, configuration, and deployment permissions of cloud resources. &lt;/p&gt;

&lt;p&gt;Consequently, developers are freed from the intricacies of deploying suitable infrastructure for their applications, enabling them to concentrate on coding.&lt;/p&gt;

&lt;p&gt;For example, an operator who sets up a Resource Definition for deploying MySQL databases that aligns with their organization’s standards: a containerized MySQL in development environment and a HA MySQL database in production environment. The operator can mandate that the IaC templates used and parameters configured based environment type, label and other attributes. Once the Resource Definition is in place, developers can deploy MySQL databases in different modes without concerning themselves with the specifics of their deployment or their configuration accuracy. &lt;/p&gt;

&lt;p&gt;This division of responsibilities allows operator teams to extend their support to developer teams more effectively while ensuring that applications are deployed in line with organizational policies.&lt;/p&gt;

&lt;p&gt;Here is the comparison between without and with the Walrus application model:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FAleegra%2Fseallogo%2Fmain%2Fimgcomparision_%25E7%2594%25BB%25E6%259D%25BF%25201.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FAleegra%2Fseallogo%2Fmain%2Fimgcomparision_%25E7%2594%25BB%25E6%259D%25BF%25201.png" alt="comparison"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Our commitment is backed by the fact that platform engineering has been listed as one of the top 10 technology trends by Gartner for two consecutive years, 2023 and 2024. It fundamentally reimagines how developers engage with technology and how organizations shape their DevOps workflows.&lt;/p&gt;

&lt;p&gt;Walrus dedicates itself to utilizing the platform engineering approach to simplify application delivery and declutter the cognitive load for developers. Plus, with just a one-line command, Walrus is incredibly easy to install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo docker run -d --privileged --restart=always -p 80:80 -p 443:443 --name walrus sealio/walrus:v0.4.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Give it a try and welcome to our community:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Discord: &lt;a href="https://discord.gg/fXZUKK2baF" rel="noopener noreferrer"&gt;https://discord.gg/fXZUKK2baF&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Twitter/X: &lt;a href="https://twitter.com/Seal_io" rel="noopener noreferrer"&gt;https://twitter.com/Seal_io&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Linkedin: &lt;a href="https://www.linkedin.com/company/seal-io" rel="noopener noreferrer"&gt;https://www.linkedin.com/company/seal-io&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Youtube: &lt;a href="https://www.youtube.com/@Seal-io" rel="noopener noreferrer"&gt;https://www.youtube.com/@Seal-io&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Switching from Terraform: Integrate with OpenTofu in Walrus</title>
      <dc:creator>Seal</dc:creator>
      <pubDate>Thu, 28 Dec 2023 15:21:00 +0000</pubDate>
      <link>https://dev.to/seal-software/switching-from-terraform-integrate-with-opentofu-in-walrus-4dcn</link>
      <guid>https://dev.to/seal-software/switching-from-terraform-integrate-with-opentofu-in-walrus-4dcn</guid>
      <description>&lt;h2&gt;
  
  
  What is OpenTofu?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://opentofu.org/" rel="noopener noreferrer"&gt;OpenTofu&lt;/a&gt; is an open-source Infrastructure as Code (IaC) framework presented as an alternative to Terraform and managed by the Linux Foundation. It was developed in response to &lt;a href="https://www.hashicorp.com/blog/hashicorp-adopts-business-source-license" rel="noopener noreferrer"&gt;HashiCorp's decision&lt;/a&gt; to change Terraform's licensing from the Mozilla Public License v2.0 (MPLv2) to a Business Source License v1.1. The aim of OpenTofu is to offer a dependable and impartial option for infrastructure as code management, ensuring it remains truly open-source under a stable license.&lt;/p&gt;

&lt;p&gt;Under the guidance of the Linux Foundation, OpenTofu seamlessly replaces Terraform v1.6.x while ensuring complete backward compatibility with Terraform v1.5.x and its predecessors.&lt;/p&gt;

&lt;p&gt;Since its inception, it has instantly sparked considerable interest. As of the time of this writing, the OpenTofu project has over 16K GitHub stars, while the OpenTofu Manifesto project has over 36K GitHub stars.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integrating OpenTofu in Walrus
&lt;/h2&gt;

&lt;p&gt;By default, &lt;a href="https://github.com/seal-io/walrus" rel="noopener noreferrer"&gt;Walrus&lt;/a&gt; uses Terraform as its deployment engine. Since OpenTofu is a drop-in replacement for Terraform, you can seamlessly set up OpenTofu in the Walrus system without any code changes.&lt;/p&gt;

&lt;p&gt;Start by following the &lt;a href="https://seal-io.github.io/docs/quickstart" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt; guide to deploy the Walrus Server and set up a container service in a Kubernetes cluster.&lt;/p&gt;

&lt;p&gt;First, let's check the deployment log for the service.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa2wv317km09rozfhxk2b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa2wv317km09rozfhxk2b.png" alt="deployment-log" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's evident that the deployment was executed using Terraform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7ipwur7l37i722cfqhcv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7ipwur7l37i722cfqhcv.png" alt="deployment-details" width="800" height="635"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, let's switch to OpenTofu by following these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on &lt;code&gt;System Settings&lt;/code&gt; in the left navigation menu.&lt;/li&gt;
&lt;li&gt;Click on the &lt;code&gt;Deployment Management&lt;/code&gt; tab.&lt;/li&gt;
&lt;li&gt;Press the edit button next to &lt;code&gt;Basic Settings&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Change the &lt;code&gt;Deployer Image&lt;/code&gt; to &lt;code&gt;sealio/opentofu-deployer:v1.6.0-beta5-1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Click the Save button.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq7ayce4p1tbg4tm1l4qh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq7ayce4p1tbg4tm1l4qh.png" alt="basic-settings" width="800" height="522"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it! Walrus will now use OpenTofu as the deployment engine. Let's create another service by following these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on &lt;code&gt;Application Management&lt;/code&gt; in the left navigation menu.&lt;/li&gt;
&lt;li&gt;Enter the &lt;code&gt;dev&lt;/code&gt; environment detail page by clicking on it.&lt;/li&gt;
&lt;li&gt;Press the &lt;code&gt;New&lt;/code&gt; button and select &lt;code&gt;Service&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Enter the name &lt;code&gt;myapp-tofu&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Choose the &lt;code&gt;containerservice&lt;/code&gt; template.&lt;/li&gt;
&lt;li&gt;Fill in &lt;code&gt;nginx&lt;/code&gt; in the &lt;code&gt;Image&lt;/code&gt; field.&lt;/li&gt;
&lt;li&gt;Click Save and Deploy.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After the deployment finishes, let's take a look at the deployment log again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiv7igrzkdam3bjrelrmh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiv7igrzkdam3bjrelrmh.png" alt="opentofu-deployment" width="800" height="670"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This instance showcases OpenTofu's presence in the log. Walrus executed the deployment using OpenTofu. However, in the CLI arguments, as depicted in the image, terraform is aliased to tofu.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;At the time of writing this article, OpenTofu is gearing up for &lt;a href="https://opentofu.org/blog/opentofu-release-candidate-is-out" rel="noopener noreferrer"&gt;its first stable release&lt;/a&gt; set for the upcoming month. The switch from Terraform to OpenTofu for end-users is not about adopting a new name that sounds more fragile  :-). Rather, we're poised to witness innovative solutions from OpenTofu addressing tangible challenges in our landscape.&lt;/p&gt;

&lt;h3&gt;
  
  
  Welcome to Seal community!
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Discord: &lt;a href="https://discord.gg/fXZUKK2baF" rel="noopener noreferrer"&gt;https://discord.gg/fXZUKK2baF&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Twitter: &lt;a href="https://twitter.com/Seal_io" rel="noopener noreferrer"&gt;https://twitter.com/Seal_io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/company/seal-io" rel="noopener noreferrer"&gt;https://www.linkedin.com/company/seal-io&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>infrastructureascode</category>
      <category>tutorial</category>
      <category>terraform</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
