#toolforge
My tools dashboard lets me to follow resource usage of my #RustLang tools over time. Analysis of this data now allowed me to adjust RAM and CPU requirements for several tools, saving #toolforge over 20GB of RAM and 10 CPUs, which are now available again for others […]
Original post on wikis.world
wikis.world
November 5, 2026 at 9:06 AM
In the dawn of time, when we migrated from the Toolserver to Toolforge, i adopted an abandoned toolset from user "Erwin85". I didn't have much bandwidth to keep that up to date, so the tools decayed over the years.

Now, I finally managed to rescue some of them, and integrate them into […]
Original post on wikis.world
wikis.world
November 6, 2026 at 5:20 PM
I am retiring the WMF cloud version of Petscan, it now lives at https://petscan.toolforge.org

This is to give some resources (entire VM) back, but also to unify my deployments; this is the last cloud service I have, everything is on toolforge now.

If you notice any problems, please let me know […]
Original post on wikis.world
wikis.world
October 30, 2026 at 10:29 AM
Toolforge is an official wikimedia repository. You know how elon pretends he invented electric cars? That’s what you’re defending.
October 24, 2026 at 2:41 AM
Toolforge got back online yesterday, but it took a bit more effort to restore the service: admin rights had to be reassigned.

Next up: upgrade the stack to Python 3.13, because 3.12 remove the distutils module. Patch welcome!
hi all, toolforge.org is down, and with that the "zoom in" of pathways. We currently do not have an alternative. The toolforge server is hosting many things on the web, and the @wikimediafoundation surely will work hard to restore it soon. Check this page […]
Original post on fosstodon.org
fosstodon.org
October 25, 2026 at 10:14 AM
Blog post about the PHP2shell fallout for my tools

http://magnusmanske.de/wordpress/archives/870
Pretty Hefty Price
Last week’s _php2shell_ PHP vulnerability and breakneck updates caused the WMF to turn off all tools on Toolforge and cloud infrastructure. As the first updates came in, non-PHP tools were reactivated first; for me, that was basically my Rust-based tools. PHP-based tools were reactivated later, but only for PHP 8.x, with tools written for previous versions requiring updates. I took this as an opportunity to take some stock. Some of my PHP tools are single-purpose, but a few are “collections” with small sub-tools. First and foremost among those is (or was) magnustools, which serves as a landing page for all my tools, and also hosts “meta-tools”, to check on the state of my other tools, manage bug reposts etc.. But it also contained several “sub-tools”, in various states of breakage; written for older PHP versions, accessing the wrong Wikidata or Commons database replicas (which had tables moved to other databases), and general bitrot had rendered many of them fully or partially broken. So I decided to do some triage, rescue what I can, and put the dead ones to rest in PHP^W peace. I also wanted to update them visually, give them a more consistent and modern look-and-feel. But the key piece of this transformation was stability and security, and that could only mean Rust. I worked with an LLM, which is surprisingly good at “translating” between programming languages, especially for the relatively small tool scripts, and targeting Rust. When that work was completed, and I had successfully deployed the Rust version as a drop-in replacement, I added the (rescue-able) tools from the “magnus-toolserver” sub-tool group, which are even older and in worse state; some had not been worked on since the original Toolserver was shut down. When PHP-based tools were allowed on Toolforge again, I found several standalone tools (missingtopics, add-information, makeref, and templator, to be specific) that could not be easily upgraded to PHP 8, so I migrated them as sub-tools in the same manner. They are now Rust as well, using the same UI style. All the sub-tools have a drop-down with the others, so you can have a look what else is there. As a side effect, some tools have gained considerable speed, thanks to the fearless concurrency of Rust. If there are problems with these tools (from the rewrite or otherwise), the issue tracker is linked in the footer. The next candidate for rewrite would be wikidata-todo, which also hosts many sub-tools. If you have thoughts about this, or other tools that should be RIIRed (“Rewrite It In Rust”), please let me know on the usual channels!
magnusmanske.de
October 26, 2026 at 11:39 AM
Mix'n'match is back. I switched the JS/CSS inclusion to the toolforge static server, which is still live.

