Video yükleniyor...

Video Yüklenemedi

Ana Sayfaya Dön

Announcing Hermes-node Hermes can now run as a standalone CLI with Node.js-compatible APIs - no C++ embedding required. Technically, hermes-node is a Node.js API compatibility layer for Hermes. It ports Node's native bindings (fs, net, http, child_process, etc.) to Node-API and reuses Node's original lib/*.js files, allowing standard Node.js...

77,248 görüntüleme • 8 ay önce •via X (Twitter)

42 Yorum

Jarred Sumner profil fotoğrafı
Jarred Sumner8 ay önce

very impressive Did you do this via implementing v8’s C++ API similar to node-jsc?

Tzvetan Mikov profil fotoğrafı
Tzvetan Mikov8 ay önce

My goal wasn't to drop-in replace v8 in Node, so I went in the opposite direction. I am porting and partially re-implementing Node C++ bindings. So, instead of putting Hermes in Node, I am adding Node modules to Hermes, so to speak. This gives me better control over the architecture and more "ownership" over the result. I am pretty excited about adding sound typing to the Node modules and compiling them natively. End result is potentially almost everything written in typed JS, with very little C++.

Dave Choi profil fotoğrafı
Dave Choi8 ay önce

@jarredsumner What is the perf impact of using modules to interface. Any penalty

Tzvetan Mikov profil fotoğrafı
Tzvetan Mikov8 ay önce

@jarredsumner Sorry, I don't understand the question. Can you elaborate?

Dave Choi profil fotoğrafı
Dave Choi8 ay önce

@jarredsumner I was just asking if there is a performance penalty to doing it with modules instead of swapping out chrome for hermes

Tzvetan Mikov profil fotoğrafı
Tzvetan Mikov8 ay önce

@jarredsumner What do you mean by "modules"?

Dave Choi profil fotoğrafı
Dave Choi8 ay önce

@jarredsumner You said you’re “adding node modules to hermes”. So I’m asking any perf penalty in doing that as opposed to switching chrome to hermes

Tzvetan Mikov profil fotoğrafı
Tzvetan Mikov8 ay önce

@jarredsumner It is hard to say - can't compare performance against a hypothetical. Switching Node to Hermes requires shimming the v8 API, which I haven't looked into.

Guillermo Rauch profil fotoğrafı
Guillermo Rauch8 ay önce

Cool

Jamie Birch profil fotoğrafı
Jamie Birch8 ay önce

Really exciting. In Vladimir's PR to add Node-API support to Hermes, we needed a way to run unit tests from the Node.js repo on Hermes. Vladimir ended up writing a "lite" Hermes Node.js for that (and I contributed child process support for POSIX!). Asking what this means for us.

Marc profil fotoğrafı
Marc8 ay önce

this is amazing

Albert Gao profil fotoğrafı
Albert Gao8 ay önce

Wait, so, a smaller Electron?😍

Roman D profil fotoğrafı
Roman D8 ay önce

Ability to run tests and benchmarks in Hermes directly will be a killer feature.

Florian profil fotoğrafı
Florian8 ay önce

I’ve been waiting for something like this. Will this also work with static Hermes somehow? I.e. can we AOT compile Node.js bindings? (Are they even well typed enough?) Also curious what’s the Meta use case for this..? Or is it more of an open ended exploration / Hermes extension

Tzvetan Mikov profil fotoğrafı
Tzvetan Mikov8 ay önce

I developed it in my free time. Yes, compiling typed .js is very much part of the plan.

kv profil fotoğrafı
kv8 ay önce

int32, int64, float32, float64, shared memory multithreading, static memory layout objects. Small list left for the greatest lang ever.

Ritesh Shukla profil fotoğrafı
Ritesh Shukla8 ay önce

Amazing 🧐

Cal Lavicka profil fotoğrafı
Cal Lavicka8 ay önce

Nice, been wanting this for a while - excited to see where you take it

Asko profil fotoğrafı
Asko5 ay önce

Super excited about this! 🚀 Been following your work on Hermes & Static Hermes for a while coming from Meta and leading the engine that powers React Native, you know exactly what’s missing in the JS runtime space. hermes-node feels like the perfect bridge: fast startup, tiny footprint, native TS support, and real Node compatibility. This has huge potential for CLI tools, edge/serverless, scripts, and even pushing performance further with Static Hermes later. Extremely bullish on this project. Can’t wait to see where it goes and to play with the source. Great work Tzvetan!

Maciej Jastrzębski profil fotoğrafı
Maciej Jastrzębski7 ay önce

@tmikov is there any source or binary to try? 🤩

Tzvetan Mikov profil fotoğrafı
Tzvetan Mikov7 ay önce

Soon. I have been busy with other stuff... 🤷

Hampus profil fotoğrafı
Hampus8 ay önce

Wooow this is really cool 🔥

Nathanael Anderson profil fotoğrafı
Nathanael Anderson8 ay önce

Wow you have been cooking recently! Very impressed.

Mish Ushakov profil fotoğrafı
Mish Ushakov8 ay önce

was waiting for this for years!

Levi Williams profil fotoğrafı
Levi Williams8 ay önce

So cool

Endel profil fotoğrafı
Endel8 ay önce

cool stuff! 👏

Gabriel Moncha profil fotoğrafı
Gabriel Moncha8 ay önce

is there something that Tzvetan can't cook? 🔥

Jeff Scott profil fotoğrafı
Jeff Scott8 ay önce

@grok give me the technical implications of this

Jakov Glavina profil fotoğrafı
Jakov Glavina8 ay önce

@birch_js 👀

Seanghay profil fotoğrafı
Seanghay8 ay önce

Binary size?

Tzvetan Mikov profil fotoğrafı
Tzvetan Mikov8 ay önce

It is literally the first thing shown in the video - 8.8 MB.

Yash Mahajan profil fotoğrafı
Yash Mahajan8 ay önce

Woooh🤯

vedmalex profil fotoğrafı
vedmalex8 ay önce

@grok поясни что тут такого особенного? В чем соль?

Syrus Akbary — eu/acc profil fotoğrafı
Syrus Akbary — eu/acc6 ay önce

This is very nice! And actually a very similar approach in theory of what we did with Edge.js: Would love to bring Hermes into it and collaborate further 🤗

nik profil fotoğrafı
nik8 ay önce

finally

Elves Vieira profil fotoğrafı
Elves Vieira6 ay önce

any news? 🙏

Kræn Hansen 🦋 @kraenhansen.dk profil fotoğrafı
Kræn Hansen 🦋 @kraenhansen.dk7 ay önce

You say it ports Node's native bindings (fs, net, http, child_process, etc.) to Node-API: Is this using Vladimir's / Microsoft's Node-API implementation or did you build that yourself as part of this?

Tzvetan Mikov profil fotoğrafı
Tzvetan Mikov7 ay önce

It is a new implementation. Primarily because the other one wasn't ready to merge, but I also needed better control in order to iterate quickly and be able to easily customize it. I don't know yet which I will end up using. Or perhaps a union of the two.

Kræn Hansen 🦋 @kraenhansen.dk profil fotoğrafı
Kræn Hansen 🦋 @kraenhansen.dk7 ay önce

What's your current view on the questions I raised here? you said the runtime-specific APIs are "specific to Node.js and so they cannot be part of Hermes". Do you no longer consider them out of scope?

Kræn Hansen 🦋 @kraenhansen.dk profil fotoğrafı
Kræn Hansen 🦋 @kraenhansen.dk7 ay önce

I imagine it will defer much of their implementation to the hermes_napi_host in the hermes-node target (and eventually React Native or the react-native-node-api package).

Filas profil fotoğrafı
Filas8 ay önce

1. This doesnt mean those apis would work on react native right? 2. Would those modules work on windows? Or just unix?

Tzvetan Mikov profil fotoğrafı
Tzvetan Mikov8 ay önce

IMHO, RN for desktop would benefit a lot from simply being built on top of this runtime. The situation on mobile is more nuanced because of binary size and trickier integration, but I see benefits there too. However I want to be clear that as of now there are no plans for that. I would welcome such plans. Re Windows: it isn't my focus right now, but there is no reason why it couldn't run there, with some effort.

Benzer Videolar

Hermes just made its in-app browser a whole lot more useful. You can now keep multiple browser tabs open inside Hermes Desktop instead of every new page replacing the one you were already using. And that matters more than it sounds. Because this is not just about “having tabs.” It means Hermes can work across multiple pages without forcing you to keep losing your place every time you open the next thing. Research one source, keep it open, open another tab, compare them side by side, and keep moving. Check a few products before buying something. Look at multiple hotel or travel options at once. Keep a YouTube tutorial open in one tab while Hermes looks through docs or another page in the next. And because this lives inside Hermes Desktop, you are not limited to one basic browser view either. You can keep multiple tabs open. You can view two pages side by side. You can stack them top and bottom. You can even run a four-panel view when you want several pages open at once. So the browser inside Hermes is starting to feel a lot more like a real workspace instead of one page you keep replacing. There is also some nice polish that comes with it. Browser tabs now label themselves based on the page, and the address bar behaves more cleanly while pages are loading. And remember, this is the same in-app browser Hermes can already read, click through, type in, scroll, and annotate. So this is not just a prettier browser. It is a more capable workspace for the browser Hermes is actually using. If Hermes is going to do more of your work on the web, this is exactly the kind of browser upgrade it needed.

Hermes Release Watch

52,493 görüntüleme • 1 ay önce

HERMES AGENT WITHOUT TOOLS IS A CHATBOT. WITH THEM IT BUILDS 3D TOWERS IN BLENDER, CHECKS STOCK PRICES, AND DRIVES VS CODE. tonbi JUST DROPPED THE FULL GUIDE. module 6 of his 10-part Hermes masterclass. best breakdown of the tool layer anyone has published. what you need to know: TOOLS vs SKILLS vs MCP skills = instructions (markdown, loaded into context) tools = callable functions (Python, agent emits call, Hermes executes) MCP = adapters to external systems (Blender, Stripe, Linear, Notion) every tool has three parts: → the function (does the real work) → the schema (what the model sees to decide when to call it) → the registry (makes the tool exist in the agent) the model never runs the function directly. it emits a structured request (tool name + JSON args). Hermes executes and returns the result. if the tool fails, the error goes back as JSON. the agent recovers instead of crashing. TOOL SETS CONTROL THE SURFACE hermes chat --tool-sets web # only web tools loaded. no files, no terminal. hermes chat --tool-sets safe # read-only: web search, vision, image gen. # no file writes. no terminal. no code execution. mid-session: /tools enable video /tools disable terminal or toggle in the dashboard: hermes dashboard → Skills → Tool Sets MCP SERVERS two transport types: STDIO (local subprocess) or HTTP (remote endpoint). add a server: hermes mcp # or ask: "add the MCP server for Blender" filter tools with include/exclude per server. keep only what you trust. security: → OAuth 2.1 PKCE (no long-lived tokens in config) → package scanning via api.osv. dev before launch → all MCP calls go through approval gates HERMES AS MCP SERVER hermes mcp serve exposes 10 tools via FastMCP. connect VS Code Copilot or Cursor to your running Hermes instance. BUILD YOUR OWN TOOL He built a stock price tool live: → Python function calling Finnhub API → schema with name, description, parameters → registered in tool_sets.py → agent calls it automatically when relevant any repeating API call in your workflow can become a native tool. full Hermes architecture deep-dive in the article 👇

YanXbt

32,680 görüntüleme • 4 ay önce

Graph Convolutional Network by hand ✍️ ~ 12 steps walkthrough below Graph Convolutional Networks (GCNs), introduced by Thomas Kipf and Max Welling in 2017, are the tool for data shaped like a graph: social networks, recommendations, biological networks, drug discovery, molecular chemistry. I drew and calculated a simple GCN entirely by hand. Goal: run a two-layer GCN, then a small classifier, on a five-node graph, filling in every cell yourself. 1. Given A graph of five nodes, A to E, with edges between some of them. 2. Adjacency matrix (neighbors) Put a 1 wherever two nodes share an edge, in both directions. 3. Adjacency matrix (self) Add 1s down the diagonal, one self-loop per node. That is just adding the identity matrix. 4. Messages Multiply each node's embedding by the weights and biases, then ReLU. Negatives become 0. 5. Pooling Multiply the messages by the adjacency matrix. Each node gathers the messages of its neighbours and itself. 6. Visualize Node A pools [3,0,1] + [1,0,0] = [4,0,1]. 7. Second GCN layer Messages again: weights, biases, ReLU. 8. Pooling again Pool over each node and its neighbours, once more. 9. Visualize Node C pools [1,2,4] + [1,3,5] + [0,0,1] = [2,5,10]. 10. Fully connected layer Weights, biases, ReLU. This time there are no neighbours to pool, just the node itself. 11. Linear layer One more: weights and biases. 12. Sigmoid Squash each score to a probability (≥ 3 → 1, 0 → 0.5, ≤ -3 → 0). That is the classification for each node. You have just classified every node in the graph by hand. ✍️ The outputs: A: 0 (very unlikely) B: 1 (very likely) C: 1 (very likely) D: 1 (very likely) E: 0.5 (neutral) The takeaway: a GCN layer is two parts. The top part pools each node with its neighbours through the adjacency matrix. The bottom part is an MLP that transforms each node on its own. A transformer layer has the same two parts, with an attention matrix where the adjacency matrix was. Both matrices do one job, mixing across positions: attention over tokens, adjacency over nodes. In my class I call the GCN the transformer's little cousin: a bit more stubborn, because its attention is fixed by the graph rather than computed from Q, K, and V. Draw the two side by side and the resemblance is hard to miss. 💾 Save this post! #AIbyHand #GraphNeuralNetworks #DeepLearning

Tom Yeh

16,956 görüntüleme • 3 ay önce

The more agents and projects you have running, the harder it gets to keep track of everything through chat alone. This is where Hermes Kanban comes in. Here's how Hermes Kanban works, why it's worth using, and how I'd recommend setting it up: Chat is where you work with an agent. Kanban is where you manage the work across agents. Hermes Kanban gives you a visual dashboard for tracking tasks across your agents and projects. But it's much more than a task board. Here's what you can do with it: • Create tasks and assign them to specific Hermes agents. • Track what's ready, running, blocked, or completed. • Set dependencies so tasks wait for other work to finish. • Coordinate handoffs between specialized agents. • Review progress and see where something needs your attention. And with the dispatcher, Hermes can pick up tasks that are ready to run and launch the appropriate agent to handle them. Now, here's something I'd recommend: **Create a separate Kanban board for each major project.** For example: 📌 Content production Research → Drafting → Review → Assets → Done 📌 Software development Bugs → Features → Testing → Review → Done 📌 Business operations Research → Waiting → In Progress → Blocked → Done Hermes supports multiple isolated boards, so each project can have its own tasks, workspaces, logs, and agent workflows. You can also connect a board to a Hermes Project to keep the work tied to the right project context. The more work you hand off to Hermes, the more valuable this becomes. Instead of digging through conversations trying to figure out what every agent is doing, give each project its own board and manage the work from one place. 🎥 Video credit: Tom

Hermes Release Watch

27,640 görüntüleme • 10 gün önce

Hermes agent just left the terminal. 𝗛𝗲𝗿𝗺𝗲𝘀 𝗗𝗲𝘀𝗸𝘁𝗼𝗽 dropped yesterday. native app for macOS, Windows, and Linux. for months Hermes was the agent that learned your projects, wrote its own skills, and built a model of who you are. all of it buried in terminal logs. now it has a window. the important part is that it's not a wrapper. it runs the same agent core, the same sessions, memory, and skills as the CLI. you can start a task in the terminal and finish it in the app without anything resetting. the state is shared across every interface, not copied between them. what the GUI actually adds: → streaming chat that shows live tool calls and inline reasoning instead of a spinner → a preview rail that renders pages, code, and images right beside the conversation → an artifacts panel that collects every file the agent has ever produced → remote gateway mode, so you can point the app at a VPS and run the heavy work elsewhere → skills, cron, profiles, and gateways managed point-and-click instead of through YAML → voice mode, drag-drop files, and inline image generation remote gateway mode is the one worth slowing down on. the agent runs 24/7 on a $5 server while you control it from your laptop like a local app. other agent UIs are chatboxes with a logo. this one shows the autonomy instead of hiding it, so you watch the skills load, the tools fire, and the artifacts pile up as it works. it was teased in Jensen's GTC keynote. MIT licensed, local-first, no telemetry. if you already run Hermes, download it and everything is already there. your chats, memory, and skills carry straight over. i wrote a full masterclass on Hermes Agent that walks through the SOUL. md identity layer, the three-tier memory system, the self-evolving skills loop, and how to run three specialized agents 24/7. desktop is the interface that finally does all of it justice. the article is quoted below.

Akshay 🚀

51,540 görüntüleme • 4 ay önce

HERMES AGENT IS NOW IN THE CLOUD. NO VPS. NO TERMINAL. NO SETUP. PICK A MODEL. PICK A SERVER SIZE. AGENT IS LIVE IN 60 SECONDS. Nous Portal just launched hosted Hermes Agent. two clicks. one minute. done. Nous Research WHAT THIS MEANS: before today: install Hermes on a VPS or your laptop. configure providers. set up gateway. manage updates. run hermes setup. edit config.yaml. great for power users. friction for everyone else. now: go to pick a model. pick a server size. your agent is live and reachable in 60 seconds. no terminal. no SSH. no Docker. same Hermes. same features. same tools. someone else handles the infrastructure. FOR TEAMS: this is where it gets interesting. spin up agents for everyone at your org. each team member gets their own Hermes instance. granular access controls per user. unified billing through Nous Portal. your team gets Hermes on day one. no DevOps needed. no VPS per person. one admin dashboard. one bill. WHAT'S INCLUDED: → 300+ models via Nous Portal (Claude, GPT, Gemini, DeepSeek, Grok, MiniMax, and more) → Tool Gateway (web search, image generation, TTS, browser automation) → all messaging platforms (Telegram, Discord, Slack, WhatsApp, Signal) → full feature set (profiles, cron, kanban, skills, memory, sub-agents, MoA, /goal, /learn, /journey) → automatic updates ONE PORTAL. FOUR TIERS: Free: $0/month. pay-as-you-go credits from $10. Plus: $20/month. $22 in monthly usage credit. Super: $100/month. $110 in monthly credit. Ultra: $200/month. $220 in monthly credit. highest rate limits. every paid tier includes Tool Gateway. one OAuth. one subscription. no extra API keys. SELF-HOSTED IS NOT GOING ANYWHERE: Hermes is MIT licensed. open source. free forever. you can still run it on your laptop, VPS, or GPU cluster. nothing changes for self-hosted users. the cloud version is for people who want the agent running without managing the machine. pick your path: → self-hosted: full control. you manage everything. → cloud: zero ops. Nous manages infrastructure. → hybrid: self-host your main agent, cloud for team members. HOW TO START: cloud: self-hosted: hermes setup --portal both connect to the same Nous Portal. same models. same tools. same billing. learn how to replace your entire team with 8 hermes agents 👇

YanXbt

47,447 görüntüleme • 3 ay önce

What's next for OpenTUI? Here's a technical write-up. Over the last few months OpenTUI gained a lot of stability improvements, new unnecessary but fun features like live audio streaming, and useful features like rendering to the scrollback buffer mixed with a live TUI, called footer mode. Overall the feature set enables building large and complex applications. React and Solid make it super simple and convenient. There is still so much to do though. Three big milestones we have set out to achieve are: - Moving most of the behavioural logic currently living in TypeScript down to the native Zig core - Node compatibility - Optimizing the hell out of primitives like text rendering The render tree mechanisms are currently only usable from TypeScript. Think of the DOM, but controllable like a scene graph. Elements in the render tree are called renderables. They can expose a render method to draw themselves. All renderables are derived from a BaseRenderable. Renderables and the render tree will become native primitives. Building blocks usable from any language bindings. Reducing the TypeScript bindings to a very thin layer, with all the behavioural logic living in the native binary. Moving this down is not just a matter of porting TypeScript classes to Zig. TypeScript currently owns the tree, dirty-state propagation, layout reads, culling, and render ordering. If it still has to walk every node and call into native code for each step, we keep most of the complexity and add FFI overhead. Whole passes and their state need to move together. We took a big step towards this recently by building yoga-layout into the native binary. It exposes part of the official yoga-layout TypeScript package via FFI. Only the API surface that is actually used by OpenTUI. Covered by the test suite of the original yoga-layout package. This already gave a median speedup of ~2.5x, and up to 30x for narrow scenarios. The yoga-layout integration is useful beyond the speedup. Built-in text and editor measurement can now happen entirely in native code during layout instead of calling back into JavaScript. I ran an experiment last month taking this even further, having GPT 5.6 port yoga-layout from C++ to Zig, which gave extremely good results. It would be a burden to maintain right now though, so that's off the table for now. I might come back to it. Simon Klee is working relentlessly on Node compatibility and already has a full Node version of OpenCode running. Node got FFI support in v26.4.0, thanks to help from the Node community, namely Matteo Collina and Paolo Insogna. Behaviour and interfaces seem similar between Node and Bun, but there are some major differences. To get the best performance out of the Node FFI implementation, its usage has to follow some rules. Node has three ways to call native functions: the generic C++/libffi path, the SharedBuffer path, and the V8 Fast API. The generic path converts every argument in Node's C++ layer and then calls the function through libffi. It is flexible, but also the slowest option for frequently called functions. The SharedBuffer path is a middle ground. JavaScript writes scalar values and BigInt pointers into a small per-function buffer, reducing some conversion work. The actual native call still goes through libffi though. Typed arrays used as pointers cannot be packed into this buffer and fall back to the generic path. The path we really want is the V8 Fast API. Node generates a small machine-code trampoline for the exact function signature, allowing optimized JavaScript to call the native function without going through the generic converter or libffi. This only applies to JavaScript-to-native calls. Callbacks from native code into JavaScript still use libffi closures. Getting onto this path is quite strict. A signature can have at most eight arguments and everything must fit into CPU registers. x86-64 Unix systems have room for six GP (general-purpose) and eight FP (floating-point) arguments. AArch64 has room for seven GP and eight FP arguments. Anything that spills onto the stack falls back to a slower path. These are Node fast-path restrictions, not general FFI restrictions. Bun also does not support passing structs by value through its current FFI API. OpenTUI uses bun-ffi-structs to pack ABI-aligned struct data into an ArrayBuffer and passes a pointer instead. Despite the name, the package also works with Node. Pointers need some care too. Typed arrays and ArrayBuffers normally have to be resolved into BigInt addresses first. Eligible functions with exactly one pointer argument get another Fast API entrypoint that can extract the address directly from the buffer. An eligible signature is still not enough. V8 has to optimize a direct call with a fixed number of consistently typed arguments. Wrappers that collect arguments and forward them using spread or Reflect.apply can hide that call shape and keep the function on a slower path. The practical rules are: keep hot signatures within register limits, use direct fixed-arity calls with stable argument types, reuse owned buffers safely, and batch small operations. Then measure the real call site, because eligibility only makes a function fast-capable. We have to design the ABI around these constraints where it makes sense and gives the expected performance improvement. The third big area is text rendering. Today a Text renderable accepts a string, StyledText, or a tree of TextNodes. Before rendering, the TextNode tree is walked and flattened into styled chunks. Those chunks are packed in TypeScript, sent through FFI, copied into a native TextBuffer, and stored in a rope. Styles are represented separately as highlights. A TextBufferView then wraps the rope into visual lines, which are drawn into the visible buffer. This works, but updates are much more expensive than they should be. setStyledText effectively throws away and rebuilds the rope, copies and reparses all text and recreates the style highlights. Changing one TextNode also walks and flattens the complete tree before going through this path again. Text and style segments should instead live directly in the rope and support incremental replacement. Memory ownership is split between retained JavaScript buffers, the native memory registry, rope arenas, wrapping caches, styled-text storage, and highlights. Different operations preserve or reset different parts of that state. This is hard to reason about and can retain memory for much longer than expected. Text storage needs clearer ownership, with fewer lifetimes split across JavaScript and native code. The public API reflects the same split. The t template literal is convenient, but creates another intermediate chunk representation that is mutable, not cached, and not merged. Text also maintains both StyledText content and a special TextNode tree, which do not compose properly. TextNode is only a style scope, not a normal layout primitive, so Text renderables cannot naturally compose inside each other. I think this should become one Text primitive backed directly by rope segments. The template literal API might disappear or become a very thin helper around those native segments. Editing has another temporary layer in TypeScript. Extmarks currently monkey-patch editing operations, scan and adjust all marks after changes, maintain their own undo state, and recreate native highlights. They should become native marks anchored directly in the rope. A proper mark tree, similar to Neovim's marktree, could update marks together with edits, undo, and redo, and provide the foundation for highlights and concealment. Text wrapping has also become too complex. Supporting CJK, emoji, combining characters, ZWJ sequences, tabs, and different terminal width rules currently mixes byte offsets, grapheme indexes, and display-cell columns across several custom algorithms. Dirty views rewrap the complete document. Measurement and drawing can repeat some of the same work. The wrapping implementation needs an overhaul, but the exact shape is still open. The goal is to make Unicode handling easier to maintain, avoid repeated full-document work, and clearly separate byte offsets, graphemes, and terminal display cells. None of this will happen as one big rewrite. We will replace pieces when we understand the problem well enough and when the result is clearly simpler, faster, or more useful. To achieve all of this we might break public interfaces. Thanks to OpenCode and a lot of good models, migration to a new version with breaking changes mostly is not an issue anymore. What do you want to see next for OpenTUI?

kmdr

31,132 görüntüleme • 3 ay önce

Atomic Agent beat Hermes on GAIA: 69.8% vs 58.5%, and it was 1.6x faster! We ran both agents through the full GAIA Level 1 benchmark, 53 real-world tasks, same 4-bit qwen-3.6-35b on the same Apple M4 Max. Results: ✦ Atomic Agent: 37 of 53 solved, done in 3h 12m ✦ Hermes Agent: 31 of 53 solved, took 5h 10m Atomic solved 6 more tasks and finished nearly 2 hours sooner. Hermes ran into the 900s timeout on 7 tasks; Atomic on just 2. Hermes burned 71% of its total time on tasks it still failed, Atomic, 48%. Where it showed: ✦ Audre Lorde poem, which stanza is indented: Atomic pushed through a dead source, switched tools, and answered in 7.6 min. Hermes ran the full clock and returned a blank. ✦ Vietnamese specimens, which city they ended up in: Atomic pulled it from the first source and normalized the answer in 33s. Hermes spent 7.3 min and never answered. ✦ The dinosaur featured-article nominator: Atomic walked the Wikipedia chain to "FunkMonk" in 57s. Hermes guessed a wrong name after 11 min. Atomic keeps a byte-stable prompt prefix, so llama-server reuses the KV-cache instead of re-encoding the whole context every turn, and it emits one JSON array of tool calls per inference, then compresses results back instead of pasting them in full, so the context never balloons and a small model stays sharp deep into a task. On top of that a no-progress guard vetoes repeated identical tool calls (warn at 3, hard veto at 5) and forces a reply, so Atomic never sinks 15 minutes into re-scanning one page the way Hermes did. Both agents missed some of the same questions, and on a few Hermes got there and Atomic did not, usually format slips where Atomic computed the right number but printed the working instead of the bare value. But on identical hardware and identical weights, the runtime that reuses its cache and refuses to spin came out ahead on accuracy and speed. Getting this from the runtime alone is wild. Run the same 53 GAIA tasks on Atomic Agent!

Atomic Agent

113,198 görüntüleme • 2 ay önce