<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="367929" data-post-id="367929">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="josevalim" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/120/1787_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  josevalim
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Elixir</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Great questions!</p>
<aside class="quote no-group" data-username="kj123" data-post="41" data-topic="70674">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/k/49beb7/48.png" class="avatar"> kj123:</div>
<blockquote>
<p>Ability to have Claude Desktop read the contents of the Liveview component in the browser —&gt; Browser MCPs already exist to fulfill this need.</p>
</blockquote>
</aside>
<p>That particular example had the MCP tell the precise LiveView active on the page, which is not as straight-forward to get from a browser MCP (doable but then you had to write your own JS traversal scripts). This reveals the two important parts about Tidewave: it runs inside your application, so it has access to everything your application does, and it is fine-tuned for your specific web framework.</p>
<p>For example, one of the tools Tidewave offers is access to the database. Surely you can do this with another MCP, but your app already has access to the database, with all of the credentials and configs you would need, and that saves you work. Plus the tool has the ability to query your database using SQL or using your language’s query builder. And this applies to everything: access to background queue? Check, Access to the APIs you talk to? Check. Most of it is powered by the project_eval tool, where we evaluate code within your running application instance.</p>
<p>Another tool that we offer is to get the package documentation. Many people are asking for llms.txt (which I agree are useful) but, when working on a project, all of the packages and their documentations are already available on your machine, with the exact version your application uses. This also applies to getting the location where packages are installed or the file+line of where modules and functions are defined. Those are all things that could be done separately but, because Tidewave is literally running within your web app, we can ask the language runtime/compiler, which will just do a better/faster job.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="367929" data-batch-url="/posts/batch_likers">
                        15
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/tidewave-has-just-been-announced-by-jose-valim/70674/42">Post #41</a>
	                </div>
	            </div>
              <div id="likers-container-367929" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="367929"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #41"></div>
  </section>
</div>
    <div class="postbit" id="369508" data-post-id="369508">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="natewallis" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  natewallis
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks for introducing TideWave, I am using it with a rails application and it definitely provides some nice context to the LLM.</p>
<p>One thing I have noticed when using MCP tooling with my LLM ( I am using Avante in NVIM ) is high token usage.  I wonder if this is Avante itself doing something that I don’t know about OR if that is the nature of offloading your AI development to your local machine ( by using MCP ) versus using a cloud based solution (e.g. Devin, Codex).</p>
<p>To be honest, I think MCP locally with an LLM provides some nice benefits in that the LLM can interface with your application.  For example, I recently used it to created records in my database that it could debug with, plus these were records that I could also observe and interact with.  I think this is nice compared to the cloud based black box experience that Devin and other tools provides.</p>
<p>However, I think the trade off is that with the increase local tooling, you end up with potentiall more input tokens and more expensive AI platform costs.  That said, I would expect compute costs to come down in the future, so this may only be temporary (still also might be misconfiguration of my nvim plugins).  I would be interested to hear anyone elses experience around this.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="369508" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/tidewave-has-just-been-announced-by-jose-valim/70674/43">Post #42</a>
	                </div>
	            </div>
              <div id="likers-container-369508" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="369508"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #42"></div>
  </section>
</div>
    <div class="postbit" id="369748" data-post-id="369748">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="natewallis" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  natewallis
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>So I ended up running a test for this and comparing the costs between a cloud based solution and an LLM connected to MCP tools in my local IDE.  Initially I thought there was a large cost discrepancy between running a cloud based solution like Devin and my local equivalent.  Quickly got to the bottom of that when I realised I was using the most expensive Claude model, after dropping back from opus to sonnet, the costs incurred are close enough to Devin to not be a concern. I also found the code quality generated with Claude to be better (it wrote tests off the bat) and tools like Devin could potentially incur ongoing costs (as it monitors comments on PRs) unless sessions are put to sleep.   No issue now with using MCP tools locally with an LLM, in fact I think they have a slight edge to cloud based equivalents.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="369748" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/tidewave-has-just-been-announced-by-jose-valim/70674/44">Post #43</a>
	                </div>
	            </div>
              <div id="likers-container-369748" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="369748"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #43"></div>
  </section>