https://mix-n-match.toolforge.org/
Mix'n'match – matching external catalogs to Wikidata
Match external catalogs (museums, libraries, archives, databases) to Wikidata items. Hundreds of millions of entries across thousands of catalogs.
mix-n-match.toolforge.org
October 23, 2026 at 8:30 AM
PHP-based tools on Toolforge are still offline.
I revived QuickStatements with a Rust web frontend, someone give it a whirl please:
https://quickstatements.toolforge.org/
quickstatements.toolforge.org
QuickStatements is a tool for batch processing structured data assertions. Generate a set of command lines, review the proposed batch, and this tool will propagate the data to Wikidata or Wikimedia Commons.
quickstatements.toolforge.org
October 23, 2026 at 7:20 AM
Just to be sure: #toolforge folks will fix the "no healthy upstream" thing at one point. It's not like the tool maintainer can do anything, right?

CC @magnusmanske, @samwilson, @LucasWerkmeister
October 23, 2026 at 4:23 AM
Toolforge par contre 😭😭😭😭
October 22, 2026 at 8:29 AM
【メンテナンス終了】
本日午前3時過ぎよりToolforgeでの運用を再開しております。
暫定対応中の一部作業については、他Botが再会され次第、順次停止させる予定です。
【実施中のメンテナンスについて】
PHPの脆弱性への対応に伴い、ウィキメディア財団により10月21日午前8時頃(JST)から、nanonaBotの実行環境であるToolforgeがオフラインとなっております。

これに伴い、ウィキメディアサーバー上での作業は停止しており、暫定的な対応として、別のサーバーにて一部作業を縮小して運用しております。

現時点において、全面的な作業再開の時期は未定です。

何卒ご理解いただきますようお願い申し上げます。

なお、nanonaBotではPHPを使用しておらず、今回の停止はToolforgeのオフライン化に伴うものです。
October 23, 2026 at 1:54 AM
J'espère que ce système va pouvoir évoluer pour ne couper que les outils concernés par une faille. Si on coupe toute l'Infra à chaque faille d'un langage donné les gens ne vont juste plus utiliser toolforge...
October 22, 2026 at 8:40 AM
【実施中のメンテナンスについて】
PHPの脆弱性への対応に伴い、ウィキメディア財団により10月21日午前8時頃(JST)から、nanonaBotの実行環境であるToolforgeがオフラインとなっております。

これに伴い、ウィキメディアサーバー上での作業は停止しており、暫定的な対応として、別のサーバーにて一部作業を縮小して運用しております。

現時点において、全面的な作業再開の時期は未定です。

何卒ご理解いただきますようお願い申し上げます。

なお、nanonaBotではPHPを使用しておらず、今回の停止はToolforgeのオフライン化に伴うものです。
October 22, 2026 at 4:30 PM
@cthoyt oh, that's my default implementation, actually. I highly recommend looking that up. but that is also running on toolforge, so also down
October 21, 2026 at 6:00 AM
Toolforge seems to be down, web&ssh. Did someone pull the network cable until the PHP security update is installed? Could have left the Rust tools running though...
October 21, 2026 at 8:56 AM
They did pull the plug entirely on Toolforge and Cloud VPS, I guess it was faster than trying to find out which tools are 100% php-free
Incidents/2026-10-21 PHP security update/Community - Wikitech
wikitech.wikimedia.org
October 21, 2026 at 9:05 AM
Ooops... "All of Cloud VPS and Toolforge. These services host a large number of PHP applications, and may remain offline for a more extended period of time. This includes all *.wmcloud.org, *.wmflabs.org, and *.toolforge.org sites."

That affects several services I am involved in:

- […]
Original post on mastodon.social
mastodon.social
October 21, 2026 at 4:52 AM
hi all, toolforge.org is down, and with that the "zoom in" of pathways. We currently do not have an alternative. The toolforge server is hosting many things on the web, and the @wikimediafoundation surely will work hard to restore it soon. Check this page […]
Original post on fosstodon.org
fosstodon.org
October 21, 2026 at 6:03 AM
Blog post: The buggregator dashboard

