- β
- β
- October 17, 2026
-
π HexRaysSA/plugin-repository commits sync repo: +1 release rss
sync repo: +1 release ## New releases - [capa](https://github.com/mandiant/capa): 10.0.0 -
π r/LocalLLaMA Linux creator says anti-AI rules are "idiotic." (Absolute god-tier take.) rss
| submitted by /u/HolidayBit143
[link] [comments]
---|--- -
π r/LocalLLaMA deepseek-ai/DeepSeek-V4.1-Flash-1017 Β· Hugging Face rss
| submitted by /u/Bestlife73
[link] [comments]
---|--- -
π backnotprop/plannotator v0.28.23 release
Follow @plannotator on X for updates
Missed recent releases? Release | Highlights
---|---
v0.28.22 | π Looks good, full view for files, one viewer for a thread's images and files, every session prints its URL,PLANNOTATOR_BROWSER=noneopens nothing
v0.28.21 | Message an agent from the Inbox, video attachments, Open in for attachments, Code / Tests / Generated in code review, writes from other websites refused
v0.28.20 | Inbox search (βK), real folder names for projects, data files open in the code view, word-only replies leave questions open
v0.28.19 | Ask this session in T3 Code, folder sessions load shared stylesheets and images, the agent note asked once per agent, Copy connect prompt
v0.28.18 |plannotator inboxconnects your agents, agents are told when to use the Inbox, rendered Markdown in code review, Inbox Settings in sections
v0.28.17 | The Inbox on iPads and narrow windows, the reply bar no longer cuts off "Keep open", a Pi crash on/reloadfixed
v0.28.16 | The Inbox on a phone, a doorbell for new questions, Mark read, step through a thread's files, replies when the asking session ended
v0.28.15 | Long Inbox threads fold to what is new, "Skipped N questions" replies, Inbox list and sidebar fixes
v0.28.14 | Agents can replace an earlier question, comment on a guided review in the Inbox, issue numbers link to the repository
v0.28.12 | Update notices andplannotator update, attach any file to an Inbox message, questions with context, links to attached files
v0.28.11 |plannotator inbox --helpprints a full guide for agents, and the plannotator.ai/inbox install prompt
v0.28.10 | The Inbox over your tailnet withplannotator inbox --tailscale, images in agent messages load, click anywhere on an attachment tileWhat's New in v0.28.23
The main fix: Claude Code sessions that run background subagents get their Inbox replies again. Also in this release: dictated text no longer goes missing on Chrome 155-156 for macOS, π Looks good now reaches the agent, Inbox notifications that never fail silently, and a run of Inbox improvements. 16 PRs, all by @backnotprop.
Inbox replies reach Claude Code sessions with background subagents
When a Claude Code session started a subagent (a background one included), the Plannotator mod counted the subagent's turn as the session's own and never saw it end. The session then read as busy for good, so Inbox replies to it waited forever and "Ask this session" said the session was busy. The mod now ignores subagent turns. Verified live on Claude Code 2.1.302.
The fix is in the Claude Code plugin, which updates separately from the binary. The install script updates a user-scope plugin for you; otherwise run
claude plugin update plannotator@plannotator --scope user, then restart Claude Code.Dictated text lands where you are typing
On Chrome 155 and 156 for macOS, text from dictation apps such as Hex (and text expanders) often failed to appear: the first dictation after a page load worked, later ones inserted nothing. This is a Chrome bug (crbug 568453825), fixed upstream for Chrome 157. Until then, Plannotator inserts plain-text pastes itself in the Inbox, plan review, annotate and code review. The workaround runs only on Chrome 155-156 on macOS and turns itself off at 157; Safari, Firefox and other browsers keep their own paste.
In the Inbox, a dictated paste also lands in the field you were writing in after a click moved focus away from it (a choice on a question card, the message text, a chip in the reply box, or a word you double-clicked).
π Looks good reaches the agent
π Looks good used to stay in the Inbox until the agent next read the thread. Now, once the 10-second Undo window passes, it goes to the agent that wrote the message, the same way a reply does: "The person marked your message π Looks good. No reply needed unless you have a question." If you reply or the agent writes again inside the window, nothing is sent. The line under the message says whether it is queued, saved or delivered.
Inbox notifications never fail silently
Chrome grants notification permission per address, so an Inbox opened at
127.0.0.1and later atlocalhost(or on a new port) quietly had none. The Inbox now always answers athttp://localhost:<port>/, and when the address you are on has no permission it says so on every load with an Allow button. Settings β General shows whether notifications reach you right now, and through which tab, and has Send a test notification. A tab whose connection dropped also catches up on the notices it missed.Thread names for threads you start
A thread you start from New message gets a short subject (the first sentence, with greetings and filler dropped) and a thread-name chip like the agents' threads. Type a name in the chip, or leave it and Plannotator suggests one from your message. Otherwise the agent that answers names it in its first reply; a name you typed is never replaced.
First run: one next step
The empty Inbox screen now shows one next step at a time, starting with Plannotator's own connections (Claude Code, Pi, OpenCode), which bring replies back into the session by themselves. It turns on a Pi or OpenCode Inbox tool with one click, gives the exact install command for a missing plugin, and moves on by itself once you install it. It also handles disabled plugins, a Claude Code mod that is turned off, OpenCode 1 and
PLANNOTATOR_INBOX_TOOL=0correctly. The Inbox tool's definition on Pi and OpenCode is about 40% smaller (7 KB instead of 11.7 KB per request).Paste images into replies and new messages
Paste an image or a file into New message or the reply box and it attaches, with the same tiles and progress as the paperclip. Screenshots get a dated name. The agent gets the files with the reply.
Message images load from anywhere
An image an agent shows in a message now loads from any folder you can read, not only from the project, as attachments already did. Hidden folders outside the project and
.envfiles are still refused.send_messagenow tells the agent which images will not show and why.Search results name their thread
Every Inbox search result now shows the thread it belongs to, as the same chip the list uses: the thread's name, or its subject when it has none.
Additional Changes
- The "β N new" pill goes away once you have read the message , and does not come back when you scroll up (#1978)
- A thread you start shows in Sent at once , even while another thread is open (#1978)
- Thread header order: Mark read comes first and Archive sits beside the close (#1957)
- A cleaner What's new page with a sticky header, an "Update to X.Y.Z" button, and the releases you skipped still listed after you update (#1952)
- Copy prompt sits above What's new in the sidebar (#1951)
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: The plugin and the
plannotatorbinary update separately, so run the install script above as well. In a terminal:claude plugin marketplace update plannotator claude plugin update plannotator@plannotatorThen restart Claude Code. Inside Claude Code, run
/plugin marketplace update plannotator, then open/pluginβ Installed β plannotator β Update now.Pi:
pi update --extensionsOpenCode: Re-run the install script above. It now also clears the OpenCode 2 plugin cache.
What's Changed
- Inbox: Copy prompt above What's new in the sidebar by @backnotprop in #1951
- Inbox: a cleaner What's new header (approved Toolbar design) by @backnotprop in #1952
- Inbox: paste images into New message and the reply box by @backnotprop in #1953
- Inbox: message images load from anywhere; send_message says which won't show by @backnotprop in #1954
- Inbox: dictated (pasted) text no longer goes missing in the reply box by @backnotprop in #1955
- Inbox: short names, a project badge, and agents name threads you start by @backnotprop in #1956
- Inbox: Archive next to close, Mark read first by @backnotprop in #1957
- Inbox paste: a selected word no longer stops the dictation by @backnotprop in #1959
- Inbox first run: one next step, Plannotator's own connections first; the Inbox tool's cost measured and cut by 40% by @backnotprop in #1962
- Inbox search: every result shows its thread as the list's chip by @backnotprop in #1965
- Inbox notifications never fail silently: one origin, a re-allow that stays, live status, test, reach by @backnotprop in #1967
- Text fields: insert plain-text pastes ourselves (Chrome 155-156 macOS dictation workaround) by @backnotprop in #1970
- Inbox first run: say the right thing on every Claude Code / Pi / OpenCode computer by @backnotprop in #1974
- Inbox: the new pill stays gone once read; a thread you start shows in Sent with a thread open by @backnotprop in #1978
- Claude Code mod: a subagent's turn no longer leaves the session busy for good by @backnotprop in #1979
- Inbox: π Looks good is sent through to the agent by @backnotprop in #1980
Contributors
Every PR in this release is by @backnotprop. No linked issues this time; the fixes came from day-to-day use of the Inbox.
Full Changelog :
v0.28.22...v0.28.23 -
π OmniNull/OmniWM Canary 20261017-0428 (a0e12012) release
Automated canary build of
main. It is signed and notarized like a release but skips the owner review, so treat it as unstable.See the canary guide to install, update, or return to stable. For everyday use, download the latest stable release.
- Commit:
a0e12012cf50 - Base tag:
canary-20261016-0427-38849660847-1
Changes since canary-20261016-0427-38849660847-1
a0e1201Merge PR #899: Opt in glass and snapshot previews for mouse and keyboard resize44af3e4refactor(resize): intercept every layout plan and settle on layout0f6d77dfeat(resize): preview keyboard resizes and moved neighbourse7ac43ddocs(resize): list resizePreviewStyle in settings search and the referencefeb363dMerge remote-tracking branch 'origin/feat/smooth-resize-overlays' into feat/smooth-resize-overlays2c03d01fix(resize): make the preview opt in and keep shared previews alivec6a19beMerge branch 'main' into feat/smooth-resize-overlaysb733da0feat(resize): add smooth liquid glass and live snapshot resize overlaysc66c019Merge upstream mouse session tap threade2edcdbMove Mouse Warp move crossings onto the pointer thread0eb5f1dHold the pointer at parked-edge fins and push past to cross4bb7e7bMerge PR #888: Move mouse session event tap to dedicated thread81bd1beAdd configurable edge timing and hover repeat637f313fix(input): synchronize touchCountProvider and handle move candidates9ab9876fix(input): replace mirrored state with fast-path filter and authoritative fallbackc9811f7perf(input): move mouse session event tap to dedicated thread7746343Merge upstream test reliability fixes3efaa97Merge pull request #887 from dappermint/fix/shell-provider-flood-test-overfulfill683a637Merge pull request #886 from dappermint/fix/test-flakesf55fbb6test(shell): stop the flood fixture's diagnostic lines over-fulfilling48fb35dtest(palette): give the animated reveal 5 s on loaded runnersf24450etest(shell): report the scroll width when deltas go missingd9133c7test(shell): render widget fixtures under a correctness budget67040f6test(shell): stop the provider fixture reporting its close twice25b6113Merge remote main with parked-edge navigationc711c43Merge PR #884: Skip the redundant app activation when fronting a window4ba875cAdd directional navigation to parked window edges459f455perf(focus): skip the redundant app activation when fronting a window
- Commit:
-
π Filip Filmar Bazelizing a Custom RISC CPU with 4x4 Systolic Matrix Accelerator rss
Open-source digital signal processing and machine learning accelerators are frequently published as student or research projects. While the RTL architecture is often innovative, the surrounding build and test scaffolding frequently suffers from workstation-specific assumptions, absolute file paths, and missing simulation fixtures.
In this case study, we document the Bazelization of Custom-RISC-CPU-with-Systolic-Matrix-Accelerator, authored by Mathew George. By applying Bazel and
rules_openxc7, we transformed this 2D systolic array processor into a portable, reproducible hardware project that synthesizes and outputs a valid FPGA bitstream in under 25 seconds from a clean slate. -
π Filip Filmar Bazelizing mmRISC-2: A Full RISC-V SoC with rules_openxc7 rss
Converting existing open-source FPGA projects to Bazel and
rules_openxc7transforms fragile, vendor-locked hardware build scripts into reproducible, sandboxed workflows. This case study examines our complete Bazelization of mmRISC-2, a comprehensive, silicon-proven RISC-V system-on-chip authored by Munetomo Maruyama.By pairing Bazel’s fine-grained dependency tracking with open-source EDA tools (Yosys, Slang, nextpnr-xilinx, Project X-Ray, and openFPGALoader), developers can clone the repository and produce a fully placed, routed, and verified bitstream for the Digilent Arty A7-100T board with a single terminal command.
-
- October 16, 2026
-
π IDA Plugin Updates IDA Plugin Updates on 2026-10-16 rss
IDA Plugin Updates on 2026-10-16
New Releases:
Activity:
- augur
- capa
- haruspex
- ida-cli
- 27a54cca: test(nexus): keep frozen baseline decompile requests plain
- 83b0ebff: Merge master while preserving Nexus lifecycle and listing contracts
- 761a0fde: fix(cli): display string contents and segment address ranges
- 8c376b7f: test: separate MCP fixture startup from response bounds
- 03677e29: fix(nexus): preserve early disconnect ordering and shared lease cleanup
- acb61ba5: test(nexus): model public recovery probes in diagnostic open tests
- 6739b35b: fix(nexus): veto rollback on external IDA locks and replaced snapshots
- 5e430261: fix(nexus): retry initial Root failures and roll back recovery artifacts
- efbee3c0: test(nexus): capture Root Node visibility failures and isolate reopenβ¦
- 91022c33: fix(nexus): isolate diagnostics and opt in to IDB hashes
- 7dd8c2da: fix(nexus): refuse writeback after owner Root Node loss
- 54e4c60c: test(nexus): model public state-directory resolution in cache probes
- 8bc34664: fix(nexus): close cache review residuals and isolate fixture startup β¦
- 582568b7: test(nexus): retain zero-metadata contract with owner diagnostics
- b72d987f: test(nexus): load metadata diagnostics in standalone tools fixture
- c9b1374e: diagnose(nexus): retain owner evidence for missing input metadata
- 41d34736: fix(nexus): address N7a cache coordination review
- ff486d34: test(nexus): discover generation databases in N6 persistence fixtures
- 35fc2311: feat(nexus): coordinate generation cache GC and cancellable input preβ¦
- 08055fe1: docs: accept N6 after F1 review
- idamcp
- 5fb2f304: Optionally show Hex-Rays warnings in decompile_function
- oh-my-pi-schema
- f9244c8b: chore(sync): merge upstream oh-my-pi v18.11.1
- omp-zh-i18n
- f81111c4: feat(i18n): localize for official v18.11.0 (v18.11.0-zh)
- rhabdomancer
- ToCode
-
π r/LocalLLaMA 10 Things you maybe didn't know you can do with Qwen 3.6 27B right now. (For Noobs) rss
I know everyone's excited about 3.8, but honestly I'm still refining 3.6. And I hate the way 3.8 talks, so...
I keep seeing all these posts about what's the use of open source, so I figured I'd submit my own answer with this post. Qwen 3.5 27B was my first agent, starting my journey around May 31st, and I've learned a lot in these 4+ months, so I wanted to share with other people just starting their journey because there are clearly a LOT of new users out there, and people want help but sometimes are afraid to ask or not sure the right questions. So, here are ten things that you should know you can do to empower you! (Oh, and I'd recommend using llama.cpp. That's what I've used to do all these tricks) 1. Create neat little apps for yourself. Qwen's really good at making apps for anything. I'm writing this post in a app I made as a replacement for Notepad, that has full word processing, side-panel, light/dark mode, etc. (image below). The first thing you should be thinking about when you run into any sort of issue is, "can I make an app that will make this simpler?" The answer is usually yes. https://preview.redd.it/xi91phrjwvvh1.png?width=993&format=png&auto=webp&s=3893dd6f6def7cfa6a2210b16e0d8f092224ceff 2. Create your own Chat UI frontend. If you don't feel that creative, just copy an existing one. LLMs are great copy cats. I liked claude, so I just copied it as my own frontend, customizing it for my own needs: https://preview.redd.it/xwu9o8wr0wvh1.png?width=1160&format=png&auto=webp&s=d6a2f9908ac9c6547a3581d20a24f084e624e1ce 3. Create ReAct Loops. This is what enables your model to use a tool, read the result, then use it again, multiple times. Qwen can make these in its sleep, and many different ways. It can create a loop anywhere you want it, and you'll need it for your own custom chat ui frontend if you make one. 4. Create MCP tools. This is my favorite. It can make almost any type of mcp tool you need. You don't have to use third party ones, which can be unsafe. Just tell it you want an mcp tool to do x, it'll make it. It might or might not require its own mcp server, but if it does, Qwen can make that too. 5. Spawn sub-agents. Another super-easy thing Qwen can do. Just tell it to create a sub-agent spawner, which is just a python file. Then, you can tell it to run that when it needs to create a sub-agent, or tell it to create an mcp tool to do it on-the-fly when it wants to. Simple. Oh, and a quick hack-tip: mcp tools use up a LOT of context, so a cheat is to spawn a sub-agent with its own context limit and have your main agent pass off work to the sub. Basically, you can double/triple/etc your context limit. And yes, you can retain it between turns, but you'll need to create a pipeline runner (see below). 6. Create a pipeline runner. Ever heard of n8n? Basically, it's a pipeline runner. It has a lot of features, but it has a few limitations and restrictions, and there were a few things I wished it could do. I learned I could just build something similar with Qwen super easy. There's some design work involved if you want a UI frontend to build, but it's completely doable. I made my own ui, but after a while, I got tired of tweaking it, so I just copied n8n's frontend and just customized it myself, lol. Another useful tip: You can run multiple sequential agents in a pipeline runner, but if you want them each to have their own context, you'll need to ensure cache-idle-slots is enabled in llama.cpp. This'll swap the kv caches each turn, ejecting the last one to cpu ram. There's a bit more to it, but Qwen's got you, so just ask. After a bunch of custom UI attempts, I just decided to clone n8n's look and just make my own version. 7. Create a model launcher (with options to select different models/jinja templates in llama.cpp). This is my bread and butter. Its a launcher that lets me choose any model in my directory and set its parameters. When I'm happy, I create an alias for it. On next launch, I can just choose the alias and it launches the model with the params for that alias only. So I can have 10 different types of param configurations for the same model if I want; I just need to give them their own alias. Hack tip: I'd recommend adding your jinja templates to the launcher to, and you can choose different custom templates for different model types. I made custom jinja templates for different model types https://preview.redd.it/8nzl8sjv4wvh1.png?width=1101&format=png&auto=webp&s=31c118f09cfefe5d2b8782317a3cbe99f55838fc 8. Install, test, fork, and/or rebuild open-source apps on the internet. The reason I moved to llama.cpp was lm studio pp was too slow, but I didn't want the stress of figuring it all out, so I just asked my agent to download and install llama.cpp for me. I've been using it ever since. It can also modify builds, fork repositories on github, and a lot more. For example, I was busy working on a project, but heard about some new TTS apps, so I told my agent to download and install Moss and OmniVoice, make some audio clips to make sure they run, and let me know when it's done. Of course everything worked fine. Great for multi-tasking. 9. Give your agent temporal awareness of the world around it. Ever used cloud models that argue with you about the date? Or wished your model knew when you were nearing your max context, so it could automatically start writing a session summary? What you can do is inject "metadata" into your agent either on session start and every turn (preferably both), giving it information like date, time, context length, max context, hardware and software stack, basically anything you want. With that, you can do all sorts of other tricks. For example (this should probably be its own "thing you can do with qwen", but whatevs), I made it so that my agent can swap its own model when it hits context limits: I can launch a session with a backup model. Because my agent can always see context, when it gets too high, it can swap to a backup model with a larger context on its own - all without restarting the server. 10. Give your agent memory that loads the moment you launch it. My agent ends each session writing a session summary of what we discussed. You can have your startup routine or launcher concatenate different sources into its context on launch. For example, my code always loads the most recent dated session summaries, and the previous day's, on launch, so it has a snapshot of recent events. You can expand this to be any additional documents you want, so just use your imagination. For example, my agent also loads reminders, and personal reflections it made at the end of the prior session (though I don't recommend the reflections anymore, because I've come to realize it contaminates context, but I'll share that at another time) Bonus: (I remembered this right as I was finishing, so I figured I'd toss it in because it's honestly one of the most important) - BUILD YOUR OWN HARNESS. Everyone's talking about pi, hermes, etc. I decided to just build my own using Qwen. It's a lot more work, but it has a much better payoff because you learn how these systems work and you can come up with your own really unique solutions using that knowledge. For example, the moment I learned about proxies, I figured out how to do all sorts of cool things with context compaction, history modifications, sanitization, jinja template hacks, hooks, etc. Anyway, I hope this helps inspire you new guys. I would recommend learning things from the ground up, you'll level-up faster. And get your Qwen access to online tools fast so it can do research and help you out. There's a bunch of other tricks I figured out, so maybe I'll save those for another post later on, but I think if you can get these up and running, you'll be on your way. Take care! Grunge https://preview.redd.it/5avp0volewvh1.png?width=1129&format=png&auto=webp&s=0fb9f82fde42d69ee4e61c9dbb6ffcdda856275b
P.S. - I'm old-school forum/deviantart gang, so I keep ctrl+biu/shift+l on a swivel and have written bold-flavored posts like this for 20+ years. 100% human written. Receipts at bottom of post if you're interested. Only mentioning it because organization usually brings out the "this is AI-written slop" trolls.
submitted by /u/GrungeWerX
[link] [comments]
---|--- -
π exe.dev Shake to Tell Shelley rss
When I want to improve one of my iOS apps, I shake my phone, type in a prompt, and off it goes to Shelley, together with a screenshot!

Iteration (culture) is eating planning (strategy) for lunch.
I'm finding that grinding down the friction, even as minimal as getting myself to the agent input, enables iteration.
Ideally, you could just customize the app from within itself, like Pliable does, but that would be against the app store rules.
-
π 3Blue1Brown (YouTube) There's never been a better time to go into math rss
Sharing a few thoughts on the future of math These videos are funded directly by viewers: https://3b1b.co/support An equally valuable form of support is to simply share the videos. Home page: https://www.3blue1brown.com
If you want a finger on the pulse of how mathematicians are feeling right now, take a look at this post on Proofs and Prompt: https://proofsandprompts.com/2026/10/08/100-reactions-to-100-solutions/
Timestamps 0:00 - Math student angst 3:10 - How does math work? 11:24 - A proof machine 25:12 - A conjecture machine 26:59 - A theory machine 31:31 - If AI is better at everything 34:58 - The best time to enter math
Secret Endscreen Vlog: https://youtu.be/4GV1qlv_3qU
These animations are largely made using a custom Python library, manim. See the FAQ comments here: https://3b1b.co/faq#manim
Music by Vincent Rubinetti. https://vincerubinetti.bandcamp.com/album/the-music-of-3blue1brown https://open.spotify.com/album/1dVyjwS8FBqXhRunaG5W5u
3blue1brown is a channel about animating math, in all senses of the word animate. If you're reading the bottom of a video description, I'm guessing you're more interested than the average viewer in lessons here. It would mean a lot to me if you chose to stay up to date on new ones, either by subscribing here on YouTube or otherwise following on whichever platform below you check most regularly.
Mailing list: https://3blue1brown.substack.com Twitter: https://twitter.com/3blue1brown Bluesky: https://bsky.app/profile/3blue1brown.com Instagram: https://www.instagram.com/3blue1brown Reddit: https://www.reddit.com/r/3blue1brown Facebook: https://www.facebook.com/3blue1brown Patreon: https://patreon.com/3blue1brown Website: https://www.3blue1brown.com
-
π Kagi release notes Oct 16th, 2026 - Smarter search widgets, Privacy Pass upgrades, and a calmer Assistant rss
Search
-
We added a small animation to the coin widget β and clicking the coin does another flip! Try it for yourself!
-
We've increased the Quick Bangs and Quick Snaps limit from 20 to 50 #11480 @Kage), and known scam / phishing sites are now blocked when Safe Search is enabled, rather than just being downranked.
- The weather widget has been updated. Its triggers have been improved and now support more than 40 languages. This change closes several issues: #3348 @CrunchyFritos, #4525 @lawngnome, #4612 @laiz, #3326 @ak42, #6474 @bram
Improvements and bug fixes
- Double Quotes not working properly #11354 @LC
- News search with "Belgique (BE-fr)" region filter returns Dutch results instead of French #10236 @Renaud
- In video search order by view doesn't work #11628 @Adamant
- Blocked TLD shown in Blast from the Past #9155 @dreifach
- Localhost URL in search results #11577 @tongkun
- Kagiβs result for "parsec" is wrong #11459 @JetForMe
- Weird definition for "bar" #10384 @Tassels
- Selection option in search suggestions does not search #11512 @GreyHill
- When keyboard shortcuts are disabled,
Cstill opens the control center on the search results page #11397 @magiruuvelvet - In image search, clicking on "Advanced" doesn't do anything #11524 @smartbeach
- Navigation header graphical glitch in image results sharing page #11494 @matt-lebl
- Podcasts search tab has wrong class #11659 @MarioAichinger
- Clear icon is not centered properly #11626 @chrille0234
- Using Kagi HTML (no JS) breaks session url copy button #11399 @larke12
- Kagi Search: unable to login using EWW browser #8055 @geneg1
- Unable to sign in to account w/ password when using alternative login method #2740 @ChristenGottschlich
- Upgrading member in family to ultimate leads to missing amount copy #11639 @Salzian
Browser Extensions & Privacy Pass v1.0.13
- Kagi Search Extension Firefox Container Support #11563 @michaeljcallahan
- Provide option to disable adding context menus in Firefox extension #8139 @emptyjar
- Privacy Pass now works with Quick Answer & Inline Summarize features
- Fetching session cookies no longer fails under First-Party Isolation (
privacy.firstparty.isolate), which is the default in the Tor browser - Website Info doesn't work on Privacy Pass #11609 @Kagi_Search_User
Assistant
-
Response steps are now fully collapsible, giving you a calmer space to get all your work done.
-
A Help menu has been added to the sidebar for quick access to helpful links.

Apps
- We saw reports from users unable to send follow-up messages on the mobile apps. This issue has been resolved. We apologize for the inconvenience.
- Cannot send messages to the Assistant #11640 @spiffytech
- Canβt continue conversations on iOS #11633 @jc
- Assistant canβt send message iOS #11623 @CanadianUser73
Improvements & Bug Fixes
- Add Gemini 4 Argon #11687 @Mateo-Grgic
- Kagi Assistant Research agent crashes on specific arxiv paper #11472 @antiwashington
- Create Thread in Folder Not Working #11508 @NotNayte
- Assistant spams network requests while mousing over thread list #11637 @igakagi
- Assistant switches languages mid-conversation #11504 @jstolarek
Translate
- Kagi Translate has turned my blog post into a kagi.com page that outranks me, untranslated #11490 @AviD
- Centred, dynamically expanding YouTube subtitles are nearly unreadable #10283 @JR
Translate Extension
-
-
π r/LocalLLaMA China proposes export controls on 23 AI technologies (including large models, agents & clusters); already open-sourced tech is exempted rss
On October 16, 2026, Chinaβs Ministry of Commerce and Ministry of Science and Technology released a draft revision to the Catalog of Technologies Prohibited and Restricted from Export. It proposes adding 40 technologies across AI, biomedicine, and solar PV, of which 23 are AI-related (covering foundation/large models, intelligent agents, computing clusters, and information processing technologies).
Public comments are open until November 15. Temporary pre-export registration requirements for the covered technologies take effect immediately.
Key points relevant to open-weight models:
β’ Technologies already made public via open-source releases or academic publications are explicitly exempted and not subject to the controls.
β’ Open-sourcing AI technologies, plus certain other activities (e.g., Chinese firms building their own overseas compute centers), are eligible for streamlined automatic licensing.
β’ Providing access via APIs, apps, websites, or SaaS is generally not treated as a technology export.
β’ Overseas local deployment of restricted models can fall under the rules (with possible facilitation in lower-risk cases such as a companyβs own overseas cloud).This is not a blanket ban on open-weight models. However, new models that have not yet been released may face registration or approval steps before their weights or source code can be transferred abroad (thresholds based on performance, parameters, data sensitivity, etc. are still being defined). Chinese labs such as DeepSeek and Qwen could see additional compliance requirements on future open releases.
Source
https://m.bjnews.com.cn/detail/1792137269129878.html
submitted by /u/Stannis_Loyalist
[link] [comments] -
π DioxusLabs/blitz v0.3.0-beta.4 release
v0.3.0-beta.4
-
π HexRaysSA/plugin-repository commits sync repo: +7 releases rss
sync repo: +7 releases ## New releases - [IDA-MCP-Hub](https://github.com/captain-ai-hub/ida-mcp): 0.9.7, 0.9.6, 0.9.5, 0.9.4 - [functionloader](https://github.com/tien0246/functionloader): 0.1.1 - [mcrit-ida](https://github.com/familiary/mcrit-plugin): 2.1.1, 2.1.0 -
π OmniNull/OmniWM Canary 20261016-0427 (ccc7f45c) release
Automated canary build of
main. It is signed and notarized like a release but skips the owner review, so treat it as unstable.See the canary guide to install, update, or return to stable. For everyday use, download the latest stable release.
- Commit:
ccc7f45cff9a - Base tag:
canary-20261015-0437-38680472040-1
Changes since canary-20261015-0437-38680472040-1
ccc7f45Merge PR #881: Respect Reduce Transparency in shell tests39c14e3Merge PR #879: Fix battery sampling and shell test assumptions48b8a07Merge PR #878: Split palette selection dispatchffff96dPreserve Dwindle insertion animation continuity111c481Merge PR #875: Add directional Dwindle drag insertionea1af59Merge PR #828 updates for quiet-arrival plan acceptanceb452665Assert the quiet token survives a rejected layout plan53fee12Keep the blur and badge tests independent of Reduce Transparency127c4cdKeep quiet-arrival tokens until their layout plan is acceptedabff48cPreserve targeted window fields in generated IPC encodersd140d45Render each Celestial dashboard tab on its own in the test909c060Split palette selection dispatch out of selectCurrent5233292Expect the forecast rain chance in the system percent formatf01d543Read the charging flag once when sampling the battery51fe5efMerge PR #828: Add targeted window actionsc6e1dc5Act on a window's column from the CLI without moving focus439c97bSkip the palette key-window test while the console is locked404dc96Add per-monitor Niri span overridesca24069Merge PR #873: Preserve custom Niri spans when visible counts change49fbaeeAdd directional Dwindle drag insertion5aff5a5Correct Niri resize baselines and action IDsaf49efeMerge PR #874: Stop banking Niri resize steps below minimum sizes8c17a2atest(niri): drive the per-monitor visible containers override in the span testscfc4007Complete and streamline the Niri movement preferenceb45151afix(niri): step relative primary resizes from the shown spanbca9c36fix(niri): keep a custom default span when visible containers changeb3cdf11Merge PR #829: Add Niri movement stacking preferenceca5aa5dMerge PR #835: fix Dwindle resize limits for collapsed splits98bd2c6Remove comments from Accessibility revocation handling13b10c0Merge PR #837: Stop services when Accessibility is revoked5cc4d33Clear command search before switching palette modesfff1ac7Merge PR #861: Add palette mode hotkeysf759c2eMerge PR #869: Reduce interactive resize AX writes500747eMerge PR #864: batch inactive workspace window parkinge474fd0Merge PR #865: create SkyLight transactions only when neededdf5fb8fMake lock activation tests deterministic39a6255Merge PR #862: track session lock stated26aa08perf(resize): skip redundant size writes and readback for moved neighborsee8c8cdperf(workspace): park inactive workspace windows in one batch7e67eddperf(skylight): create the scoped transaction on first usef316514Re-check session lock state on app activation while lockedf162854Track lock state from session notifications instead of app focus5592211Add hotkey actions for opening the command palette in a mode10e2a61Stop services when Accessibility is revoked while running59aa412Fix Dwindle resize limits for collapsed splits0adc29bAdd Niri option to move windows without stacking into columns
- Commit:
-
π backnotprop/plannotator v0.28.22 release
Follow @plannotator on X for updates
Missed recent releases? Release | Highlights
---|---
v0.28.21 | Message an agent from the Inbox, video attachments, Open in for attachments, Code / Tests / Generated in code review, writes from other websites refused
v0.28.20 | Inbox search (βK), real folder names for projects, data files open in the code view, word-only replies leave questions open
v0.28.19 | Ask this session in T3 Code, folder sessions load shared stylesheets and images, the agent note asked once per agent, Copy connect prompt
v0.28.18 |plannotator inboxconnects your agents, agents are told when to use the Inbox, rendered Markdown in code review, Inbox Settings in sections
v0.28.17 | The Inbox on iPads and narrow windows, the reply bar no longer cuts off "Keep open", a Pi crash on/reloadfixed
v0.28.16 | The Inbox on a phone, a doorbell for new questions, Mark read, step through a thread's files, replies when the asking session ended
v0.28.15 | Long Inbox threads fold to what is new, "Skipped N questions" replies, Inbox list and sidebar fixes
v0.28.14 | Agents can replace an earlier question, comment on a guided review in the Inbox, issue numbers link to the repository
v0.28.12 | Update notices andplannotator update, attach any file to an Inbox message, questions with context, links to attached files
v0.28.11 |plannotator inbox --helpprints a full guide for agents, and the plannotator.ai/inbox install prompt
v0.28.10 | The Inbox over your tailnet withplannotator inbox --tailscale, images in agent messages load, click anywhere on an attachment tile
v0.28.9 | Large Inbox messages throughplannotator inbox mcpfixed, an Inbox sidebar you can close and resize, Edit Mode in reviews of several files, the new Pi logoWhat's New in v0.28.22
Mostly Inbox work: a silent π for messages that need no reply, a full view for files, and one viewer for every image and file in a thread. Two changes reach every Plannotator session: each one now prints its URL, and
PLANNOTATOR_BROWSER=nonereally opens nothing. 12 PRs.π Looks good
A thread's foot now has π Looks good beside Reply. It tells the agent "read it, nothing more needed" without starting a turn: the thread moves to Quiet and the agent sees the π the next time it reads the thread (
read_thread, orwait_for_reply, which now answersacknowledged). Undo takes it back. The button shows only when nothing in the thread waits on an answer. The in-thread New message button is gone; Reply and the compose button cover it.Full view for files
The eye button (or ββ§X on an HTML file) hides the tools on a full-screen file, as plan review does for HTML. A small floating bar keeps the comment count, the file picker and the way back. For HTML files the choice is shared with plan review.
One viewer for a thread's images and files
Images inside an agent's message now open in the same viewer as attachments. You can comment on them, draw on them, and step through every image and file in the thread with the arrow keys or the picture list. The Inbox keeps a copy of each image as it was sent, and says so when the file on disk changes. Plan review and annotate get the lighter version: clicking an image steps through every image in the document.
Every session prints its URL
Every review, annotate and plan session now prints
Plannotator session ready: <url>before it tries to open a browser, on every host. If no browser opens (a remote machine, a container, a terminal without one), the link is still on screen. This brings back the fix from #1184.PLANNOTATOR_BROWSER=noneopens nothingPLANNOTATOR_BROWSER=nonenow opens nothing at all, local or remote, for every command and on Pi. Before, some paths fell through to the system browser. The session prints its URL instead.Behavior change:
PLANNOTATOR_BROWSERset tofalse,0,off,no,true,1or:now also means "open nothing". Before,true,1,false,0and:ran the default browser.BROWSER=true, which Claude Code's agent view sets, is unchanged and still treated as unset.Additional Changes
- A notification for every new thread an agent starts, even with the Inbox in front; the "Click to turn on sound" row is gone, and the first click arms the sound (#1941)
- Toasts centered on the window , never on one pane (#1948)
- Inbox list polish: the selected row is an inset pill, a cut-off name shows in full on hover, a cleaner focus ring, and a message's header no longer moves when it opens (#1937)
- Compose's To picker shows just the agent and the project (#1935)
- Copy connect prompt is a pill with the agents' icons (#1936)
- Groundwork for the upcoming phone app (#1942) and a test fix (#1950)
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: The plugin and the
plannotatorbinary update separately, so run the install script above as well. In a terminal:claude plugin marketplace update plannotator claude plugin update plannotator@plannotatorThen restart Claude Code. Inside Claude Code, run
/plugin marketplace update plannotator, then open/pluginβ Installed β plannotator β Update now.Pi:
pi update --extensionsOpenCode: Re-run the install script above. It now also clears the OpenCode 2 plugin cache.
What's Changed
- Inbox compose: To picker shows only the agent and the project by @backnotprop in #1935
- Inbox: the connect prompt row becomes a pill with the agents' marks by @backnotprop in #1936
- Inbox: polish β inset selected row, label tooltip, focus ring, steady message head by @backnotprop in #1937
- Every session prints its URL (re-applies #1184) by @backnotprop in #1938
- PLANNOTATOR_BROWSER=none opens nothing by @backnotprop in #1940
- Inbox: notify on every new thread; drop the 'Click to turn on sound' row by @backnotprop in #1941
- Inbox phones: door routes for compose, send to another session, search, project menu, skills, uploads and markups by @backnotprop in #1942
- Inbox: one viewer for a thread's images and files by @backnotprop in #1944
- Inbox: full view for files by @backnotprop in #1946
- Inbox: π Looks good (silent acknowledge); drop the in-thread New message button by @backnotprop in #1947
- Inbox: center the toast on the window, not the pane by @backnotprop in #1948
- Test: inline-image label test allows the date by @backnotprop in #1950
Community
Thanks to @technicalpickles for #1184, which asked for the session URL on every start and is what #1938 restores.
Full Changelog :
v0.28.21...v0.28.22 -
π New Music Releases Caspian - Caspian rss
Caspian - a new release is available:
- 2026-10-16: Caspian (Album)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-
π New Music Releases Max Richter - While the Flood Rages rss
Max Richter - a new release is available:
- 2026-10-16: While the Flood Rages (Album)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-
π New Music Releases Paul Oakenfold - Eyes on You (Big Brother Theme) rss
Paul Oakenfold - a new release is available:
- 2026-10-16: Eyes on You (Big Brother Theme) (Single)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-
π New Music Releases Kings of Leon - KOYSAR rss
Kings of Leon - a new release is available:
- 2026-10-16: KOYSAR (Single)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-
π Ampcode News See Your Runner's Desktop rss
You can now see and control your macOS or Linux runner's desktop. This is nice for trying native apps that Amp builds for you, such as iOS apps:
Turn on Share This Mac's Display under Settings βΊ Runner in the macOS app, or start your runner with
amp --no-tui --desktop.

Your Amp client connects directly to the runner, so it's nearly instant when the runner is on your local network or nearby.
Read See and Control the Runner's Desktop for more details.
-
- October 15, 2026
-
π IDA Plugin Updates IDA Plugin Updates on 2026-10-15 rss
IDA Plugin Updates on 2026-10-15
New Releases:
- functionloader FunctionLoader 0.1.1
- functionloader FunctionLoader 0.1.0
- mcrit-plugin ida-v2.1.1
- mcrit-plugin 1.0.1
- mcrit-plugin ida-v2.1.0
- oh-my-pi v18.11.1
Activity:
- capa
- e73de368: ci: speed up tests on macos-15-intel and improve vivisect cache reuseβ¦
- disrobe
- 2f2b546a: chore(xtask): regenerate the published figures
- 6a1c5d75: test(bench): pin the dex head-to-head at 210 of 238 clean regions
- 5e363267: docs(native): describe rust slot calls, dispatch loops and refusals
- 992aeb92: fix(cli): name the classes the rust emitter still refuses
- 69bd248f: test(nativelang): pin pseudo-rust rates that now match pseudo-c
- 47b42336: test(native): grade msvc fixtures and goto shapes as rust by execution
- 69f9c4c8: feat(native): emit rust for slot calls and unstructured gotos
- 827799dc: docs(binfmt): describe nsis output directories and repeats
- 3af74215: test(binfmt): grade nsis layout and repeats on makensis builds
- fe2ead84: fix(binfmt): keep nsis output directories and repeated members
- 0bc177d7: chore(xtask): regenerate the published figures
- d2e31185: test(dotnet): pin edgecases whole-type recompile at 22 of 35
- 10c44e0b: fix(dotnet): take by-ref argument modes from the callee signature
- 948aea12: ci(github): route the rust inventory tests and shard-three cli build
- 2a43ad63: test(nativelang): rebuild rust fixtures from the committed remap recipe
- d5fc9616: fix(mba): refuse saturation by name when a rule table fails to load
- 92d1a047: test(jvm): pin 130 of 131 edgecases methods as execution-equivalent
- 51b2158f: fix(jvm): recover nest getters and refuse non-java bodies by name
- 16b9a49b: test(py-decompile): pin cpython 3.8 at 4893 and 3.14 stdlib at 17637
- ad039083: fix(py-decompile): refuse malformed try structures by name
- functionloader
- idawilli
- mcrit-plugin
- 3945089d: Merge pull request #55 from familiary/release/ida-2.1.1
- 362123f0: Release the IDA plugin as 2.1.1
- 185b3def: Merge pull request #54 from familiary/fix/ida-live-query-hang
- 31ddbc45: Start the GUI integration's no-view refresh from an IDA timer callback
- 83677505: Hand IDA request results to the main thread with a queued Qt signal
- a365522e: Merge pull request #53 from familiary/ci/binja-release-from-merged-veβ¦
- e90694e0: Release the Binary Ninja plugin from a version raised through a PR
- e93c66e4: Merge pull request #52 from familiary/docs/familiary-links
- 995e817d: Point the mcrit, docker-mcrit and mcrit-data links to familiary
- 2ebf444e: Version 1.0.1
- 77519a28: Merge pull request #51 from familiary/release/ida-2.1.0
- 77ee4c8f: Name the 1.4.5 tag and the manifest version among unusable Binary Ninβ¦
- cc9901a1: Release the IDA plugin as 2.1.0
- 0d8bf83c: Merge pull request #50 from familiary/fix/47-job-sample-match
- f312b768: Match jobs to a sample on the samples they name
- e495a4e2: Merge pull request #41 from r0ny123/ida-perf
- df487781: Name an import by ordinal that IDA cannot name by its ordinal
- 1db732ea: Merge main into ida-perf
- ebe3637f: Merge pull request #45 from r0ny123/align-client-1.15
- 9d106a5d: Merge pull request #44 from r0ny123/match-graph-followups
- oh-my-pi
- a5acfb26: perf(natives): trim again once job results are freed on the JS thread
-
π crmne/spotifast Spotifast v0.13.3 release
Spotifast 0.13.3 strengthens sign-in, cover art downloads, MilkDrop preset loading and playback connections. It keeps tokens and credentials out of debug logs and makes playback's push connection use your configured proxy.
Download Spotifast: Mac Β· Windows Β· Windows ARM Β· Linux Β· Linux ARM Β· Flatpak Β· AppImage Β· AppImage ARM
On Windows, pick the
.msi. The setup program (-setup.exe) is still attached so that installs from 0.12.0 and earlier can update through it.Fixed
- Sign-in no longer gets held up by another program on your computer. The local sign-in listener now limits how long it waits for each connection and how much it reads. By @crmne.
- MilkDrop preset packs stay inside the presets folder. Pack entries must name a single
.milkfile, including on Windows. By @crmne. - Oversized cover art is refused during download. Downloads are limited as they arrive, and stored zip entries must match their declared size. By @crmne.
- MilkDrop rejects presets with overly long shader identifiers. Spotifast carries a projectM fix that prevents overly long identifiers from corrupting memory. By @crmne; thanks @kblaschke. (projectM #1049)
- Tokens and credentials stay out of debug logs, even at trace level. Spotifast carries the fix in librespot until it is released upstream. By @crmne. (librespot #1806)
- Playback's push connection uses your configured proxy. Spotifast carries the librespot proxy fix by @photovoltex. (librespot #1665)
- Malformed network handshakes no longer crash playback. Spotifast carries a librespot fix that rejects oversized handshake packets. By @crmne. (librespot #1807)
Thanks
@thealps01-netizen for the reports, @kblaschke for the quick response on projectM, @photovoltex for the librespot proxy fix, and everyone who reported problems since 0.13.2.
Full changelog :
v0.13.2...v0.13.3 -
π earendil-works/pi v1.3.0 release
New Features
- Choose where
/shareuploads:sessionShareDestinationselectsauto,gist, orradius. See Sessions and context and Export or share a session. - Cache-preserving thinking level changes on OpenAI GPT-6 : changing the thinking level mid-session with an API key keeps the prompt cache.
- Kimi Code over Chat Completions : tools added mid-conversation no longer invalidate the prompt cache.
models.jsonbase URL overrides must now include/v1. See Providers. - Clean model switching : thinking from a previous model is dropped instead of being shown to the new model as text.
- Resumed sessions keep their active tools :
--tools +name/-nameapplies on top of them. See Tools.
Added
- Changing the thinking level mid-session on OpenAI GPT-6 models (API key) now keeps the prompt cache (#10853)
- Added the
sessionShareDestinationsetting to choose automatic, GitHub gist, or Radius uploads for/share(#10870 by @vegarsti)
Changed
- Changed the
kimi-codingprovider to use OpenAI Chat Completions athttps://api.kimi.com/coding/v1, the protocol used by the official Kimi Code client. K3, K3-256K, and Kimi For Coding now accept tools added mid-conversation without invalidating the prompt cache.models.jsonoverrides of thekimi-codingbase URL must now include/v1(#10720) - Changed model switching to drop thinking blocks from earlier assistant messages produced by a different model, instead of sending them as plain text. The new model previously saw the old model's reasoning as part of its replies and could start writing its own reasoning into the visible answer (#10995)
Fixed
- Pinned internal Pi dependencies to exact release versions to prevent fresh installs from mixing incompatible packages (#10865)
- Fixed resumed sessions dropping tools activated during the session. Resume now restores the session's active tools, with
--tools +name/-nameentries applied to them, unless--toolswith tool names,--no-tools, or--no-builtin-toolsselects tools explicitly (#10785) - Fixed stopping a codemode script or reaching its deadline waiting for a non-interruptible built-in to return on Bun (#10748)
- Fixed repeated codemode timeouts or aborts accumulating surviving workers; admission now limits live workers to two across sessions, counting cancelled workers until actual exit (#10748)
- Fixed
--modelchoosing a provider by catalog order when several providers offer the match; Pi now prefers the provider with credentials and otherwise reports the ambiguity.--modelsandenabledModelsadd a model for each provider that offers it and warn about the ambiguity (#10160) - Fixed
readline-range labels for numeric-string or null arguments in the TUI, session tree, HTML exports, and examples (#9887) - Fixed the Nix flake build failing when a provider switched APIs: the model catalog pin is now refreshed from the newest published catalog when its model API groups differ, and releases pin the newest catalog and build with it before tagging (#10985)
- Fixed the Nix package putting its Node.js first on
PATH, which made bash tool shells use Pi's Node instead of the user'snode/npm. Pi's Node is now only a fallback (#10519) - Fixed prompt templates dropping empty quoted arguments (
""or''), which shifted later positional arguments and prevented positional defaults from applying (#10867) - Fixed the Nix package build failing in its install check because it still expected chord and esbuild, which Pi no longer depends on
- Fixed tool-call argument parsing dropping fields when a string contains an invalid
\uescape such as\usepackage(#10868) - Fixed Anthropic and Bedrock Claude requests failing with a 400 when an error tool result contains images; the images are now sent after the tool results of the turn, so the model still sees them (#10794)
- Fixed OpenCode Go Gemini models failing with a 404 by moving OpenCode Zen and OpenCode Go to the
opencode.ai/inferenceendpoints, and added Google Generative AI support to the OpenCode Go provider - Fixed OpenCode Go MiniMax M2.7 failing with "Model does not support this protocol" by using the Anthropic Messages API
- Fixed automatic retry not triggering for gateway
Unable to forward upstream streamerrors (#10920) - Fixed automatic retry not triggering for
The service is temporarily unavailableerrors, which also made compaction fail on the first attempt (#10965) - Fixed OpenAI-compatible responses showing thinking after the answer when a proxy such as LiteLLM sends reasoning and content in the same stream chunk (#10926)
- Fixed Gemini 4 Argon requests on Google Vertex failing with "Thinking budget is not supported", and its thinking level being ignored on the Gemini API (#10890)
- Fixed Xiaomi MiMo models failing with a 400 at the
minimalthinking level; they now expose only theoffandhighlevels (#10818) - Fixed
openai-codex/gpt-6.1-solusing a 272K context window instead of the 500K window Codex now provides (#10840) - Fixed tool calls whose final arguments are malformed JSON silently running with only the fields parsed before the error; they now fail validation and show the model the raw arguments it sent (#10897)
- Fixed Claude Haiku 5.5 and Claude Opus 5 not supporting the
offthinking level (#10753) - Fixed
done()of an extension'sctx.ui.custom({ overlay: true })closing the topmost overlay instead of its own, which left the finished overlay on screen and another extension's dialog unresolved (#10648, #10999 by @masonc15)
- Choose where
-
π r/LocalLLaMA Introducing Muse Spark Open: the most capable US open-weight model to date rss
| Hey r/LocalLlama - Today weβre excited to release Muse Spark Open, the most capable US open-weight model to date. Built for coding and agentic work, it excels at long-horizon tasks, complex software engineering, and multi-step reasoning. Key Model Specs- Parameters: 816B total / 42B active
- Context Window: 1M tokens
- Modalities: Text, image, video, audio
- Safety Post-Training: Additional safety post-training, with evaluations conducted under Meta's Superintelligence Scaling Framework.
Inference, fine-tuning & deployment
- Helion GPU kernels: Ships with custom, auto-tunable Helion kernels in SGLang, providing 1.03β3.95Γ kernel speedups across NVIDIA and AMD GPUs and a 3% E2E improvement on AMD MI350.
- Engines: Runs on leading inference engines including SGLang, vLLM, TensorRT-LLM, Hugging Face Transformers, Apple MLX, llama.cpp and Unsloth, with optimizations for AMD, Apple, Intel and NVIDIA silicon.
- Optimized for Apple Silicon: To help make advanced models more accessible, Muse Spark Open is optimized to run on two Apple M5 Ultra Mac Studios with the latest MLX framework.
- Fine-tuning: Developers can further customize the model with PyTorch, including TorchTitan for fine-tuning.
- API platforms: Available today through Baseten, Fireworks AI, Groq, Modal, Nebius, OpenRouter, Together AI.
- Where to download: Model weights are available for download on Amazon SageMaker AI, Google Cloud Model Garden, Hugging Face, and Microsoft Foundry Models.
Weβre releasing the weights under the Muse Model License, with limited commercial terms that let many developers use it for free. We look forward to your feedback! Learn more on our research blog: https://go.meta.me/museopen
Download the weights: https://huggingface.co/collections/meta-models/muse- spark-open submitted by /u/AIatMeta
[link] [comments]
---|--- -
π The Pragmatic Engineer The Pulse: new trend of building βinternal vibe-coding appsβ at tech companies rss
Hi, this is Gergely with a bonus, free issue of the Pragmatic Engineer Newsletter. In every issue, I cover Big Tech and startups through the lens of senior engineers and engineering leaders. Today, we cover one out of four topics from last week 's issue of The Pulse . Full subscribers received the article below seven days ago. If you 've been forwarded this email, you can subscribe here .
When I visited Ramp's headquarters last month in New York, I talked with the four-person development team behind 'Glass,' which is Ramp's "internal Lovable." This name refers to Lovable.dev, the leading AI vibe-coding tool.
Ramp's 'Glass' is basically a vibe-coding platform for non-engineers to create complex applications which run internally. They can share the applications they make with others to use and modify. This is what the landing page looks like:
The
landing page for Glass. Source: RampUsers can connect various internal systems as "connectors" that can then be used as data sources for their apps:
Setting
up connectors in GlassThe team showed me a few popular apps, including a custom CRM built by someone in marketing, which had 50+ fields and filters on-screen. It seemed overwhelming to me, but the creator reportedly finds it extremely powerful to use.
Since then, I've learned that many other mid-sized-and-above companies are building similar "internal Lovables" that don't usually see the light of day in the outside world.
As of today, Ramp has launched Glass as an external product, describing it as "An AI workspace where knowledge compounds." It's interesting to see Ramp productionizing a formerly internal-only tool!
Stripe 's "internal Lovable", Harbor
Stripe shared details last month about its own vibe-coding tool (my words) that they refer to more elegantly as an "AI- assisted prototyping tool" called 'Harbor'. It was built by a single engineer in around six weeks. Here's an example of a prototype built with Harbor:
The
prototype Harbor built (left) and the prompt history to build it (right).
Source:StripeWhy build your own internal "prototyping tool?"
Lovable, Replit, Retool, and other vendors specializing in prototyping and building internal tools already exist, so what's the point in bothering to build your own? Here are the main reasons I've gathered:
- A tiny investment. Stripe had a single engineer build Harbor v1, and Ramp had two engineers put it together in a matter of weeks. For companies with hundreds of engineers or more, this is a very reasonable time/effort investment.
- Expose internal data to be used. Because the tool produces internal-facing prototypes/tools, it's a lot safer to expose internal data sources to it. Doing the same with third-party tools like Lovable or Replit would be risky.
- Use the existing design library. Both Ramp and Stripe paid special attention to ensuring that the apps generated do follow internal design guidelines. Third-party apps are not great at this, out of the box.
- Onboard most non-engineers, when done right. Ramp's Glass project is extremely widespread, to the point that onboarding to Glass and creating a simple tool is now part of new hire onboarding. Pretty much every non-engineer uses Glass to build their own tools.
- Don 't wait on vendors to build what's needed. Why spend time and effort on tailoring a vendor solution which is straightforward enough to build? It would probably be a comparable effort to select the right vendor to go with, in terms of compliance reviews and price negotiations.
- It 's educational and helps engineers to upskill. Engineers building these tools get better at building and maintaining AI infra at a time when recruiting engineers who are experts at AI infra is hard enough. Internal Lovables are a way to train more devs in-house by investing a few weeks in putting a solution together.
Among tech companies that have built their own coding agent harness that runs in their cloud, I expect many to build internal vibe-coding tools for non- engineers like Stripe and Ramp have done. After all, it's not that complicated, gets much higher adoption than vendor products, and helps build out more AI infra expertise in-house.
Read the full issue of The Pulse this is from, or check out this week 's The Pulse. This week's issue covers:
- OpenAI software engineer accused of spying. A software engineer working on OpenAI's Agents SDK has been arrested after allegedly planting a secret audio recording device in a meeting room at the AI company. The FBI and US Department of Justice are involved. The details read like the plot for an espionage movie.
- Anthropic builds its own source control system. Git had too many performance problems at 30,000 PRs per day, so Anthropic built its own. I talked with the team, including asking why they didn't open source its new system, 'Scion.'
- New trend: AI-coding rounds in Big Tech? Meta and Google are adding an additional "AI-assisted" coding round to the interview loop. From a hiring manager's perspective this sounds sensible, and I bet other places will follow - or have already done.
- Industry Pulse. An observation that college students are not always so "AI-native", Netflix lets go 6% of staff, a16z disbands recruitment team, Satya Nadella warns against trusting AI models (and frontier labs), and Meta's new state-of-the-art 'Muse Wonder' model.
-
π r/LocalLLaMA nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB Β· Hugging Face rss
| https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB-GGUF https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB-LiLiCorr-GGUF NVIDIA Nemotron 3.5 Bolt 74B-A9B 24GB is a vision-language model (VLM) designed to run everyday agentic tasks locally, using a native 2-bit quantization to fit in 24GB of memory and run alongside other applications. It optimizes intelligence and speed per GB. It aims to achieve the optimal balance between speed and intelligence, being faster than most popular dense models while smarter than most popular MoE models with a similar memory footprint. This model is ready for commercial or nonβcommercial use.Model Summary
| Total Parameters | 74B (9B active)
---|---
Architecture | Mamba-2βTransformer hybrid LatentMoE with a C-RADIO v4-H vision encoder
Precision | IQ2 (2-bit quantization with quantization-aware training)
Context Length | Up to 256K tokens
Inputs / Outputs | Text, images, and video / text
Deployment | 24GB packed model; vLLM on NVIDIA Ampere (A100), Hopper (H100-80GB), or Blackwell
Speculative Decoding | LiLiCorr drafter via DFlash; 7 speculative tokens in the companion Bolt vLLM recipes
Reasoning Mode | Chat-template controls (enable_thinking=True/False), inherited from the Super 3.5 VL client
Recommended Sampling | Text: temperature 1.0, top_p 0.95 (inherited from the Super 3.5 VL client)
Best For | Running everyday agentic tasks locally
License | OpenMDW-1.1Model Overview
Model Developer: NVIDIA Corporation
Model Dates: December 2025 - May 2026
Data Freshness:
- The post-training data has a cutoff date of May 2026.
What is Nemotron?
NVIDIA Nemotronβ’ is a family of open models with open weights, training data, and recipes, delivering leading efficiency and accuracy for building specialized AI agents.NVIDIA Nemotron 3.5 Bolt 74B-A9B 24GB is a vision- language model (VLM) designed to run everyday agentic tasks locally, using a native 2-bit quantization to fit in 24GB of memory and run alongside other applications. It optimizes intelligence and speed per GB. It aims to achieve the optimal balance between speed and intelligence, being faster than most popular dense models while smarter than most popular MoE models with a similar memory footprint.
This model is ready for commercial or nonβcommercial use.
bolt!
submitted by /u/jacek2023
[link] [comments] -
π Locklin on science LLMs are not AGI (though some have internal monologue) rss
The entire marketing message of the leading US based LLM companies seems to be that they will be the first to achieve actual artificial intelligence aka what these dweebs call “artificial general intelligence” or AGI. Furthermore that once a LLM achieves this, it will recursively improve itself, becoming a super-sentient god-like being. Both of these […]
-
π backnotprop/plannotator v0.28.21 release
Follow @plannotator on X for updates
Missed recent releases? Release | Highlights
---|---
v0.28.20 | Inbox search (βK), real folder names for projects, data files open in the code view, word-only replies leave questions open
v0.28.19 | Ask this session in T3 Code, folder sessions load shared stylesheets and images, the agent note asked once per agent, Copy connect prompt
v0.28.18 |plannotator inboxconnects your agents, agents are told when to use the Inbox, rendered Markdown in code review, Inbox Settings in sections
v0.28.17 | The Inbox on iPads and narrow windows, the reply bar no longer cuts off "Keep open", a Pi crash on/reloadfixed
v0.28.16 | The Inbox on a phone, a doorbell for new questions, Mark read, step through a thread's files, replies when the asking session ended
v0.28.15 | Long Inbox threads fold to what is new, "Skipped N questions" replies, Inbox list and sidebar fixes
v0.28.14 | Agents can replace an earlier question, comment on a guided review in the Inbox, issue numbers link to the repository
v0.28.12 | Update notices andplannotator update, attach any file to an Inbox message, questions with context, links to attached files
v0.28.11 |plannotator inbox --helpprints a full guide for agents, and the plannotator.ai/inbox install prompt
v0.28.10 | The Inbox over your tailnet withplannotator inbox --tailscale, images in agent messages load, click anywhere on an attachment tile
v0.28.9 | Large Inbox messages throughplannotator inbox mcpfixed, an Inbox sidebar you can close and resize, Edit Mode in reviews of several files, the new Pi logo
v0.28.8 | The Plannotator Inbox (preview): messages, questions, files and guided reviews from your agents in one local windowWhat's New in v0.28.21
You can now start a conversation with an agent from the Inbox, attach videos, and open files in their own apps. Code review sorts files into Code, Tests and Generated. All servers now refuse writes from other websites. 18 PRs.
Message an agent from the Inbox
A compose button beside Search (or "New messageβ¦" in βK) writes to any live agent session on this computer. Pick the session, attach files by dropping them in, and send. Its reply comes back to the thread. Unsent messages can be saved as drafts.
Video attachments
Agents can attach MP4, MOV and WebM files. They play in the Inbox, and you can comment at a moment in the video.
Open an attachment in its own app
An Open button on each file opens it in your editor, the browser (HTML), the default app, or Finder. Copy path is there too.
Code, Tests and Generated in code review
When a change touches more than one kind of file, the code review file tree splits into Code, Tests and Generated, each with its own counts. Guided Reviews show the same kinds.
Skills in Inbox replies
Type
/or$in the reply box, New message or a file comment to reference a skill. A human-only skill's instructions are sent along with your reply.Tidy sidebar projects
Each project in the Inbox sidebar has a β― menu with Mark all as read and Archive all, with Undo. A project with nothing left in the list hides until something new arrives. Git worktrees (including Claude Code's agent worktrees) now file under their main repository instead of each becoming a project.
Writes from other websites are refused
Behavior change: every plan, review and annotate server now refuses a POST, PUT, PATCH or DELETE that a browser marks as coming from another site, before any route runs. Before, only some routes checked. The VS Code panel, the agent integrations and command-line tools are unaffected. If you reach Plannotator through a reverse proxy that rewrites the Host header, add the proxy's hostname to
PLANNOTATOR_ALLOWED_HOSTS. Open-in no longer falls back to the OS default handler, and served images get a sandbox policy.Additional Changes
- Accept recommended on pick-any questions stays offered until your picks match the recommendation, in plan review, annotate and the Inbox (#1913)
- One-line Inbox toast over the pane it belongs to (#1918)
- Agents learn the
Stopped:andHolds up:lines for questions that block their work (#1912) - A words-only reply to a session that asked twice stays words-only (#1929)
- T3 Code: a stopping worker unregisters first, so a new request starts a fresh one (#1928)
- Inbox groundwork for the upcoming phone app (#1930) and test hygiene (#1923)
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: The plugin and the
plannotatorbinary update separately, so run the install script above as well. In a terminal:claude plugin marketplace update plannotator claude plugin update plannotator@plannotatorThen restart Claude Code. Inside Claude Code, run
/plugin marketplace update plannotator, then open/pluginβ Installed β plannotator β Update now.Pi:
pi update --extensionsOpenCode: Re-run the install script above. It now also clears the OpenCode 2 plugin cache.
What's Changed
- Inbox: teach agents the Stopped: and Holds up: lines by @backnotprop in #1912
- Question cards: Accept recommended stays on pick-any questions until the picks match by @backnotprop in #1913
- Inbox: skill references in the composers (picker, pasted SKILL.md, folded Skills line) by @backnotprop in #1914
- open-in: same-origin and session guards, no implicit OS-default launch by @backnotprop in #1915
- Review: file kinds (Code, Tests, Generated) in the tree and Guided Reviews by @backnotprop in #1916
- Inbox compose, part 1: threads the person starts, drafts, uploads, Pi/OpenCode poll fields by @backnotprop in #1917
- Inbox: a cleaner toast, one line over the pane it belongs to by @backnotprop in #1918
- Inbox: fold worktrees into their main repository's project by @backnotprop in #1919
- Inbox: open attachments in their own apps (Open in) by @backnotprop in #1920
- harden state-changing routes: same-origin + session guards by @backnotprop in #1921
- Inbox compose, part 2: the window (compose dialog, To picker, drafts, uploads, Not delivered) by @backnotprop in #1922
- Tests: never set PLANNOTATOR_BROWSER=none (it opens the system browser); use a real no-op program by @backnotprop in #1923
- Inbox: a menu on each sidebar project (Mark all as read, Archive all, automatic hiding) by @backnotprop in #1926
- /api/image: sandbox CSP, nosniff and CORP by @backnotprop in #1927
- T3: a worker unregisters before it stops answering (daemon.json race) by @backnotprop in #1928
- Inbox: a words-only Send where one session asked twice stays words-only; the phone contract states when a Send skips by @backnotprop in #1929
- Inbox: a message's images on the phone door, with an ETag and 304 by @backnotprop in #1930
- Inbox: video attachments you can watch and comment on by @backnotprop in #1931
Full Changelog :
v0.28.20...v0.28.21 -
π HexRaysSA/plugin-repository commits sync repo: +3 plugins, +6 releases, ~1 changed rss
sync repo: +3 plugins, +6 releases, ~1 changed ## New plugins - [IDA-MCP-Hub](https://github.com/captain-ai-hub/ida-mcp) (0.9.3, 0.9.2, 0.9.1, 0.9.0) - [const-loader](https://github.com/tien0246/constloader) (0.1.0) - [functionloader](https://github.com/tien0246/functionloader) (0.1.0) ## Changes - [IDA-MCP](https://github.com/captain-ai-hub/ida-mcp): - 0.6.0: archive contents changed, download URL changed -
π r/LocalLLaMA New TTS king in town: Fish's Drama 3 35B3A! rss
| Yesterday Fish released this incredible text-to-speech model, so naturally I spent the rest of the day building a great demo for them :D The model is a chunky MoE (35B3A), but it runs well on a DGX Spark. The 4bit quants get very close to the original. You can try it here: https://huggingface.co/spaces/fishaudio/Drama-3 or download the model and run it locally π€ submitted by /u/futterneid
[link] [comments]
---|--- -
π Console.dev newsletter WorkOS rss
Auth and access control.
What we like: Pre-built UI and widgets, but with APIs for full customization of auth flows. Delegate credential storage for third-party logins and mint access tokens on demand. Handles agent auth, SAML, SSO, etc. Complementary features like audit logs, secrets vault, impersonation, access controls.
What we dislike: Verifying sessions across language boundaries e.g. from web / JS to a Go API backend requires some extra work to implement.
-
π Console.dev newsletter GoNIX rss
UNIX with a Go userspace.
What we like: Init, coreutils, networking, etc all written in Go. Statically linked. Includes a package manager, also written in Go. Can upgrade running systems in place. Built on the Linux kernel, then the Go init becomes PID 1. Supports both server and (Wayland) desktop. Website is served by GoNIX itself.
What we dislike: Does have to build some C, which it does with musl.
-
π OmniNull/OmniWM Canary 20261015-0437 (bd832da8) release
Automated canary build of
main. It is signed and notarized like a release but skips the owner review, so treat it as unstable.See the canary guide to install, update, or return to stable. For everyday use, download the latest stable release.
- Commit:
bd832da8b642 - Base tag:
canary-20261014-0432-38510568082-1
Changes since canary-20261014-0432-38510568082-1
bd832daFix editable monitor overrides and surface config errors2edee92Merge PR #855: animate workspace swipes along their gesture axis6e3086aRefactor Swift code to clear repository lint warnings7323872Follow captured window outlines for missing corner radii8fd5fe7Merge PR #857 to update border corner fallbacks6985f3dMerge remote website updates with local focus cleanup15f509bRemove redundant focus clearing during window retirement9e15b47Merge updated PR #858 while retaining local focus handlingabd322dfix(focus): keep externalized focus when a rejected window is retired12cf599Preserve external focus when retiring managed windowsfcf4558Merge PR #858 to clear focus after window closured1ca444Merge pull request #860 from OmniNull/dependabot/npm_and_yarn/website/npm_and_yarn-4f49698a6d8fdb1dfBump the npm_and_yarn group across 1 directory with 3 updatesb9c8d15Document OmniShell with guides and a Luau API reference079a35eReduce redundant work in Desktop settings87d917afix(border): clear focus owner and hide border when last floating window closes68db161fix(border): update corner radius fallback for macos 26+ and handle xpc panel corners3d8594bMirror direction of workspace swipe gesture in animation
- Commit:
-
π Rust Blog Announcing Rust 1.99.1 rss
The Rust team has published a new point release of Rust, 1.99.1. Rust is a programming language that is empowering everyone to build reliable and efficient software.
If you have a previous version of Rust installed via rustup, getting Rust 1.99.1 is as easy as:
rustup update stableIf you don't have it already, you can get
rustupfrom the appropriate page on our website.What's in 1.99.1
Rust 1.99.1 fixes the following regressions from prior releases:
- Missing symbol
wcslen: Some Rust targets were getting link errors for missingwcslen, and that function is now present in Rust's compiler-builtins library as a fallback.
The LLVM
loop-idiom-wcslenpass may introduce calls towcslenas an optimization, and some Rust targets did not have that function readily available inlibcor elsewhere. The UEFI targets in particular were broken for any project usingstd, as some of these calls were introduced in the precompiled standard library, but the issue was also reproducible for similar user code patterns.-
Miscompilation of FFI
boolreturn values on x86_64: Rust functions returningboolthrough FFI could leave bits 1-7 of the return register unspecified, causing callers to observe raw values other than0or1. This return type is now marked for zero-extension again, as required by the ABI. -
rust-lldfailed to loadlibLLVMon macOS: This linker could fail to run if the compiler was invoked without therustupproxy, as there was no direct setting for the appropriate library search path. Nowrust-lldis built with anrpathentry for the directory containinglibLLVM.dylib.
If you'd like to help us out by testing future releases, you might consider using the beta (
rustup default beta) and nightly (rustup default nightly) channels locally and in your CI. Please report any bugs you might come across!Contributors to 1.99.1
Many people came together to create Rust 1.99.1. We couldn't have done it without all of you. Thanks!
- Missing symbol
-
π Filip Filmar rules_fusesoc: FuseSoC Cores as Bazel Dependencies rss
rules_fusesocintegrates FuseSoC, the FPGA core package manager, into hermetic Bazel builds. Users declare desired core libraries and IP dependencies in Bazel build files. The module resolves dependencies and exports Verilog and VHDL filesets as standard Bazelfilegrouptargets for synthesis and simulation. This post, part of the series on the build infrastructure behindcocoapuffs-fpga, examines the division of responsibility between package managers and build systems.What a .core file hides
The open-source FPGA ecosystem maintains a substantial library of reusable IP packaged as FuseSoC
.coremanifests. At first glance, a.corefile appears to be a static list of source files. Parsing the manifest directly with custom scripts seems straightforward, but that shortcut fails quickly. -
π Will McGugan The Living Mountain Chapter 2 rss
2. Sealg
Calum reached the Land Rover first, panting from the thrill of defying his parents. He climbed into the driver seat as a child might tackle a climbing frame. Alastair followed, carrying with him a bundle of something wrapped in a blanket, which he casually tossed onto the back seat. Only two years older than Calum, Alastair was as tall as a full-grown man and swung himself in without effort.
βYou got it?β asked Calum.
βOf course I fucking got it. What do you think that is in the back seat?β
Calum looked at the bundle in the back. The blanket had slipped off, exposing gun-metal as dark as a shadow against the back-seat fabric.
βFuck. Keys! Where does he keep them?β Alastair scanned the interior of the Rover. He pulled down the sun-visor. Nothing. He reached into the glove compartment, digging through the assortment of objects he found there. A spanner, a lighter, map, and finally car keys, which he held up and jingled playfully. βFuck, aye,β Alastair said, grinning. He slid the keys into the ignition and stopped. Then he turned to Calum who recognized the wide-eyed look. Like a cat about to pounce.
As much as Calum had managed to avoid the extremes of their parentβs wrath his brother was adept at invoking, he suspected his reputation as the good brother would not be enough to protect him from the consequences of this night-time jaunt they had planned. Leaving the house and taking the Rover without permission would earn them both a hidingβbut taking the Browning was beyond forbidden. There was no precedence for such a transgression.
It wasnβt too late to turn back. Dad was in the living room digesting dinner and drinking lager, oblivious to the whereabouts of his sons. They could restore the shotgun to its place on the top of the rack in the shed and return to their shared bedroom without their parents suspecting a thing.
βHe loves that shotgun,β Calum noted. The Browning B-80 was Dadβs favorite amongst his guns andβCalum suspectedβhis favorite amongst his children. He had spent the previous evening polishing the walnut stock with hard wax oil until the mottled wood grain gleamed.
Experienced hunters by they time they reached their teens, the boys were no stranger to guns. Alastair in particular delighted in shooting rabbits and regularly re-stocked the freezer with venison. Taking one of the other half dozen shotguns or rifles in the shed without permission would have been considered a misdemeanor at most. But not the Browning. Dad would take that personally. A point Calum thought to raise with his brother before it occurred to him that offending their father was rather the point.
Alastair didnβt say a word as he turned the key in the ignition. The engine turned over and the cabin rumbled. This would surely rouse their father who could hear a car engine from half a mile down the mountain. Alastair put the vehicle into reverse and turned around in the driveway a little too fast, knocking over his motherβs plant pots which shattered and spread dirt over the driveway. Facing the gate, Alastair put the vehicle into first, stopping short of engaging the clutch. The gate to the farmhouse was closed. No lock, just a latch built from the same cast iron as the gate itself and as solidly constructed. There was no time to get out of the Rover, open the gate, and return to the Rover for a quick getaway. Not before his father was there to grab both of them by the scruff of the neck. Calum saw only two options. They could stop and face the music, perhaps using a last-minute change of heart as a bargaining chip to reduce their collective punishment. The second option would be more dramatic and almost too ridiculous to consider. Even before Calum had thought it through he knew that to Alastair, who invariably chose the path of greatest chaos, there was only one option.
βNoβ, Calum said, meekly.
βIβm doing it.β
Alastair engaged the clutch and floored the accelerator as the farmhouse door swung open to the silhouette of their father. Dirt and gravel kicked up from the back wheels. Alastair turned the vehicle away from the gate as they accelerated, aiming for the fenceβmuch to Calumβs relief as the sturdy gate was cemented into the ground. Calum braced himself against the dash as the Roverβs grill collided with the fence, sending a starburst of sparks into the air. The Rover pulled away from the farmhouse, their father standing in the doorway, back-lit and casting a long shadow over the crushed fence and ruined flower beds.
Alastair, watching the rear view mirror, gestured a raised middle finger behind him just as soon as he felt they were far enough away for his father not to see it.
βDid you see those sparks?β asked Alastair. Calum, barely able to assemble words into a sentence after all the excitement, agreed with a vigorous nod. βJust like the A-team,β Alastair continued, βNo. Dukes of Hazard. Hey, do you think we could get some air-time in this thing?β
Calum giggled. The Land Rover felt as anchored to the ground as the granite boulders that littered the slopes of Ranoch. Implausible as it seemed, the imagery of them jumping a gulch while being pursued by a cavalcade of cop cars had them both in hysterics.
The Rover reached a fork in the gravel track. One branch turned into single lane tarmac and would take them into the village. The other carried on snaking upwards into the mountain. Alastair braked and put the Rover in neutral.
βHave we got any food?β asked Alastair. They had just eaten dinner, but it would be a long night ahead of them.
βThink so,β Calum said, βDad always keeps biscuits in the Rover.β He fished around in the door bin and pulled out a long cylinder of Rich Tea biscuits, about half of which had been eaten.
βIs that all?β
βAfraid so,β Calum confirmed, mournfully.
βLetβs go into town and get a chippy for later,β Alastair said, putting the Rover into gear.
βWe canβt do that. Somebody might see you.β
βSee me doing what? Buying chips?β
βDriving without a license.β
Alastair cursed. On the mountainside, nobody cared about him drivingβit was common for the children of the handful of families still living on Ranoch to be regularly driving in their teens. Even the local police would turn a blind eye beyond the farmhouse where there were few roads, and even fewer cars. But on council roads about town, a boy of barely sixteen driving a Range Rover would be challenged. Reluctantly, Alastair turned the wheel in the opposite direction. Calum wasnβt sure if Alastair wanted to avoid being arrested or simply didnβt want to risk missing out on the evening he planned for all of three hoursβpretty much the extent of the boyβs ability to think ahead. Alastair banged the steering wheel with two fists. βFuckinβ hell. I can drive better than half the old farts in the village,β he protested.
Calum had observed his brotherβs mood could change quickly like that. From cheerful to angry and bitter, like flipping a coin. If Calum didnβt do anything, Alastair might be stuck in that bad mood for the rest of the night, and that would not bode well for either of them. Alastair wasnβt always so volatile. Before he started clashing with Dad, the boys were close and often the only source of entertainment was each other. They spent many days playing silly games on the mountain which invariably resulted them coming home mucky from head to toe. That was before the fights; shouting matches with Dad that resulted in Alastair being confined to his room, often after a belting that left angry streaks criss-crossing his buttocks. He claimed it didnβt hurt that much, but Calum saw something change in his brother with every application of the belt. He became sullen, less joyful, with a tendency for random cruelty. Lately he had taken to giving Calum a βknucklingββa knuckle forcefully dug between Calumβs ribs with a twist to maximize discomfort. He did it with such regularity that he often hit a bruise from the previous knuckling.
βThere is beer in the boot,β Calum offered. He had helped his mother carry an entire pack of beer from the village shop to the Rover that day. Twelve tall cans of strong lager, of the brand their father like to drink while watching television. The pack was heavy, and the fridge was full, so it remained in bootβand would still be there.
βSeriously?β Alastairβs tone lightened.
βAye,β Calum confirmed.
βFuck aye, little brother!β Alastair floored the accelerator and tore the Rover up the mountain, kicking up fresh gravel behind them.
Alastair followed the gravel track uphill, in what seemed like a route scribbled on paper by a toddler. Never a straight line, sometimes the track crossed a stream, only to cross back to the other side a few yards later, then deviate around an outcrop of rock, briefly pointing away and not towards the summit where they were heading. Dad explained to them as young boys that the route was not planned, rather it was worn in by successive generations of vehicles seeking to minimize the incline.
What little second-hand sunlight they had when setting out soon diminished, leaving only the Roverβs headlights to illuminate the trackβso overgrown to the point it that it became hard to distinguish from the heather and grass that surrounded it. The boys talked as they drove. Mostly it was Alastair lamenting about the new girl in his class, Catriona with black hair, who had taken to teasing him about his name. Alastair Alastair, Alistair MacAlastair , she would chant, much to the delight of the other kids in class, who gleefully joined in. Kids that would previously have been too afraid of Alastair to tease him like that were now saying it directly to his face, and he could do nothing about it because hitting a girl was shameful. To make matters worse, he liked Catriona, who he described as a stoater while also telling Calum she wasnβt that pretty. When it came to girls, Alastair rarely made any sense to Calum and had learned it was best not to point out such contradictions.
Calum slowed the Rover to a crawl. Leaning over the steering wheel, he admitted that he had probably lost the track ten minutes ago. They had been heading for a plateau around two thirds of the way to the summit where there was a car-park of sorts and a few decaying picnic tables placed there for hikers and day-trippers. It had served as the starting point for the Sealg for many years, but it didnβt look like they would reach it without back-tracking and Alastair was not one for back-tracking.
βWhere are we?β Calum asked.
βNo fuckinβ clue. But this is a good spot. Those old farts donβt know everything.β Alastair parked and left the Rover. He returned with two cans of lager, handing one to Calum. βDrink up bro. It puts hair on your balls.β The brotherβs drank and ate the biscuits. Alastair drank with gusto, while Calum sipped. Calum didnβt much care for the bitter drink and would have chosen a Cola given the chance. Alastair finished his lager with a satisfied ahhh. βIs it time?β
Calum checked his watch. Well past sun-down. βItβs time,β he confirmed.
βLetβs do it.β Alastair jumped out the Rover. Calum followed, leaving behind half a can of lager. Alastair surveyed the contents of the boot and reached for another can of lager. βOne for the road,β he said, depositing the can in an army-surplus ruck-pack then adding another lager for good measure. βWhat else?β
βTorch.β Calum said.
βAye. Torch. You numpty. Itβs dark.β Alastair fished out the camping torch, switched it on and banged the red plastic housing. The torch was the kind with a handle and a big square battery that could last several hours on a single charge. Calum was concerned it might not be fully charged, but it seemed pointless to raise that concern to Alastair who was clearly committed to the enterprise and would in all likelihood do it in the dark if he had to. βHere, you carry these,β Alastair said, handing Calum the backpack and torch.
Alastair retrieved the Browning from the back-seat and stuffed the blanket and loose shells into Calumβs rucksack. They set out facing the summit, Ranoch village at their back.
Alastair walked with the business end of the Browning resting on his shoulder, while Calum held a little back, keeping the torch leveled on the terrain ahead. Alastair talked as they walked, mostly about Catriona and how annoying she was, while Calum focused on his flashlight duties. Behind them, the Rover grew smaller and dimmer, finally merging with the night sky. With the Rover out of view it felt as though they were adrift in an ocean of heather. Unsure of what lay ahead, the boys continued their march up the bank of the mountain in silence.
The brothers reached an outcrop of exposed granite, its feldspar flecks caught the torchlight like tiny Christmas lights. βBreak time,β Alastair said, setting the Browning down next to the rock. He pulled out a lager from Calumβs rucksack, offering it first to his brother, who declined with a hand gesture, before cracking it open and taking a gulp himself.
βWhat if we donβt find anything?β Calum asked.
Alastair swallowed a mouthful of lager and hesitated before speaking. βIf we donβt find anything, thenββ he left his response hanging, building suspense in Calum who suspected his brother had started the sentence before knowing how he would complete it. ββthen we join the French Foreign Legion,β Alastair said with a sense of satisfaction. It was an in-joke. Calum had told Alastair about the French Foreign Legion, which Calum himself had learned about from a novel. βMon Dieu, Pepe le Pew,β Alastair said. They both laughed at Alastairβs cartoonish French accent. The joke confirmed that Calumβs suspicions that his brotherβs plan was as reckless as it seemed and without consideration for the consequences.
The boys reclined against the rocks, while Alastair drank. Ranoch village was visible in the distance as a yellowish bloom of light from a smattering of street-lamps and windows. The emerging full-moon lifted the landscape just enough to make out the topology of the mountain slope which somehow seemed disconnected from the tiny village as though Ranoch mountain and Ranoch village were separate ethereal realms and not a single land mass.
βPretty,β Calum remarked.
Alastair laughed. βAye, its pretty. But we are not tourists. Our mission is a sacred one, entrusted to us by our fore-fathers.β Alastair mimicked his Fatherβs pompous tone, expecting to elicit a laugh from his younger brother. Calum didnβt respond to his brotherβs jape. He had heard a noise from a little further up the mountain and had turned his head to listen for it. βWhat is it?β asked Alastair.
Calum held up a hand to silence his brother. There it was again. The noise he had heard moments ago, repeated. Unmistakably it was a growl produced by an animal. βGet the Browning,β Calum said, coldly.
Alastair grabbed the Browning propped up against the rocks. They walked slowly in the direction of the noise, while Calum scanned the foreground with a beam of focused torchlight.
Alastair hadnβt yet heard the noise for himself. βIs it a brollachan?β he asked.
βDo they growl?β
Alastair admitted he didnβt think so, but held the shotgun in front of him all the same. The brothers walked steadily forward, intent and silent, approaching the source of the growls which had grown louder andβin the brotherβs mindsβangrier. They traced the sound to a mound of dirt, not so far away. Alastair raised the browning to eye height, carefully lining up the sight-bead with the mound as they stalked. The growls stopped before they reached the mound. Concerned they had been spotted, the brotherβs froze in their tracks. Then a pair of piercing eyes suspended in a stout face erupted from behind the mound. Alastair pulled the Browning trigger which clicked impotently. Calum yelped, nearly dropping the torch.
βBadger!β Calum said, noting the round body and sturdy legs of the creature bolting up the mountain out of reach of the torchlight.
βFuckinβ badger,β Alastair said, lowered the Browning. He looked to his bother, sheepishly. βForgot the shells.β
βYou would have got him.β
βDamn right I would have got him. Blown him to Smithereens.β
βWhat was it growling at?β
βI donβt know, bro. Do I look like David Attenborough?β
They walked the remaining few feet to the mound of dirt which had clearly been excavated from an adjacent pit. There, something or perhaps several somethings moved beneath the soil.
Alastair set the Browning down, knelt in front of the pit, and began brushing lose dirt away from the surface while Calum stood over him holding the torch. Calum couldnβt help but admire his brotherβs nerve; he doubted he would have the guts to dig in a hole without knowing what manner of creatures were down there.
Alastair swept a final layer of dirt aside, revealing fingers. Human fingers. Slender and pale, they were moving, clawing at the earth, part of a hand apparently trying to dig its owner free.
Alastair scrambled to his feet.
βHoly fuckinβ shit. It is a brollachan. Has to be. Jesus, fuck.β He grabbed Calum and spun him around to retrieve a handful of shells from the rucksack. Alastairβs hand shook as he loaded the shotgun, at one point dropping a shell which almost ended up in the pit. He leveled the fully loaded shotgun at the pit, looking down at the hand clawing at the dirt. Another hand appeared near the first, peaking through the surface, moving in the same way. The brothers stood watching the coordinated motion of the hands.
βItβs like it is swimming,β Calum remarked.
βAye. Swimming in dirt.β
βIs that how they all come out?β
βDad never said. I think this is the first time anyone caught a brollachan before it hatched.β
βAre you going to shoot?β
Alastair lowered the gun. βNo point.β He explained to Calum that when a rabbit went to ground there was no getting it. Shotgun pellets would shred the rabbit, but wouldnβt go far in dirt. The brollachan may as well be wearing a suit of armor while it was stuck in the ground.
βShould we dig it out?β Calum asked.
βNo, dummy. It will bite us.β
βRight.β
βWhat are we going to do?β
βWe wait until it digs itself out. Then we shoot it.β Alastair spoke with an air of certainty Calum had never observed in his brother before. For once he didnβt seem to be winging it.
The boys retreated to vantage point a little further up the hill where they watched the hands swimming in the filth and the mud, leaving a slow-motion wake of dirt. Gradually forearms were revealed. Pale skinned and caked in dirt, the arms writhed as they shoveled the peaty earth at a greater rate that the hands could alone. Later, the top of a head was exposed, topped with a tangled mass of matted hair.
The boys watched intently, fascinated by the progress of the creature being birthed by the mountain in front of them.
βHave you ever seen one. You know. Close up?β Calum asked.
Alastair admitted he had not. Of the three hunts he had been on, he had only ever seen a brollachan wrapped in tarpaulin, bundled and tied in the back of a truck. Dad was always been quite vague as to the appearance of the brollachan, but he had once asked his Uncle Joey who described his killβa particularly vicious specimenβas having frog eyes, a mouthful of fangs and an forked tongue like an adder. Alastair related the story to Calum. βThatβs why you have to get them early,β he explained, βchangelings could become anyone and you would never know they were a brollachan. But when they hatch they are like monsters.β
Calum had heard this explanation before. It was family lore. His family, his uncles, and the neighbors on Ranoch. Homesteaders, game-keepers, and others living on the mountain who could trace their family back to the local area for generations. They defended the good Christian people against the brollachansβcreatures that devoured children and would take on the appearance of the villagers to spread wickedness should they escape the mountain. He had read similar tales in the second-hand novels he liked to read in his bedroom. Different monsters, different good-guys, but not all that different to the tale of the Christians versus the brollachans he had grown up with. So similar, that he had started to doubt brollachans were real at all.
The Sealg was real enoughβhe knew that much. His uncles came round when the moon was full. They ate, they drank, they prayed, then they piled into trucks with their shotguns in high spirits and left. On hunt nights Calum would hear distant gunfire muffled and echoed in the night air. Dad would return in the small hours with a story of his or Uncle Joeyβs bravery defending the mountain against the changelings. Calum had never seen any evidence of brollachan and concluded they were hunting ptarmigan which would appear in the freezer the next day. He never raised his suspicions with Alastair and at that moment was glad he did not. A brollachan hatching in front of his eyes was all the proof he needed.
In the pit, the brollachan had squirmed and excavated enough dirt to expose a head, caked in mud and tangled hair, hiding its features from Calumβs probing torchlight. Alastair moved to the edge of the pit, kneeling as close as he dare. Dangerously close to falling in it seemed to Calum.
βCareful,β warned Calum.
βGet the beer,β Alastair said, ignoring Calumβs concern.
Calum placed the torch on the ground so that it still illuminated the pit and bounded downhill to retrieve the beer. He didnβt quite understand Alastairβs need for the drink, or is fatherβs for that matter, but he had learned not to dally when his father requested a beer and extended the same privilege to his brother. Back at the pit, he handed the half can of lager to his brother. Alastair didnβt drink from the can. He poured the lager over the creatures face, washing away some of the grime. Then, in what appeared to Calum an act of immense bravery, Alastair began wiping at the remaining dirt and moving strands of hair away from its face. The face revealed from the beer cleansing was not monstrous. Its feature were soft, delicate, unmistakably feminine.
βItβs a girl,β Calum said. The creature raised an arm which was entirely free at that point. For a moment, Calum feared it would grab his brother by the throat and throttle him, but its hand merely rose to shade its eyes from the torch Calum had trained on its face.
βItβs not a girl. Itβs a brollachan.β
βBut why does it look like a girl,β Calum protested, βwhereβs the frog eyes and fangs?β
βItβs a brollachan.β Alastairβs tone was somber and resolute, telling Calum not to press his doubts any further. Alastair went back for the Browning. After checking a round was chambered he returned to the pit where he stood over the creature, barrels aimed squarely at the creatureβs head. βYouβre only a man on Ranoch after you bag your first brollachan,β Alastair said, sounding for all the world like their father. Alastair said again, βYouβre only a man on Ranoch after you bag your first brollachan.β Calum heard him perfectly the first time around.
Calum wasnβt at all certain the creature was a brollachan. If it didnβt have frog eyes and fangs how could they be sure? But then he knew that a real person would have suffocated under all the dirt. If it wasnβt a person, what else could it be but a brollachan? The frustrating circular reasoning froze him to the spot, unable to act, desperate for new information that might allow him to break out of the cycle.
Through gritted teeth Alastair said, βYou are only a man. On Ranoch. After you bag your firstβ¦ brollachan.β The face in the pit looked up at Alastair as he spoke. The creatureβs expression was without malice or any emotion that Calum could discern. It had stopped digging itself out of the earth and was gazing up at Alastair as though waiting for something. Alastair met its gaze down the barrel of the Browning.
Calum looked on, unable to see the face in the pit as anything other than a young woman. βAlastair. No. Donβt do it,β he pleaded.
After what felt like an eternity to Calum, his brother sighed, breaking eye contact with the face in the pit and lowering the gun. βFuck you, Dad,β he said. Alastair placed the gun on the ground before climbing into the pit where he began excavating dirt around the creatureβs limbs with his hands. He worked with the zeal of a life guard pulling an incapacitated swimmer from of the ocean. Calum joined his brother ripping tangled roots and hurling clods of dirt out of the pit. Soon the torso was exposed and the girl-creature was revealed to be more girl that creature. With the weight of dirt removed from her upper body, the girl was more able to contribute to digging and was soon wriggling free while the boys worked around her. Once she pulled her legs free, the girl climbed out of the pit after the boys, partially aided by Alastair who extended a hand and pulled her over the threshold of the pit.
Out of the pit, there was nothing to suggested she was anything other than a flesh and blood girl, naked, filthy, and shivering in the cold night air. Calum ran to get the blanket from the rucksack which he draped over the girlβs shoulders for warmth and to cover her nakedness.
βLetβs get her to the Rover,β said Alastair.
Calum agreed. He didnβt have any other suggestion to offer. The night had become a rescue mission, and getting the girl to safety suited him much better than a hunt.
With Calum back on torch duty, the boys made their way back down the mountainside. Alastair with his arm around the girl holding blanket in place, guided her over the rough train. With the Rover in view, Alastair handed Calum the keys and suggested he go get the engine started and turn on the heating.
Calum bounded down the mountain in the direction of the Rover which he found where he expected it to be. Climbing in the driver side, he turned the ignition and switched on the heater. Soon warmth radiated from somewhere behind the dash. When Alastair arrived with the girl, he opened the passenger side door and guided her in, before joining her on the oversized passenger seat of the Series III.
βDrive safe little brother. Catriona has had a rough night,β Alastair said.
βCatriona?β
βThatβs her name. Sheβs from Ireland.β
Catriona turned to Calum and spoke, with a gentle Irish accent. βThatβs right. I grew up in Belfast.β
Calum was taken aback by the strange coincidence she had the same name as Alastairβs girl-enemy at school, but concluded that was the least odd thing about her presence that night and said nothing about it.
Calum adjusted the driver seat for his smaller frame and turned the Rover around, choosing to focus on the driving rather than dwell on the strange events of that night. Soon enough he located the track they had lost earlier.
As Calum drove, peering over the steering wheel, his brother talked with Catriona about many things: his love of western movies, his aptitude for sports and distaste for mathematics, but never how she had come to be buried in the peat. It seemed a strange omission to Calum who considered asking her himself, but the pair were engaged such an intense conversation as to never allow Calum the opportunity. By the time the farmhouse was in sight, Alastair and Catriona were laughing and giggling like firm friends.
At the farmhouse the gate was open and the house lights were all on. Calum guided the Rover up the driveway over the tire-marks they had made earlier. They parked a short distance from the front-door.
Calum jumped out while Alastair helped Catriona down from the Rover and lead her to the door, where their parentβs stood like sentinels guiding the entryway.
βThis is Catriona,β Alastair said.
To Calumβs surprise his parents welcomed them in without another word from him or his brother. It was like he wasnβt thereβhis father, smiling broadly, put an arm around Alastair while Catriona was ushered away by their mother.
-
π New Music Releases Apocalyptica - Tango rss
Apocalyptica - a new release is available:
- 2026-10-15: Tango (Single)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-
π New Music Releases Above & Beyond - Nights Like This rss
Above & Beyond - a new release is available:
- 2026-10-15: Nights Like This (Single)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-
- October 14, 2026
-
π IDA Plugin Updates IDA Plugin Updates on 2026-10-14 rss
IDA Plugin Updates on 2026-10-14
New Releases:
Activity:
- capa
- 804c8893: ci: key vivisect workspace cache only on inputs that affect .viv files
- 9863ff5f: ci: test macos-15-intel only on Python 3.10
- 9cf793ab: build(deps-dev): bump build from 1.5.0 to 1.6.1 (#3180)
- 2928304a: build(deps): bump postcss-selector-parser and eslint-plugin-vue in /wβ¦
- 0f55fb73: ci: replace deprecated node20 actions with gh CLI and harden workflowβ¦
- idamcp
- d7de12a5: Merge pull request #30 from doomedraven/windows-agy-install
- mcrit-plugin
- 10e278dc: Bump the actions group with 3 updates
- omppp
- 5cc1299c: chore: bump version to 1.11.8
- ba6ef1a1: Merge PR #249: ci: shard native/unit tests on every event and de-raceβ¦
- 45a76e49: test: wait for the ctime tick without a real timer
- 5f38318b: ci: shard native/unit tests on every event and de-race the archive caβ¦
- cb369b78: Merge PR #248: fix(security): bump rustls to 0.23.46 (@qtnx)
- 0e0dee79: chore: refresh MODULE.bazel.lock for rustls 0.23.46
- e4057cef: fix(security): bump rustls to 0.23.46 for RUSTSEC-2026-0346..0349
- 5f149d93: Merge PR #247: fix(security): clear OSV findings from the upstream 18β¦
- f1988dff: fix(security): clear OSV findings from the upstream 18.10.3 sync
- 2184d359: Merge PR #246: sync: merge upstream/main 18.10.3 into OMPx 1.11.7 (@qβ¦
- a15faa9a: test: align explore tool surface and install smoke with structured taβ¦
- ToCode
- 5999db18: Merge pull request #19 from buzzer-re/dev
- d2e253b5: Merge pull request #18 from buzzer-re/dev
- 59bbe1f4: Release 0.3.1
- 05a69ae4: Export folder binaries in parallel
- 20e314a1: Merge pull request #17 from buzzer-re/dev
- eab2ee11: Simplify the README
- 5f4e8145: Add headless and MCP Binary Ninja backends
- capa
-
π Quarkslab's blog Internship Offers for the 2026-2027 Season rss
- π’ Vulnerability assessment and exploitation of a Telematic Control Unit
- π’ Vulnerability assessment and exploitation of satellite communication systems
- π’ Protections against dynamic attacks for firmware
- π’ Development of tooling for fuzzing infrastructure
- π’ Fighting Dynamic Binary Instrumentation
We also welcome people with wide but realistic creativity, so if you have an idea and want to join the team, don't hesitate to reach out to discuss it with our experts!
Our goal is to publish most of the results of our internships. Here are some examples of publications from previous internships:
- A blogpost on Starlink's User Terminal internals;
- A SSTIC talk presenting crypto-condor, an open-source test suite for compliance testing of implementations of cryptographic primitives;
- A Hardwear.io talk on Bluetooth Low Energy GATT Fuzzing;
- A Black Hat EU talk on the Google Titan M chip;
- A blogpost on Differential fuzzing for cryptography
Quarkslab's team is always pleased to welcome new talents who want to work on complex security research subjects. If you want to face new challenges and work in a dynamic environment where curiosity and teamwork are at the heart of our way to do R&D, please apply!
In particular, we would be very happy to welcome more applications from female candidates, and under-represented minorities. Quarkslab is dedicated to making the cybersecurity world more welcoming and inclusive for all, and that starts with our internships.
With that in mind, and because we know impostor syndrome is a big obstacle for women in particular -- we've been there -- don't hesitate to reach out to us at
icandoit-AT-quarkslab-DOT-comto discuss your skills, and we will help you navigate our offers.How to Apply?
To apply for an internship position, you must be a student , able to efficiently communicate on technical matters in written and spoken English, and willing to present the results of your internship to a large group of curious Quarkslab colleagues. Beforehand, you need to prepare the following elements:
- A resume;
- A cover letter: avoid the generic letter saying that you are so motivated and that we are so interesting. We welcome a more personal letter which explains why the topic is of particular interest to you, why you, and why us;
- Your proposed solution to the assignment attached to the offer you are interested in.
Package these elements and send them via email to
internship-AT-quarkslab- DOT-com, with the subject field containing the internship name mentioned in the respective offer.Do not forget that the key aspect of a good application is being curious and motivated, not meeting all requirements listed in the offers below should not prevent you from sending us your application, and we can discuss your skills. Keep in mind that internships are meant for learning. Let's go!
Selection Process
Each internship offer comes with a little assignment that should not require too much time to be completed. The result will show us not only the type of skills and knowledge you already possess, but also how ingenious you are and how well you can present your reasoning. It will serve as the basis for the interview you will have in the selection process. The assignment works both ways and is also intended to make sure that you like the topic as well as the technical aspects of the internship. If unsure about a specific aspect of a challenge, do not hesitate to drop us an email. We are open to discussion!
The first applications usually reach us a few days after publication, and we start reviewing them right away. Some internships are filled before the end of the year, while others remain open until March.
Did you notice the colored circles next to the title of the offers at the top of this blogpost? They reflect the state of internships:
- π’ Waiting for applications;
- π Reviewing applications, we are still accepting internship assignments but hurry up;
- π΄ Internship is filled.
Being an Intern at Quarkslab
Training and helping people grow in the security industry is part of the company's DNA. That is why we provide in-depth blogposts, tools, trainings, weekly internal conferences (called Fridaycon, guess when they are), we teach in universities and schools and write articles in tech magazines. Sharing is caring, but sharing is also learning. We provide the environment for that and the rest relies on you.
Intern package in France:
- Salary: β¬1800 gross per month (approximately β¬1550 net);
- "Tickets restaurant" (restaurant coupons);
- In-depth and challenging topics.
Internships Topics
π’ Vulnerability assessment and exploitation of a Telematic Control Unit
Description
Since 2016, every new model of vehicle sold in Europe should be equiped with an eCall module, that provides voice and data connectivity for emergency services. This was an important milestone in the connectivity of road vehicles, as manufacturer are using this data capability to enhance the driver experience, with live information, remote control, ...
Therefore, the telematic control module (TCU) is a key element in the security of a car, with a permanent 3GPP connectivity. From this perspective, questions arise:
- Are these modules secure enough to prevent an attacker to get a remote access to a vehicle ?
- What kind of data are transmitted to backend server, brokers, and what could be the impact from a privacy point of view ?
During this internship you'll focus on one or two telematic control unit, to get an understanding on how they work, analyze communications and evaluate the maturity of their security features.
Required Skills
- ARM reverse engineering (intermediate)
- Fuzzing (basic to intermediate)
- Programming: Python, C
What you will do
The goals of this internship are:
- Extract and analyse the operating system of a telematic control unit
- Reverse-engineer targeted binary to understand how the device communicate with the backend
- Analyze the TCU baseband
Assignment
Download the assignment.zip file and follow the instructions in
assignment.md.Duration
6 months
Location
Paris, France
π’ Vulnerability assessment and exploitation of satellite communication
systems
Description
This internship focuses on the practical security analysis of satellite communication systems, starting from the completion and operation of an existing ground station project.
The first objective will be to finalize the ground station setup and validate its ability to receive and process satellite signals. The intern will then use the station to capture and analyze real satellite communications , identify the protocols and implementations in use, and understand the different layers involved in the communication chain.
From these observations, the intern will study the security properties of the identified protocols and software implementations, map potential attack surfaces, and investigate possible weaknesses or vulnerabilities.
Depending on the results, the project may include reproducing known vulnerabilities, analyzing protocol weaknesses, developing test or fuzzing environments, and experimenting with potential attacks in a controlled environment.
The overall objective is to follow the complete path from signal acquisition to security research , combining radio communications, protocol analysis, reverse engineering and vulnerability research.
Required Skills
- Programming: Proficiency in Python, C/C++, or similar languages.
- Cybersecurity: Understanding of vulnerability research, reverse engineering, and security assessment techniques.
- Networking & Protocols: Familiarity with communication protocols and packet analysis.
- Research: Ability to investigate unfamiliar technologies, read technical specifications, and independently formulate hypotheses.
- Radio/SDR knowledge: Familiarity with SDR or digital communications is appreciated but not mandatory.
Assignment
Choose a publicly documented vulnerability from 2022 or later affecting a space-related protocol, software component, ground station, or satellite communication system.
Rather than simply summarizing the CVE:
- Analyze it: Explain where the vulnerable component fits within a realistic satellite communication architecture, the root cause, and what an attacker would realistically need to exploit it.
- Investigate it: Perform a small technical experiment: analyze the vulnerable code and its patch, reproduce the behavior, build a test harness, craft an input reaching the vulnerable code path, or propose another relevant experiment.
- Go beyond the documentation: Identify one question or hypothesis that is not answered by the CVE/advisory and explain how you would investigate it.
A successful exploit is not required. We are more interested in your technical reasoning, methodology, observations, and ability to investigate an unfamiliar system.
You may use AI tools during the assignment. Briefly indicate how you used them and describe at least one AI-generated suggestion or conclusion that you verified, corrected, or rejected , and explain why.
Duration
- 6 months
Location
Paris, France.
π’ Protections against dynamic attacks for firmware
Description
If you like playing cat and mouse and getting your hands dirty, this internship is for you!
At Quarkslab, we have been developing application protection tools since 2014, featuring obfuscation and runtime application self-protection (RASP). One of these tools (QShield App Protection) relies on a compiler framework, LLVM, and comes as a replacement for the regular compiler used by our customers.
While desktop and mobile targets have been supported for several years, supporting embedded targets is more challenging, due to the variety of situations.
The goal of this internship is to ~~help the QShield team~~ improve ~~both~~ the level of protection for the IoT/embedded domain by developing sensors to detect dynamic attacks.
For that you will need to reproduce the setup of attackers, analyze the weaknesses of the tooling they use, and develop proof of concepts to detect them or prevent their usage. You will then integrate them in our software protection tooling.
Required Skills
- Have an experience in building a firmware or a static library for an embedded device, and playing with compiler options.
- Have some familiarity with either Arm32 or AArch64 instruction sets.
- Be able to demonstrate experience developing in C.
- Have an interest in compilers and software protection or security (you don't need to be an expert in compilation ;) ).
What you will do
During this internship, you will:
- research and develop detection or counter measures for dynamic tools/techniques used to reverse-engineer embedded software such as JTAG/SWD debugging, emulation with QEMU, dynamic instrumentation, etc.;
- integrate them into our coverage testing infrastructure which ensures that the sensors behave as expected in different environments;
- work on the integration in the development toolchains to improve the user experience.
For that you will work with people with various skills, such as reverse- engineering, software development with huge code bases and testing them.
Assignment
Write a small bare-metal firmware for the Arm Cortex-M3 emulated by QEMU (
qemu-system-arm -M mps2-an385). You don't need any hardware. Use any Arm toolchain (e.g. Arm Toolchain for Embedded or the GNU Arm toolchain), but no vendor SDK, HAL, IDE or RTOS.The firmware must:
- use your own linker script and startup code (vector table, reset handler);
- print its output through the board's UART (not semihosting);
- determine whether it runs on an emulator or on real silicon , using at least two independent checks , and print the verdict and the raw values it observed.
Send us a zip containing:
- the sources;
- a
Makefile(or CMake) wheremake runbuilds and runs everything; - the ELF;
- a report of 2 pages at most that:
- explains the boot sequence of your firmware, from reset to
main; - for each check: what it reads, the value seen under QEMU, the value you expect on a real Cortex-M3 with a reference to the Arm documentation , and how an attacker could get around it;
- describes at least one check that did not work, and why;
- lists the tools you used, LLMs included, and what you checked yourself.
This should take 3 to 4 hours. We don't expect a perfect detector: a check that fails, with a good explanation, is worth more than a long list of checks you can't explain.
If you're selected, you'll run the firmware during the interview and we'll change it together, look at the binary, and discuss how to bypass your checks.
Duration
6 months
Location
Paris, France
π’ Development of tooling for fuzzing infrastructure
Description
Fuzzers produce a lot of output data and it can sometimes be hard to sift through the results. Furthermore, different fuzzing targets require different sets of tools which might not share output formats.
To face this, you will implement an aggregator that defines a common format for integrating fuzzing results into a unified dashboard. On top of displaying fuzzing campaign results, the goal of this aggregator is to triage bugs for efficient vulnerability research. The methodology will be different for each bug class and target, so the system shall be modular to allow for the integration of different types of fuzzers on different platforms.
Required Skills
- Proficient in C, C++ for analyzing code, experienced in python, js, or others for development work
- Deep understanding of fundamental bug classes in binary exploitation (buffer overflow, use-after-free, race condition, ...)
- Good communication skills
- Proficient in French and/or English
What you will do
Most of your work will be programming the dashboard with the help of LLMs when applicable. Alongside that, you will come up with ad-hoc strategies for automatically analyzing certain bug classes in a specific context and producing actionable insights.
Assignment
This assignment is mostly theoretical.and consists of two write ups:
- A 5 page (maximum) document describing the state of the art of binary fuzzers. In this report, include a comparison of the different fuzzing methodologies available and their use-cases.
- Pick any Android application that uses a native library to parse user-provided data, and write a small document on how you would fuzz that library.
Duration
6 months
Location
Paris, France
π’ Fighting Dynamic Binary Instrumentation
Description
If you like playing cat and mouse and getting your hands dirty, this internship is for you!
At Quarkslab, we have been developing application protection tools (QShield) since 2014, featuring protections against static attacks (obfuscation) and dynamic ones.
Among the latter, Dynamic Binary Instrumentation (DBI) frameworks such as QBDI, Intel Pin, DynamoRIO, WinDBG TTD and Frida have become foundational tools in software security, enabling fine-grained runtime analysis, tracing, and modification of program execution without requiring source code.
While invaluable for legitimate purposes such as vulnerability research, malware analysis, and software testing, these same capabilities make DBI a powerful vector for reverse engineering, intellectual property extraction, and license or DRM circumvention when turned against commercial or sensitive software.
As a result, anti-DBI techniques have become a critical component of software protection strategies. However, developing robust anti-DBI protections faces substantial technical barriers. DBI frameworks operate at a privileged level close to the CPU and OS, making their artifacts (timing anomalies, memory layout changes, code cache behavior) subtle and inconsistent across platforms and versions.
The goal of this internship is to help the QShield team improve their current protections and develop new anti-DBI sensors.
For that you will need to reproduce the setup of attackers, analyze the weaknesses of several DBI frameworks, and develop proofs of concept to detect them or prevent their usage. You will then integrate them into our software protection tooling.
Required Skills
- Be familiar with reverse-engineering.
- Be able to demonstrate experience developing in C.
- Have an interest in software protection or security.
What you will do
During this internship, you will:
- research and develop detection or counter measures for DBI frameworks;
- integrate them into our coverage testing infrastructure which ensures that the sensors behave as expected in different environments.
For that you will work with people with various skills, such as reverse- engineers, and the developers of huge code bases and their testing infrastructure.
Assignment
- As a first step, you will develop a "hello world" Linux x64 binary that detects when it is being executed under this tracer.
- As a second step, you will assess whether your solution still works if the tracer is modified to hide or alter the artifacts you rely on (for example a string identification), and propose a more resilient detection mechanism.
Expected outputs :
- A PoC in source code form (feel free to use the language you want), that builds cleanly on a standard Linux environment (dockerfile accepted), with no manual tweaking required.
- A write-up in Markdown explaining the choices made for the PoC and detailing the second part of the assignment.
Duration
6 months
Location
Rennes, France
-
π exe.dev A Healthier Way to Snack on UI Work rss
Snackingβfocusing on small, shippable tasks that make the product better but donβt necessarily help it growβis addictive. Sometimes your main project is a slog. Why not take a break and fix something? You get that sense of accomplishment and suddenly your main project feels less daunting (the power of dopamine!).
My guilty snack is UI work. I started out my career as a mostly front-end engineer. I would obsess over pixel-perfect designs and building a strong FE style guide (this was before they were even called style guides). Chris Eppsteinβs Compass was my bread and butter. Iβve since moved on to other roles and I am not doing much front-end work these days. So how do I satisfy my cravings?
I recently built a Figma-like tool called Radiant. Except, unlike Figma, Radiant is 100 percent agent-driven. It allows me to snack in a healthier way on UI work because it generates high-fidelity mockups based on prompts I provide. Also, instead of the traditional approach wherein someone gives the engineer a mockup that is either way out of scope or just technically infeasible, Radiant constrains itself to what our current code is capable of doing. Agents are great at scanning code and doing a deep dive on all the layers. So why not use that to our advantage when mocking up UI?
To prove this idea, I decided to tackle a rough part of our UI: the current user dropdown. I had Radiant look at the current implementation and, based on the issues I called out, redesign it in a mockup and present some options. (For context, the model I used was Claude Fable).
Hereβs what we got:


What impressed me was that Radiant also managed to pull our current styles from our code to generate these mocks. This was exactly what I wanted because instead of hallucinating a UI, Radiant just took what we had and modified it and presented multiple options. Once I chose a design, the final chefβs kiss was having Radiant generate a prompt to hand off to another agent for the implementation. That agent was able to one shot implement it (I used Claude Fable for the implementation).
Radiant is still new in my toolbox, but being able to do UI work by asking for mockups and then quickly iterating on them is my new favorite way to snack.
-
π backnotprop/plannotator v0.28.20 release
Follow @plannotator on X for updates
Missed recent releases? Release | Highlights
---|---
v0.28.19 | Ask this session in T3 Code, folder sessions load shared stylesheets and images, the agent note asked once per agent, Copy connect prompt
v0.28.18 |plannotator inboxconnects your agents, agents are told when to use the Inbox, rendered Markdown in code review, Inbox Settings in sections
v0.28.17 | The Inbox on iPads and narrow windows, the reply bar no longer cuts off "Keep open", a Pi crash on/reloadfixed
v0.28.16 | The Inbox on a phone, a doorbell for new questions, Mark read, step through a thread's files, replies when the asking session ended
v0.28.15 | Long Inbox threads fold to what is new, "Skipped N questions" replies, Inbox list and sidebar fixes
v0.28.14 | Agents can replace an earlier question, comment on a guided review in the Inbox, issue numbers link to the repository
v0.28.12 | Update notices andplannotator update, attach any file to an Inbox message, questions with context, links to attached files
v0.28.11 |plannotator inbox --helpprints a full guide for agents, and the plannotator.ai/inbox install prompt
v0.28.10 | The Inbox over your tailnet withplannotator inbox --tailscale, images in agent messages load, click anywhere on an attachment tile
v0.28.9 | Large Inbox messages throughplannotator inbox mcpfixed, an Inbox sidebar you can close and resize, Edit Mode in reviews of several files, the new Pi logo
v0.28.8 | The Plannotator Inbox (preview): messages, questions, files and guided reviews from your agents in one local window
v0.28.7 | Ask this session keeps your drafts as drafts, image comments survive a reload, hostname check on every serverWhat's New in v0.28.20
The Inbox gets search: one box that finds threads, messages, answers, files and decisions, and opens a result on the exact message. Most of the rest comes from one exercise: we filled an Inbox with worst-case data (long and duplicate project names, right-to-left text, emoji, huge counts, old dates, panoramic screenshots, minified files, multi-megabyte logs) and looked at every screen at every width. That found 75 places where the Inbox broke, and two PRs fix most of them. The release also changes what happens when you reply to an agent with words only, and stops a hung agent command from outliving the Inbox. 7 PRs in all.
Search the Inbox
Search sits at the top of the Inbox sidebar, and βK (macOS) or Ctrl+K (Windows and Linux) opens it from anywhere in the window, the reply box included. It is the Inbox's one keyboard shortcut. On macOS, Ctrl+K keeps its usual text-field meaning.
Results come back grouped: threads, messages, questions and your answers to them, your replies, file names, decisions and projects. Filters narrow them by project (it starts on the project you have open, and one click searches everywhere), by status, and by who wrote it. Opening a result lands on the exact message, unfolds it if the thread had folded it, and highlights your search words in it; a match in a question lands on its card. Back returns you to where you searched. β/Ctrl+Enter opens a result in a new tab. The searches you opened come back as recent searches the next time, with a Clear button. On a phone, search is a full-screen sheet, reached from the sidebar or a search icon in the list header.
Search stays fast on large Inboxes. On a test Inbox of 4,000 threads and 30,000 messages, most searches take a few milliseconds, including searches for ids and log timestamps inside multi-megabyte logs. Short commit hashes of 7 characters or more find the full hash. Matching ignores case and accents (
resumefindsrΓ©sumΓ©) and works in scripts written without spaces, such as Chinese, Japanese and Thai. The index is built the first time you search (the window shows "Indexing N threadsβ¦" for a second or two on a large Inbox), kept in memory on your computer, and updated as messages arrive. Nothing is sent anywhere, and the search routes refuse requests from other websites.The Inbox holds up with real-world data
Project names are now the folder's real name, taken from where the project lives, instead of the shortened tag used for storage. When two projects share a name, each also shows its parent folder ("api Β· work"), and the "N new in X" notice counts them as two. Plan history, the feedback archive and the stored project folders do not move.
Dates and text read correctly. A time from another day shows the day ("Oct 10, 8:22 PM"), a time from another year shows the year, and the full date is in the hover text. Names, subjects and message paragraphs in right-to-left scripts take their direction from their own text, while centered HTML in a message stays centered. Shortened text is never cut inside an emoji or a combined character, counts get thousands separators, and a name that is cut shows the whole name on hover.
File names are cut in the middle so the end and the extension stay visible, in tiles, the gallery caption, the stepping bar, the file header and the download card. Copying a cut name gives the plain name, and a screen reader hears the whole name. A changed tile says "Changed" with the day or time on one line, and keeps its annotation count.
Things that grow now stop growing: the reply box, the decision form, the New message picker and the "where should this reply go?" chooser each have a height limit, and their contents scroll inside it so Send and Back stay in view. Narrow windows got their own pass: Decisions switches to two-line rows under 960 px, the list header cuts its title and path with "β¦", the Storage table keeps size and Delete on one line, install commands wrap in full, and the update dialog lists five open sessions and then "and N more". On a phone, tables wrap at word boundaries, the "β N new" pill no longer pushes the reply area around, the Comments sheet covers the file in landscape, and tall images in a message are cropped from the top.
At 1280 and 1440 px with ordinary data, the list, threads, open files, Settings and Decisions are pixel-identical to the previous release.
Files, images and question cards
When an open file is beside a thread and the pane is narrower than 780 px, the comments panel now folds into a Comments button in the file header and opens over the file. Before, it squeezed the file at medium window widths. A guided review folds its panel the same way under 1,200 px; previously it was hidden at 900 px and below with no way to open it. A PDF or other download no longer shows an empty comments panel.
Behavior change: log, YAML, CSV, JSON and other data files now open in the code view in the Inbox, with line numbers, highlighting and line comments.
.txtfiles keep the text view. Comments left on such files before this release were text comments, so they show as Unanchored; their text is kept and still goes out with your reply.Files with a line over 1,000 characters (a minified bundle, a log line) wrap instead of scrolling sideways forever. A comment on a very long line stores an excerpt of the line instead of the whole thing. Panoramic screenshots crop to a 4:1 strip in a message's gallery and scroll sideways in the viewer, and an image smaller than its box is drawn at its own size.
Two fixes to question cards reach plan review and annotate as well as the Inbox. A choice question whose recommendation names none of its choices now shows the recommendation as a "Suggested" line instead of dropping it, and a read-only card no longer draws an empty "Other" row. In guided reviews, the "Everything else" card is no longer numbered, so the card count matches the header, and headings inside a section's text render as headings.
A reply with only words leaves the questions open
Behavior change. Since v0.28.16, a Send skipped every question it left unanswered unless you pressed Keep open. That made sense when you answered some questions and not others, but a reply with only words ("let me check with the team first") also closed every question as skipped, and the agent moved on without the answers.
The skip chip under the reply box now starts from what the Send carries. A Send with no answer in it (words, annotations or both) keeps the questions open. Once at least one question is answered in the Send, the chip switches to skipping the rest, as before. Clicking the chip still decides either way.
The agent gets your words followed by one line, such as "No questions answered yet; all 3 are still open. Don't re-ask them; the person will answer in the Inbox.", then any file comments. Replies that answer at least one question are unchanged.
A hung agent command no longer keeps running after the Inbox stops
Since v0.28.18, the Inbox can connect your agents by running their own CLIs (
codex mcp add,gemini mcp add,amp mcp addand so on), each with a time limit. If one of those commands hung and the Inbox quit, restarted to update, or reached the overall time limit first, the command was left running in the background indefinitely. It is now stopped in each of those cases. A command that finished on its own is left alone.
What's new shows the notes for a version you installed yourself
The Inbox saved release notes only from its daily update check, so a version installed with the install script before that check ran showed a "What's new" link that opened to "No release notes for that version." The Inbox now fetches that version's notes once when they are missing, and shows the link only when there are notes to show. With update checks turned off it never contacts GitHub.
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: The plugin and the
plannotatorbinary update separately, so run the install script above as well. In a terminal:claude plugin marketplace update plannotator claude plugin update plannotator@plannotatorThen restart Claude Code. Inside Claude Code, run
/plugin marketplace update plannotator, then open/pluginβ Installed β plannotator β Update now.Pi:
pi update --extensionsOpenCode: Re-run the install script above. It now also clears the OpenCode 2 plugin cache.
What's Changed
- Inbox: fix the stress-test breaks (batch 1) by @backnotprop in #1899
- Inbox: an agent CLI that times out is stopped, not left running by @backnotprop in #1905
- Inbox: a reply with no answers leaves the questions open by @backnotprop in #1903
- Inbox: fix the stress-test breaks (batch 2) by @backnotprop in #1906
- Inbox search, part 1: the index and GET /api/inbox/search by @backnotprop in #1902
- Inbox search, part 2: the window by @backnotprop in #1904
- Inbox: What's new fetches the notes for a version installed outside the Inbox by @backnotprop in #1911
Full Changelog :
v0.28.19...v0.28.20 -
π crmne/spotifast Spotifast v0.13.2 release
Spotifast 0.13.2 keeps Windows from marking it as not responding in the tray, stops MilkDrop from stalling the window, reconnects playback by itself after a network drop, and keeps your playback approval when its port is busy. The Flatpak moves to a runtime that still gets security updates.
Download Spotifast: Mac Β· Windows Β· Windows ARM Β· Linux Β· Linux ARM Β· Flatpak Β· AppImage Β· AppImage ARM
On Windows, pick the
.msi. The setup program (-setup.exe) is still attached so that installs from 0.12.0 and earlier can update through it.New
- Your screen's rate on the visualizer frame-rate dial, without opening MilkDrop first. Spotifast now asks the monitor showing the window how often it refreshes. By @dennisgr7. (#893)
- A header tint for custom palettes, and a header wash that scrolls with the page. A palette's new
tintcolour gives page headers a wash when album art doesn't colour them, and the wash now scrolls away with the header instead of staying put. By @sasoder. (#752)
Fixed
- Windows no longer marks Spotifast as not responding while it sits in the tray. By @crmne.
- The window no longer stalls every 30 seconds with a large MilkDrop presets folder. With Settings or MilkDrop open, listing thousands of presets froze the window for about 0.4 seconds every 30 seconds. They are now listed in the background. By @crmne.
- MilkDrop no longer opens to a blank window on some Windows PCs. A display set to "hardware default" reported 1 Hz, and MilkDrop could save that as its frame rate. Such reports are now ignored, and a frame rate saved that way is forgotten. This is probably what @Olafosboss saw. By @dennisgr7. (#896, #885)
- Playback reconnects by itself after a network drop or waking from sleep, using your saved approval, instead of asking you to set up playback again. Setting up playback also tries the saved approval before opening the browser. By @crmne; thanks @kakulukia and @Jaideepo7. (#818, #824)
- A busy port 8898 no longer throws away your playback approval. Spotifast now reserves the port before opening the browser, so another app holding it shows a clear message in Settings instead of a hung page and a lost approval. By @crmne; thanks @dams. (#899)
- Windows may now keep your sign-in across restarts. On some PCs Spotifast forgot every Spotify sign-in at restart. When Windows refuses to save a sign-in the usual way, Spotifast now saves it in a way that also survives a restart, and the log names the error. If you still have to sign in after every restart, please report it with your log. By @crmne; thanks @sasirmishamsi, @HyPeRXKo and @Th3H3ll50. (#815, #748, #803)
- Your playlist order follows changes made in Spotify's other apps. Spotify custom order is read again when you come back to the window, instead of only at launch. By @SametKaras; thanks @loessy. (#749, #683)
- x64 Windows says why Spotifast can't start without OpenGL 2.0, for example in a virtual machine without a graphics driver, instead of quitting silently. By @crmne.
- Task Manager shows "Spotifast" instead of "A native Spotify client". By @crmne.
- Uninstalling removes leftover update folders, and updates clean up the ones earlier updates left behind. By @crmne.
- The Flatpak gets security updates again. It now uses the Freedesktop 25.08 runtime, as 24.08 has reached end of life. By @crmne; thanks @uAliAmer. (#886)
- Spanish shows ready playback as "Listo". By @dennisgr7. (#900)
Thanks
@dennisgr7, @sasoder, @SametKaras, @Arthurandrealmeida, @Olafosboss, @kakulukia, @Jaideepo7, @dams, @sasirmishamsi, @HyPeRXKo, @Th3H3ll50, @loessy, @uAliAmer, and everyone who reported problems since 0.13.1. Thanks also to @dennisgr7 and @Arthurandrealmeida for documentation fixes. (#873, #887)
Full changelog :
v0.13.1...v0.13.2 -
π r/LocalLLaMA NVIDIA Nemotron Bolt 3.5 74B A9B releases Oct. 15th rss
This model is a 74B parameter, 9B-active-parameter mixture-of-experts (MoE) model, packed into 24GB using 2-bit quantization with advanced quantization- aware training techniques to retain quality. It aims to achieve the optimal balance between speed and intelligence, being faster than most popular dense models while smarter than most popular MoE models with a similar memory footprint.
Nemotron 3.5 Bolt E4B 4GB releases Oct. 23 Additional detail submitted by /u/CulturalKing5623
[link] [comments]
---|--- -
π r/LocalLLaMA The AI race: China's open-weight models trail US closed models by just 7 months rss
| Source: whatmodel.sh, an open source AI leaderboard I built (and launched here yesterday). Every point comes from published benchmark results: 22,113 of them across 987 benchmarks, from 1,011 sources, each one linked to where it was published. This chart uses data for the text models: 18,755 results for 1,211 models on 617 benchmarks. - 14,436 results are independent evaluations: papers whose authors ran the models themselves (mostly CC BY papers from the ACL Anthology and arXiv), Epoch AI, the LMArena dataset, EvalPlus, the EleutherAI harness and others. - 7,677 are scores labs report for their own models, labelled as lab-reported. Everything is open: the dataset (CC BY-SA 4.0) and the scoring code (MIT) are at https://github.com/jakemanger/whatmodel, with CSV downloads at https://whatmodel.sh/data/manifest.json. Every number links back to its source, and each source's licence is recorded. Interactive version (click any model to see its scores and sources): https://whatmodel.sh/race Please star on github if you find it useful! submitted by /u/jakecoolguy
[link] [comments]
---|--- -
π HexRaysSA/plugin-repository commits sync plugin-repository.json rss
sync plugin-repository.json No plugin changes detected -
π HexRaysSA/plugin-repository commits fix: drop renamed-repo aliases that index plugins twice (#42) rss
fix: drop renamed-repo aliases that index plugins twice (#42) GitHub redirects a renamed repo's old name, so seeding both the old and new name makes the snapshot index the same plugin under two hosts (patching-ng, efiXplorer). Remove the old names from the seed list and ignore them so search can't re-add them. -
π crmne/spotifast Spotifast v0.13.1 release
Spotifast 0.13.1 stops the window from freezing while the disk is busy, checks that a Google Cast speaker is genuine before signing it in, opens full-screen lyrics with F, and lets you choose how often the player bar's visualizer draws.
Download Spotifast: Mac Β· Windows Β· Windows ARM Β· Linux Β· Linux ARM Β· Flatpak Β· AppImage Β· AppImage ARM
On Windows, pick the
.msi, as in 0.13.0. The setup program (-setup.exe) is still attached for this release only.New
- Google Cast speakers must prove they are genuine. Before it sends a Cast speaker anything, Spotifast now asks it to prove it is a real Google Cast device, as Chrome does, and stops if it can't. 0.13.0 accepted any device that answered at the speaker's address. See how it connects. By @colsontabbert. (#883)
- F opens and closes full-screen lyrics, when no text field has focus. By @PixelAsh6. (#874)
- A frame rate for the player bar and mini player visualizers. Frame rate in Settings β Appearance sets how often they draw: 30, 60 (the default), your screen's rate, or Uncapped. Before, they drew at your screen's rate, which on a fast screen cost power for little gain. MilkDrop keeps its own rate. By @crmne.
Fixed
- The window no longer freezes while the disk is busy. 0.13.0 saved settings, the session and history on the window's own thread, so under heavy disk use the window could stop responding and Pause or a click could wait for seconds. They are now saved in the background, and anything waiting is still written before Spotifast quits or the computer sleeps. If the window ever stalls again, the log now says so, which helps when you report it. By @crmne.
Thanks
@colsontabbert, @PixelAsh6, and everyone who reported problems since 0.13.0.
Full changelog :
v0.13.0...v0.13.1 -
π OmniNull/OmniWM Canary 20261014-0432 (3ccdb08b) release
Automated canary build of
main. It is signed and notarized like a release but skips the owner review, so treat it as unstable.See the canary guide to install, update, or return to stable. For everyday use, download the latest stable release.
- Commit:
3ccdb08b422e - Base tag:
canary-20261008-1304-37780259308-1
Changes since canary-20261008-1304-37780259308-1
- Commit:
-
π Jessitron Sharing Theories with Agents rss
As I'm working with an agent to upgrade a repo from vibe-coded to something I can understand and dig into, I am reminded that Programming is Theory Building.
By "theory" we mean: an understanding of the world, the software and how they relate that's good enough to let us work intelligently on them, answer questions about them, and argue about them.
Like: we have a theory about what the world needs (I need to be able to comment on this HTML!), how the software meets those needs (a server injects the buttons for this), and how it's going to meet more (let me edit the content as markdown!).
Software development is reality construction. We make something real in the world, we change what happens when I move my finger this way or click these clackety keys. Conceiving the new world (and how we get there) is programming. That work used to take more typing, more troubleshooting, and more puzzle solving. It has always been, at its core, building a theory of how a piece of the world works and how it can work.
To go from vibe-coded to programmed, I build that theory. I get the agent to start a document explaining what's going on in that software and why. Then I iterate on that document with it until we're in agreement. I check it against the world and what we need and what makes sense to me; it checks it against the code.
Building that document together builds the theory of this software for me. Reading it builds the theory for every agent that starts up in this repository.
Reading only that document means that the agent's theory is shared with me. More documentation is not better! The only context I want the agent to have is documentation I've read and iterated on (so it's connected to my reality) and the code (which runs, so it's real).
The documentation I read needs to maximize its communicative power. That means diagrams, pictures, and varied structure. HTML beats markdown for this, and the agent is a whiz at writing HTML with SVG figures.
Markdown is a lot easier for me to tweak and comment in, though. I have a need to comment on HTML! And modify its content as easily as markdown. Good thing we have agents to solve this!
Here's a skill, based on Arlo Belshee's process, that helps an agent iterate on a document with you. The plugin includes a tool for commenting on HTML and tweaking the content. Also included is a skill for making a project overview document (like this one) as part of theory-building.
Programming is theory building more than ever. The distance from a conception of how the world can be to some new reality is so much shorter with agents! We still need to understand what we want, and conceptually how it can work, and how we'll get there. That is still the hard part, and we get to work ever harder on it.
-
π Filip Filmar First Steps with rules_openxc7: A Beginner's Guide rss
This tutorial teaches you how to build your first FPGA bitstream with Bazel and the open-source
rules_openxc7toolchain. You do not need any prior Bazel experience, and you do not need to install AMD Vivado or compile EDA tools from source. In four small files, we create a complete working project that synthesizes Verilog with Yosys, places and routes with nextpnr, generates a 7-series bitstream, and flashes your development board. -
π New Music Releases Staind - Ghosts rss
Staind - a new release is available:
- 2026-10-14: Ghosts (Single)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-
π Baby Steps What agents mean for Rust (and vice versa) rss
Me, calmly assessing the implications of LLMs for
programming language design(ers).As someone who has made a career of programming language design, I definitely have moments of existential dread about the rise of LLMs. I started coding in 5th grade on an x861 that ran at 5MHz, had something like a 5MB hard-disk and 512K of RAM2. Computers were really, really different back then. But honestly, programming wasn't. For all the advances in IDEs and programming languages and so forth, the basic act of entering code into a file has remained surprisingly constant3 - right up until a few years ago, when everything kinda turned on its head. That's been exciting and empowering at times4 but also scary and disorienting. Will my skills in programming matter? What about my skills in programming languagedesign (such as they are)? This blog post is my attempt to answer those questions.
So as not to keep you in suspense, let me just give you the conclusion. In short, yes, I believe there will still be a role for humans in programming. And yes, I think that programming language design is still relevant. And, naturally, I also happen to think Rust is a really good fit for agentic development - but that's not to say we can't make it a better fit. And that's what this post is ultimately about: what makes Rust and agentic development work well, and where we could double down on those strengths.
This is a kind of "blog post companion version" of a talk I gave this week at REBASE, part of SPLASH. You might also enjoy the slides from the talk I gave at IWACO, IWACO and Rust: hidden links revealed, which was a bit more of a retrospective (no soundtrack for those, though). In any case, this turned out to be a great conference! Jack Huey presented on the Rust Vision Doc and, quite to my surprise, Steve Klabnik and Dorian Scheidt presented "LLMs as Collaborators in Language Specification and Design", talking about their process in building out Rue. It was fun to see Steve again. On top of that, there was a ton of great research presented at IWACO in particular. I was particularly taken by the work on Reachability Types and Information Borrowing. I also really liked learning about Hylo Lang, particularly their approach to projections. Clever and cool.
Rust is popular in the agentic era
From the most important Slack channel at Amazon, #aws-
memes.Rust is popular right now. Very popular:
Stratospheric among the breakout languages is TypeScript, cropped from the chart and sitting currently at +1200% growth from the prior year. [..]
The second most rapid recent growth is in Rust. Meta engineers have written twice as much first-party Rust code so far this year than in the previous 9 years combined.
β David Tolnay (emphasis mine)
Some of that is because agents make it very easy to try out new things. And some of that is because Rust has a reputation for being performant and, if it's just as easy to pick any language, why not pick one that will yield faster execution times?
But I think Rust is popular for another reason: because Rust happens to be a really good fit for agentic coding6. Of course, I would, wouldn't I? The point of this post is (1) to argue for why that is and then (2) to discuss what we might change about Rust to make it work even better.
Foundational Software construction with agents
It seems to me that an effective "software factory" will have three pillars:
- Design: figure out and specify clearly what the code is supposed to do.
- Construction: author code that does what it is supposed to do.
- Optimization: optimize the code so that it runs efficiently.
None of these pillars are solved, but some have made more progress than others.
Rust and optimization: fast by default, knobs when you need 'em
Rust is designed to give "good performance by default", making the idiomatic thing typically also be the fastest thing. But another key part of Rust is that you have the knobs to eke out better performance when you need it. You control when something is stack- or heap-allocated and where pointer indirection occurs. If you want to, you can force the layout of your structs to be done in a particular way, or decide where to introduce boxing into your async stack frames. In the limit, you can put in inline assembly.
In the past, learning how to "tune the performance knobs" could be a bit of a black art: but agents are making that much easier.7 It turns out that agents are really good at fine-tuning the performance of existing code. For example, people who work on super high-performance cryptographic algorithms used to do so by hand-tuning assembly code. But those people tell me that they are now turning to agents for that same job. More prosaicly, a lot of people building network services are finding that, using a profiler like dial9, agents can quite effectively diagnose async performance pitfalls, like long polls or blocking.
Therefore, I think the task for Rust is clear. We keep on with our goal of "low-level enough for a kernel, high level enough for a GUI". If anything, I think the shift around agents means we can tolerate a bit more "noise" in the form of explicit calls to
clone()orshare()- but not too much, since we still want the "happy path" of the code to be clear and evident8, even as we surface details that are important in specific scenarios (like tracking precisely how many clones you have of a channel endpoint). Combined with a profiler, you get an effective feedback loop to get your code running fast:flowchart LR Code -- Benchmark --> Profile Profile -- Analyzed by --> Agent Agent -- Propose --> PR PR -- Improve --> CodeReliability is king, as always
As usual though, while a reputation for good performance is what brings people to Rust, what makes them want to stay is a sense that using Rust "just seems to work better". The basic theory is that Rust's type system and guardrails help keep agents on track:
rust is a perfect language for agents, given that if it compiles it's ~correct
-- Greg Brockman (@gdb) January 2, 2026
I think there's truth in that: languages like Rust, Ocaml, or Haskell all share this "if it compiles, it works" feeling, and I think that agents will benefit from that.
Testing is not enough, type systems help
Testing can show the presence of bugs, but not their absence.
β Edsger W. Dijkstra, 1970
Agents presenting their work.Writing tests has never been enough to show that your program is correct - but, with agents, it's not even close. It happens so often that my first few tests seem great and then the next one goes completely bonkers. Usually bonkers in a way where I cannot even imagine how that bug could have come about. Then I dig in and I realize the agent completely missed the boat on the logic I was trying to express.9
This is where a type systems really shines - particularly an advanced one like Rust. Type systems give you some guardrails that keep the agent on track. In Rust, those guardrails extend beyond simple stuff like "do all fields have the correct names" and to stuff like never having to close a socket.
Type systems are not enough either
Type systems can show the absence of bugs, but not the presence of correctness.
β Me, failing to coin a phrase of equal eloquence10, 2026
So yeah, type systems are helpful! But they have inherent limits. A type system is a simple set of rules that, if you follow them, make sure that you avoid (certain kinds of) mistakes. But they don't tell you that you do the right thing - only that you don 't do (certain kinds of) wrong things. If you want to go further, you need a proof system - something that will let you show that richer properties are actively true, not just that you're avoiding bugs.
As it happens, there are a lot of interesting proof tools for Rust, like Verus, Creusot, Aeneas, and Kani. As a starting point, you can prove that your code is panic- free, which will eliminate a lot of bugs, though it is still fundamentally a "type-checker-like" property (i.e., you avoid doing things wrong). But you can also go further and add assertions that show your code is computing the results you expect.
Strong guardrails give better performance
Deplying proofs is not just good for getting code right - it's good for getting code fast. This is somewhat counterintuitive, but it's true. Earlier I mentioned how optimized cryptographic algorithms were now being written by agents. Part of what makes that possible is that cryptographic algorithms have a very clear mathematical definition. This means that you can basically tell the agent "do whatever you want, as long as you can prove that the code still computes the correct result". These proofs can be done with theorem provers like Lean or Rocq. The blog post "Why Lean is faster than Rust" makes the point quite well.
For Rust, a good example of this would be around unsafe code. Right now, people are sometimes reluctant to deploy unsafe code even if it might make their code faster because it's not worth the risk of getting it wrong. And I applaud that effort. But what if you could use a prover to show that your unsafe code is, in fact, safe (i.e., incapable of causing undefined behavior)? Then you'd be free to optimize to your heart's content.
If we are going to prove things, do we need type systems?
You might wonder: if we're deploying a proof system on our code, do we still need type systems? I think the answer is definitely yes. Type systems are infinitely simpler to work with, which is why they are much more popular. Using a type system lets you rule out all kinds of annoying bugs so that you can focus your "proof energy" only on the important stuff.
As a simple example of this, consider the following Java code:
void setFoo(Bar bar) { this.foo = bar; assert this.foo == bar; }Without seeing more code, it is impossible to prove whether this assertion is true or not! This is because there could be any number of other threads running around mutating
this. In contrast, the following Rust code must be true (at least, so long as theEqoperator is reflexive forBar):fn set_foo(&mut self, bar: Bar) { self.foo = bar; assert_eq!(self.foo, bar); }We know this because the type system of Rust guarantees that
&mut selfimplies a unique reference.This is in fact exactly how Verus works. By trusting the Rust borrow checker to track uniqueness etc, it simplifies the job of the SMT solver, making proof checking must faster and more reliable than it would be otherwise.
Where I think Rust should go on reliability
So my take is that Rust should double down on if it compiles, it works. As expressive as Rust's type system is, there are plenty of things that it cannot capture. This includes fairly common things, like this method only reads one particular field or internal references, but also fancy things like "no logging of personally identifiable information". We should work to lift those limits, giving agents room to prove more complex properties.
We also need to improve the experience of integrating a proof tool by working towards an extensible compiler. As cool as the existing Rust-based proof tools are, using them is a janky experience involing annoying macros and pinned compiler versions. We can do better.
A north star: No more unsafe code
I'd like to propose a north star for Rust: no more unsafe code. By that, I don't mean that we never use the
unsafekeyword. Rather, I mean that we have the power to prove that all the unsafe code we write is correct and cannot cause undefined behavior. Don't get me wrong: knowing exactly what code needs to be vetted is a huge step forward, as is normalizing the idea that libraries need to be responsible for protecting their users from undefined behavior via safe API boundaries11. But given agents' ability to find vulnerabilities, I think we need to up-our-game if we want to stop the steady stream of CVEs.12Design is an open problem
But before you go about proving things or optimizing them, you need to have a clear idea of what you are building. As far as I can tell the state of the art here is basically variations on "markdown-driven-development", developing docs and hoping that agents pay attention.
I don't know how much of a role for Rust there is in this space. I think there are some steps we might wind up taking that could be helpful here - for example, having ways to separate out interface from implementation so that it's easier to review the interface in isolation or to see when the agent made changes there.13 Or perhaps just providing betters tools to review that.
I also think there's space for dedicated "modeling languages", something that let you iterate quickly with agents on the high-level designs and invariants without having to get into the weeds and read the code. I have more thoughts on this but it merits many blog posts all of its own. For the moment, I'll start by pointing you all at this post by Kari Wilhelm, "Principles of Anchor Engineering", which I think does a nice job of describing what it means to pull out the key elements of a design and drive the coding from there.
Conclusion
We covered a lot of ground here, so let me put this all together. What makes Rust a good choice for developing with agents?
- It offers good default perf (why pay more?) and, in conjunction with a profiler, can be tuned as much as you want.
- The type system gives stronger guardrails, and if you setup your agents right, you can strengthen those guardrails through techniques like new types.
And what could make it better, from a language design perspective? Overall, I think it's very similar to what we were doing, except that the way we weight the tradeoffs is tweaked to account for agents doing the code authoring, and humans focused more on code comprehension:
- If it compiles, it works - our type system is our big advantage, we need to make it more expressive and more functional so that agents don't get stuck trying to work around it!
- And as an adjunct, establish a North Star: Enable Unsafe code without unsafety by supporting proof, and see the most widely used Rust libraries proven sound.
- Low-level enough for a kernel, high-level enough for a GUI - make sure we expose the knobs needed to tune for performance, while also making the code's intent clear (but don't worry about golfing the code down to an absolute minimum number of characters).
- Extensible and versatile - one of Rust's great strengths is that, with macros + our type system, we support DSLs and a wide variety of targets. We need to bring that spirit of extensibility into the compiler so we can target more styles of development (e.g., GPU, deep language interop, etc) and also integrate theorem provers and other tools that require more than just tokens.
As a final close, let me point you at this interesting article by Marc Brooker, "What's easy now? What's hard now?". He posits that the more it is possible to clearly specify success criteria for a task, the easier it is, and that we may find that tasks we traditionally think of as 'hard' (e.g., building out an efficient implementation of a cryptographic algorithm) may soon become automated, whereas tasks that we have thoght of as 'easy' (e.g., making a unique, compelling website) may become more valued.
Looking at it from a PL point-of-view, I think Marc's point reinforces my sense that the biggest action is going to come from design languages , things that let you capture the architecture and intended behavior at a very high-level. The goal would be to let humans intuitively specify a design that gets translated into effective guardrails, whether that's type system checks, lints, or theorems to be proven. Agents would then take on the task of translating the design into code written in a traditional PL like Rust, with humans looking at it only rarely. This doesn't make the design of traditional PLs less interesting, but it definitely makes the tradeoffs very different than they were before.
-
Secretly I have always been jealous of people that coded using punchcards and stored things on gigantic rolls of tape or whatever. I just want to be world weary so badly! I am kinda delighted that I'm finally old enough that I can say things like "I remember when we had to edit CONFIG.SYS before we could play a computer game!" and younger programmers will gasp in horror.5 But I still feel like I must sound like a silly kid to folks who were around "back in the day". β©οΈ
-
I still remember when my dad told me he had bought me a 10MB disk and secretly he had bought a 40MB disk to surprise me. It seemed absurdly large. "I'll never need a new disk again!" β©οΈ
-
I mean my god, we're even using
viagain! My first editor! β©οΈ -
I built an electron app! And it was so easy to do! And reading weird papers and things is so much more accessible now that I can ask an LLM to translate all the math jargon for me. β©οΈ
-
I remember once trying to tell Alex Crichton how I used to "order shareware from a paper catalog by putting a check in the mail" and he was like "I do not understand any of the nouns in that sentence". Highlight of my life, right after Rust 1.0. Oh, and maybe the birth of my child and getting married. I guess. β©οΈ
-
I'm not saying Rust is the only language that's a good fit. I'm not even saying that the way that Rust is a good fit is the only way to be a good fit. I have heard for example that Go is a really good fit for agentic coding and I believe it: I think it hits a different sweet spot, one that helps agents iterate quickly (although I do suspect agents will let data races and subtle bugs slip through that Rust would have prevented). β©οΈ
-
The fact that agentic development makes more room for knobs is good for Rust performance, but it is quite likely an even better fit for performance in other languages. Tuning a GC has traditionally been a job that really requires a GC expert, but agents can likely fill that role pretty well these days. β©οΈ
-
On this pont, I'm even more convinced of the importance of ergonomic RC now that I work with agents. Agents are good at introducing the extra clones and things you need to deal with capturing around async tasks, but the resulting code is so annoying to read, it really hides what's going on. β©οΈ
-
"Claude, this is not what we talked about!" - me, all too often. β©οΈ
-
So close though, right? I just .. couldn't land the plane. β©οΈ
-
All too often, C++ libraries consider it adequate to tell users "you're holding it wrong" - i.e., that they are responsible for causing undefined behavior by misusing the API. Rust takes a clear position that a safe API has to protect its users, no matter how much they abuse it. β©οΈ
-
To be fair, if Rust is encountering a stream of CVEs, other languages like C++ and Java are encountering a veritable flood, since they lack the protection of Rust's type system. st takes a clear position that a safe API has to protect its users, no matter how much they abuse it. β©οΈ
-
The revenge of
.hfiles? β©οΈ
-