</div>
    <div class="postbit" id="370893" data-post-id="370893">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Rich_Morin" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Rich_Morin/120/2020_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Rich_Morin
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>TL; DR:</p>
<p>Here, for discussion, are some speculative notions sparked by recent work by José Valim, Chris McCord, et al.</p>
<h1><a name="p-370893-background-1" class="anchor" href="#p-370893-background-1" aria-label="Heading link" rel="nofollow"></a>Background</h1>
<p>José has been shepherding Elixir’s set theoretic type system for a few years now and things appear to be proceeding quite smoothly (yay!). The current work concentrates on detecting (and warning programmers about) type conflicts found in code.</p>
<p>Unlike Dialyzer, no declarations are required; the facility analyzes the code itself. Although it attempts to handle all legal code, the type system project may issue deprecations as needed to handle corner cases.</p>
<p>More recently, José has announced <a href="https://tidewave.ai/" rel="noopener nofollow ugc">Tidewave</a>, an Elixir-friendly, open source LLM (etc) agent. Because Tidewave uses Model Context Protocol (<a href="https://modelcontextprotocol.io/introduction" rel="noopener nofollow ugc">MCP</a>), it can interoperate (to varying degrees ;-}) with a variety of  LLMs, text editors, etc. And, of course, it has access to the entire Elixir / Erlang toolbox (e.g., BEAM, Ecto, Phoenix, …)</p>
<p>Chris McCord has also been working on similar tooling. However, his approach uses <a href="https://en.wikipedia.org/wiki/Containerization_(computing)" rel="noopener nofollow ugc">containerization</a> (e.g., on <a href="https://fly.io/" rel="noopener nofollow ugc">Fly.io</a>), rather than the locally hosted approach taken by José. No matter; it’s all good…</p>
<h1><a name="p-370893-discussion-2" class="anchor" href="#p-370893-discussion-2" aria-label="Heading link" rel="nofollow"></a>Discussion</h1>
<p>My basic notion is that there is an opportunity to integrate these  (and other) efforts, collecting configuration and operational data and making it available to programmers in a more useful way.</p>
<h2><a name="p-370893-tidewave-llms-and-data-3" class="anchor" href="#p-370893-tidewave-llms-and-data-3" aria-label="Heading link" rel="nofollow"></a>Tidewave, LLMs, and data</h2>
<p>Tidewave leans heavily on LLMs, so let’s begin there. Although an LLM can digest many sorts of data, all data is not created equal (GIGO).  Ideally, one would give it clean, correct, well-structured data that contains summary, temporal, and other information.</p>
<h2><a name="p-370893-data-sources-4" class="anchor" href="#p-370893-data-sources-4" aria-label="Heading link" rel="nofollow"></a>Data sources</h2>
<p>There are various ways that the compilation process and/or the BEAM could supply information for use by the LLM. For example:</p>
<ul>
<li>The new type system could provide type information for every data instance of interest.</li>
<li>Information on libraries could be harvested from <a href="http://hexdocs.pm" rel="noopener nofollow ugc">HexDocs</a>, <a href="http://hex.pm" rel="nofollow">Hex</a>, etc.</li>
<li>Source code and configuration files could be harvested by <a href="https://github.com/elixir-lsp/elixir-ls" rel="noopener nofollow ugc">ElixirLS</a>.</li>
<li>Compiled code (e.g., <a href="https://exercism.org/tracks/elixir/concepts/ast" rel="noopener nofollow ugc">Elixir AST</a>, <a href="https://www.erlang.org/docs/29/apps/erts/absform" rel="nofollow">Erlang Abstract Format</a>) could be processed to create a graph of possible call-trees.</li>
<li>At runtime, the BEAM could track significant events (e.g., message handling, process creation). Similarly, the <a href="https://hexdocs.pm/phoenix/telemetry.html" rel="noopener nofollow ugc">Phoenix Telemetry</a> facility could supply useful operational data.</li>
<li>…</li>
</ul>
<h2><a name="p-370893-data-storage-5" class="anchor" href="#p-370893-data-storage-5" aria-label="Heading link" rel="nofollow"></a>Data Storage</h2>
<p>For best results, a mechanism will be needed to store the collected data. Graph representations are my preference, because of their extreme flexibility and generality. Graph databases (e.g., <a href="https://en.wikipedia.org/wiki/ArangoDB" rel="noopener nofollow ugc">ArangoDB</a> and <a href="https://en.wikipedia.org/wiki/Neo4j" rel="noopener nofollow ugc">Neo4j</a>) provide both convenience and high performance.</p>
<p>Both the ArangoDB and Neo4j folks are hard at work on integration with LLMs, etc. However, other database approaches (e.g., <a href="https://en.wikipedia.org/wiki/Relational_database" rel="noopener nofollow ugc">relational</a>) can generally be coerced into handling graphs (YMMV) and common formats (e.g., JSON) can be used for data exchange. So, graph databases aren’t the only possible options.</p>
<h2><a name="p-370893-use-cases-6" class="anchor" href="#p-370893-use-cases-6" aria-label="Heading link" rel="nofollow"></a>Use Cases</h2>
<p>Given this combination of static and dynamic information sources, Tidewave could describe a running Elixir system in fairly arbitrary and detailed ways. For example:</p>
<ul>
<li>Diagram the active processes, showing ancestry (as in Observer), message traffic (both potential and active), etc.</li>
<li>Report on processes receiving unmatched message formats.</li>
<li>Report on data type mismatches in handling received messages.</li>
<li>…</li>
</ul>
<p>Here’s hoping that this sort of data collection and integration will start showing up soon. (ducks)</p>
<p>-r</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370893" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/tidewave-has-just-been-announced-by-jose-valim/70674/45">Post #44</a>
	                </div>
	            </div>
              <div id="likers-container-370893" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370893"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #44"></div>
  </section>