http://magnusmanske.de/wordpress/archives/866
Buggregator dashboard
I have ~350 tools running on Toolforge (and on-wiki scripts), so some years ago, I wrote a tool to ~~rule~~ manage them all. That included core to scour my talk pages (and my tools talk pages) on various wikis, github, bitbucket, codeberg, etc. for issue reports, keyword-guess (on wikis) which tool they belong to, and unify the issue reports. As it’s aggregating bug reports, I called it buggregator. I recently thought about the various long-running Rust services I have running on Toolforge, including web pages with compute (e.g. PetScan), background jobs (e.g. Listeria), web APIs (e.g. wd-infernal), and both (Mix’n’match). These are different from the usual PHP-based webservices, which just spawn a script on demand, and forget about once it has run its course. To keep an eye on the Rust services, I added a **dashboard** to buggregator. It tracks all 8 (9 if you count Mix’n’match webservice and background jobs as two separate ones) long-running Rust services, records minutely metrics, and logs restarts and their causes (manually/planned, out-of-memory, crash, killed by the Toolforge watchdog, etc.). It also shows a quick summary of the state of the services. This is primarily for myself, but if you ever find a service of mine unresponsive, feel free to have a look.
magnusmanske.de
October 16, 2026 at 3:31 PM
From Milan to Toolforge: How a Wikimedia Hackathon Sparked WikiLinkua
In May 2026, I travelled to Milan, Italy, for the Wikimedia Hackathon 2026. It was my first international trip, and an opportunity I had never imagined for myself. I arrived with a project idea, a few days to work on it, and no idea that I would leave with the beginnings of something I would continue building months later. Looking back, Milan was not just about attending an international event. It was about discovering how a community of people with different backgrounds, skills, and interests can turn an idea into something others can use. ## One project finished, another just beginning I arrived in Milan planning to work on a Wikidata watchlist filtering script. The idea was to make reviewing edits more manageable by allowing users to filter their watchlist by categories. I completed the script on the first day. With time left, I joined an unconference session by Satdeep Gill and Silvia Gutiérrez. Their discussion introduced me to WikiLinkua, a language-learning platform built around Wikidata Lexemes and Wiktionary. The idea caught my attention: **what if people could learn a new language using languages they already know, while also helping improve the free knowledge that makes this possible?** Language learning tools often focus on helping people consume content. WikiLinkua offered another possibility: helping learners discover gaps in open language data, such as missing pronunciations or meanings, and creating opportunities for them to contribute back. I started building a prototype in Milan and presented an early version during the hackathon. It was only a beginning, but the project had found its direction. ## Taking the project home Returning to India did not mean leaving the project behind. At the Indic Wikimedia Hackathon 2026 in Hyderabad, organised by the Indic MediaWiki Developers community, I continued working on WikiLinkua. This time, I also had the opportunity to mentor contributors working on the project. Working alongside my mentee, Advait Dintakurti, we developed and deployed Version 0 on Toolforge. Seeing an idea that began as a prototype in Milan become an accessible web application was a rewarding milestone. Just as importantly, the process became an opportunity to collaborate, share what I had learned, and help someone else contribute to the project. You can explore the current version at wikilinkua.toolforge.org or browse the code on GitHub. There is still a great deal to do. WikiLinkua is an evolving project, and feedback, contributions, and ideas from the community will be essential to its growth. ## A journey that began closer to home My involvement with Wikimedia began in 2024, when I had the opportunity to volunteer at the Wikimedia Technology Summit. That experience introduced me to the people and communities behind the technical side of the Wikimedia movement. Since then, I have contributed to Wikimedia-related tools, participated in hackathons, and learned from developers and community members who have been generous with their time and guidance. My journey has also been shaped by the support of the International Institute of Information Technology Hyderabad, which has been an important part of my academic life. I am grateful to everyone who helped make these opportunities possible, including the Wikimedia Foundation for supporting my participation in Milan, the organisers and participants who welcomed me, and the Indic MediaWiki Developers community for providing a space to learn, contribute, and mentor others. ## More than a prototype For me, the most valuable part of this journey has been seeing how participation can grow into contribution, and how contribution can create opportunities for others. I went to Milan intending to build a small technical tool. I returned with a new project, new collaborators, and a better understanding of what it means to build for an open knowledge movement. In Hyderabad, I had the chance to pass on some of what I had learned while working with another contributor. WikiLinkua is still at an early stage, but I hope it can become more than a language-learning platform. I hope it can help connect language learners with the people, data, and communities working to make knowledge available in more languages. If you are interested in language learning, Wikidata, or improving multilingual knowledge, I would love for you to try WikiLinkua and share your feedback. The prototype is only the beginning. What happens next depends on what we build together.
diff.wikimedia.org
October 15, 2026 at 5:16 PM
The QuickStatements database was by far the largest one on Toolforge, weighing 274GB in mostly one table.
I have now archived all jobs older than 3 months, and will continue to do so. If you access an older job, it be transparently loaded back into the database, so nothing changes for you […]
Original post on wikis.world
wikis.world
October 10, 2026 at 1:50 PM
BaGLAMa2 – Back to Business
BaGLAMa2 has been collecting view data for Wikipedia pages that contain image from a Commons category tree since March 2010. If your organisation “donated” images, audio, or video to Commons, this kind of data gives highly valuable feedback. Look, out images were viewed 20 million times on Wikipedia last month! There are over 1200 category tree “roots” in the database already. However, this tool has had problems for a long time now, which started with Toolforge moving from grid computing to k8s. The initial version of the tool was written in PHP, and a single grid job would process one category tree and generate a TSV file. Later, I changed that to write all data directly to MySQL, resulting in a 20GB database, which did not scale well. Then I changed it back to storing the main data in files, sqlite3 this time. Meanwhile, the old TSV format and the MySQL data were both kept and supported. However, the k8s switch made the one-script-one-category approach impossible, and so I rewrote the tool in Rust, to run one single job To Rule Them All™. This worked in principle, but database connections and pageview API requests both did not scale well. I then tried a new, more efficient MySQL table approach, which also never took off. Sadly, BaGLAMa2 was stuck in a broken state for years. Now, I tried a new, radically different approach (while staying in Rust, building on existing code). First, I (and my useful slop generator) designed a new, bespoke, and highly optimized format to store results. As before, one file would keep the wiki sites, pages, images, and view counts for one category tree, for one month. However, where the dataset for a whole month would use something like 16GB (sqlite3 files, October 2022), the new format uses ~0.5GB in total for a month. Then, I switched from using the pageview API, to reading the pageview data dump, which is conveniently available on the file system on Toolforge. All site/image/page data gets prepared in advance, which takes ~1h. Then, the compressed pageview dump file is read in its entirety, keeping the relevant view counts, which takes another 15 minutes. In contrast, the previous PHP or Rust processing took several days, and usually left some failed groups for re-run behind. I have already back-filled July, August, and September of 2026. I have also converted all TSV and sqlite3 files to the new format. This has now saved almost half a TB of disk space on Toolforge. I will also convert the MySQL datasets into that format, to be able to retire the backwards-compatible reading (and writing!) code, and reduce the database size from 20GB to almost nothing. The total disk space for storing all BaGLAMa2 data will then be <35GB, with 0.5GB added every month. At this speed, it will take many decades to again occupy the space it did a few days ago, in the old formats. Last not least, the new code will run automatically on the 3rd of each month, processing the pageview data from the previous month.
magnusmanske.de
October 8, 2026 at 2:54 PM
Credit to Microsoft for making an app with a useful feature. Now if we could have established web protocols you could direct-view mapping source of choice, without some middlemen. Much like the GeoHack Toolforge.
March 15, 2026 at 6:00 PM
Global User Info / Global Account Info

Das Jahr ist bald zu Ende, kurz vor schluss gibt von mir mein erste Tool auf Toolforge. Ist änlich wie Stalktoy unterscheidet sich jedoch stark von diesem. https://globaluserinfo.toolforge.org/start.html
December 31, 2024 at 8:46 PM