</div>
    <div class="postbit" id="370921" data-post-id="370921">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="AndyL" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/AndyL/120/3659_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  AndyL
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<blockquote>
<p>speculative notions</p>
</blockquote>
<p>Maybe related: yesterday’s release of ElixirLS has an embedded MCP server.  <a href="https://github.com/elixir-lsp/elixir-ls/blob/master/CHANGELOG.md" rel="noopener nofollow ugc">see CHANGELOG</a>  Not sure how this would fit with Tidewave, types, UsageRules, etc.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370921" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/tidewave-has-just-been-announced-by-jose-valim/70674/46">Post #45</a>
	                </div>
	            </div>
              <div id="likers-container-370921" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370921"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #45"></div>
  </section>
</div>
    <div class="postbit" id="370934" data-post-id="370934">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Rich_Morin" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Rich_Morin/120/2020_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Rich_Morin
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Good catch! I’ve added this idea to my post.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370934" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/tidewave-has-just-been-announced-by-jose-valim/70674/47">Post #46</a>
	                </div>
	            </div>
              <div id="likers-container-370934" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370934"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #46"></div>
  </section>
</div>
    <div class="postbit" id="370975" data-post-id="370975">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Rich_Morin" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Rich_Morin/120/2020_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Rich_Morin
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>In a <a href="https://forum.elixirforum.com/t/tidewave-has-just-been-announced-by-jose-valim/70674/45" rel="nofollow">recent post</a>, I promoted the use of graph databases as a way to store information on Elixir systems. However, I neglected to mention a very strong argument for their use in systems such as Tidewave. So, here goes…</p>
<p>Although LLMs are certainly capable of extracting useful information from bodies of text, the process isn’t as reliable as we might wish. So, for example, in retrieval-augmented generation (<a href="https://en.wikipedia.org/wiki/Retrieval-augmented_generation" rel="noopener nofollow ugc">RAG</a>), the LLM is asked to dig through text to find and stitch together relevant snippets. If it fails at this, incorrect facts and relationships (i.e., hallucinations) may be reported.</p>
<p>As a remedy for this, the folks at Microsoft have developed <a href="https://neo4j.com/blog/genai/what-is-graphrag/" rel="noopener nofollow ugc">GraphRAG</a>. Because it is based on a <a href="https://en.wikipedia.org/wiki/Knowledge_graph" rel="noopener nofollow ugc">knowledge graph</a>, it can typically produce more reliable output with substantially less effort than a vanilla RAG approach would require.</p>
<p>Happily, much of the information needed by systems such as Tidewave is well suited to encoding as a knowledge graph. For example:</p>
<ul>
<li>relationships among functions, modules, libraries, etc.</li>
<li>relationships involving messages, processes, etc.</li>
<li>…</li>
</ul>
<p>Since the graph database folks are working hard at supporting GraphRAG and related approaches, it seems only reasonable to take advantage of their work in Tidewave et al.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370975" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/tidewave-has-just-been-announced-by-jose-valim/70674/48">Post #47</a>
	                </div>
	            </div>
              <div id="likers-container-370975" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370975"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #47"></div>
  </section>
</div>
    <div class="postbit" id="370977" data-post-id="370977">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="cvkmohan" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cvkmohan/120/39944_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  cvkmohan
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Even Graphs - probably are more useful for the translation between the agent and humans. I mean - more useful for understanding the codebase, understanding patterns, explain the codebase - those sort of features. I am not yet convinced that graph databases can make the code generation to be more accurate, authentic or optimal. Finally, what do we look for in the generated code? Same expectations as from human - the code should reuse already tested code as much as possible. It should be idiomatic and maintainable. It should be tested. Finally, it should consume less tokens.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20">  For any of these goals - will a graph database help? in which way? I am not yet clear. On the otherhand, we can already see that these dynamic intervention with something like Tidewave is leading to some real benefits with development. If not in generation - atleast in debugging. Maybe it should be enhanced more by integrating something like PlayWright MCP. But, beyond that probably I am not sure if we need more interventions.<br>
This  <a href="https://github.com/sysread/fnord" class="inline-onebox" rel="noopener nofollow ugc">GitHub - sysread/fnord: Fnord is an AI code archaeologist. · GitHub</a> is an elixir project I followed with great interest. But it moved more towards humans than towards agents. So, what we need now is more of a tool that is tilted towards agents rather than us - in two facets - static and dynamic - both only in the generation side. We can debug and fix things. But, generation is what we have to make it more intelligent.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370977" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/tidewave-has-just-been-announced-by-jose-valim/70674/49">Post #48</a>
	                </div>
	            </div>
              <div id="likers-container-370977" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370977"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #48"></div>
  </section>
</div>
    <div class="postbit" id="371832" data-post-id="371832">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="josevalim" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/120/1787_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  josevalim
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Elixir</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>We just announced the next iteration of Tidewave, Tidewave Web. I have opened up a new thread here: <a href="https://forum.elixirforum.com/t/tidewave-web-in-browser-coding-agent-for-phoenix-and-liveview/72164" class="inline-onebox" rel="nofollow">Tidewave Web: in-browser coding agent for Phoenix (and LiveView)</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="371832" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/tidewave-has-just-been-announced-by-jose-valim/70674/50">Post #49</a>
	                </div>
	            </div>
              <div id="likers-container-371832" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="371832"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #49"></div>
  </section>
</div>
    <div class="postbit" id="373267" data-post-id="373267">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="RicoTrevisan" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/RicoTrevisan/120/32751_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  RicoTrevisan
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>For Zed I think the correct config is:</p>
<pre data-code-wrap="json"><code class="lang-json">{
  "context_servers": {
    "tidewave-mcp": {
            "command": "mcp-proxy",
            "args": ["--transport", "streamablehttp", "http://localhost:4000/tidewave/mcp"],
            "env": {},
            "enabled": true,
            "source": "custom"
        }
    }
  }
}
</code></pre>
<p>I’ve submitted a PR for the documentation update.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="373267" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/tidewave-has-just-been-announced-by-jose-valim/70674/51">Post #50</a>
	                </div>
	            </div>
              <div id="likers-container-373267" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="373267"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #50"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/70674/load_more?page=5">Load more posts (1 remaining)</a>
</div></template></turbo-stream>