Wikitech
labswiki
https://wikitech.wikimedia.org/wiki/Main_Page
MediaWiki 1.47.0-wmf.24
first-letter
Media
Special
Talk
User
User talk
Wikitech
Wikitech talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
Obsolete
Obsolete talk
OfficeIT
OfficeIT talk
Tool
Tool talk
Nova Resource
Nova Resource Talk
Heira
Heira Talk
TimedText
TimedText talk
Module
Module talk
Zap/Hat
0
18552
2471909
132479
2026-10-21T23:09:29Z
Legoktm
621
circa 2014
2471909
wikitext
text/x-wiki
{{Archive}}
'''Zap''' and '''Hat''' represented the current and future MediaWiki application server stacks in 2014.
=== Zap ===
* '''Z'''end PHP
* '''A'''pache 2.2
* Ubuntu '''P'''recise
=== Hat ===
* '''H'''ipHopVM PHP
* '''A'''pache 2.4
* Ubuntu '''T'''rusty
f7tcckplf2g916o8cgfuqnydm1rndam
Tool:Openstack-browser
116
441059
2471875
1884231
2026-10-21T18:37:00Z
BryanDavis
1604
git hosting update
2471875
wikitext
text/x-wiki
{{Tool
|name = openstack-browser
|description = OpenStack cluster information
|website = https://tools.wmflabs.org/openstack-browser/
|keywords = VPS, OpenStack
|author = [[User:BryanDavis|BryanDavis]], [[User:Andrew Bogott|Andrew Bogott]]
|maintainer = [[User:BryanDavis|BryanDavis]], [[User:Andrew Bogott|Andrew Bogott]]
|repository = [[gitlab:toolforge-repos/openstack-browser]]
|license = GPL-3.0+
|issues =
}}
'''openstack-browser''' is a tool for finding information about the OpenStack cluster operated by Wikimedia Cloud Services. It lists all projects and their instances along with related information collected from the live OpenStack APIs and other operational data sources. This tool has replaced (and in some cases enhanced) information that was once stored in Wikitech using Semantic MediaWiki.
7fy2z0twn2o342qw4trdfq76ma7mrwe
SRE/Clinic Duty/Access requests
0
442028
2471859
2404947
2026-10-21T16:48:22Z
Ottomata
88
/* Analytics Groups */ don't need sign off for analytics-privatedata-users
2471859
wikitext
text/x-wiki
==LDAP access==
Access to a range of mostly web-based services is granted via the "wmf" and "nda" groups. The specific permissions are listed at [[LDAP Groups]]. The change should be tracked in a ticket.
We're slowing migrating access requests for LDAP groups to Wikimedia IDM/Bitu. The current list of groups managed via Wikimedia IDM can be found at [[SRE/LDAP/Groups/Request access]]
=== Checklist ===
Users should create the phabricator ticket using the link on the following [[phab:project/profile/1564/|LDAP-Access-Requests project page]]. If that has not taken place then you need to ensure that the task has the <code>LDAP-Access-Requests</code> tag and also add the following checklist to the task description and make sure its completed before actioning the request
[] The **username** of your existing account on wikitech.wikimedia.org:
[] Do you currently have **shell access** (Yes/No)?
[] **Purpose** (Specify which service you need to get access to, e.g. Icinga, Grafana, Superset etc):
[] The specific **LDAP group** that you want to be added to (optional):
//For contractors only://
[] Contract end date:
[] Contract contact person:
=== WMF Group ===
The wmf group is no longer handled via Phabricator, instead access is being requested via Wikimedia IDM (https://idm.wikimedia.org). If you run into tasks when this is still requested, please add a message to point the user to request the group by following the steps listed at [[SRE/LDAP/Groups/Request access#Using the Wikimedia Identity Management System]]. Following that, the task can be closed.
=== NDA Group ===
*For contractors that do not exist in LDAP (i.e. they do not have a wikimedia.org email address), ask for the person's manager/point of contact for approval, on the phabricator task
*Volunteers and researchers can be added to the "nda" group, assuming they have signed an NDA which can be confirmed by adding @KFrancis to the Phab task.
*Also add the user to the [[phab:project/members/61/|wmf-nda Phabricator group]] (click "add members", see [[phab:T299839]] / [[phab:T290605|T290605]] for background on this).
*Ensure a corresponding user entry exists in data.yaml (typically within ldap_only_users).
=== WMDE Group ===
Anyone at Wikimedia Deutschland who wants to get added to the "wmde" LDAP group needs to sign an NDA with the Legal department of the WMF. Simply add [[phab:p/KFrancis|@KFrancis]] to the Phab task and she'll deal with it.
The access to "wmde" needs to be approved by an engineering manager from Wikimedia Deutschland. You can add either of the people below to the Phab task:
*[[phab:p/conny-kawohl_WMDE|@conny-kawohl_WMDE]]
*[[phab:p/WMDE-leszek|@WMDE-leszek]]
*[[phab:p/darthmon_wmde|@darthmon_wmde]]
*[[phab:p/Tobi_WMDE_SW|@Tobi_WMDE_SW]]
*[[phab:p/karapayneWMDE|@karapayneWMDE]]
*[[phab:p/jdfraine|@jdfraine]]
*[[phab:p/Martyn.ranyard|@Martyn.ranyard]]
*[[phab:p/Lena_WMDE|@Lena_WMDE]]
*[[phab:p/katiamusiolekwmde|@katiamusiolekwmde]] Katia Musiolek, head of UX/Design
Finally, when granting access, ensure that the user is added to both ldap groups "nda" and "wmde"
===Analytics Groups===
*There are multiple potential groups. They have been detailed on [[Analytics/Data_access#Access_Groups]].
**The clinic duty person can often link to this page for the person requesting access, and require the requestor to define which of the groups are required.
**The clinic duty person should also highlight [[Analytics/Data access#User responsibilities]] to the requestor.
==== <code>analytics-privatedata-users</code> ====
The '''<code>analytics-privatedata-users</code>''' Unix group is one of the more confusing groups as it can be configured in three different ways. Either: no ssh (no shell) and no Kerberos; no Kerberos (standard admin.yaml) or as a shell account with Kerberos. In all cases the user should be configured under the user section of admin.yaml and not the ldap_only_user section.
[[Data Engineering/Systems/Kerberos/Administration#Create a principal for a real user]] describes the steps how to add a Kerberos user principal for a user
Please '''tag the access request ticket with "Data-Engineering"''' to increase visibility.
Tickets asking for membership for '''non-WMF & non-WMDE staff''' in <code>'''analytics-privatedata-users'''</code> need approval from one of the group owners listed in [[gerrit:c/operations/puppet/+/1041735/2/modules/admin/data/data.yaml|data.yaml]]. '''WMF or WMDE staff do not need''' explicit approval from group owners<ref>[[phab:T370424|T370424 Streamline Data Platform access approvals for WMF staff]]</ref><ref>[[phab:T381824|T381824 Data Platform access streamlining for WMDE staff]]</ref>.
=== Other groups ===
*All other groups need to be approved by the user's manager
====Create/Get LDAP account====
In order to add or update a a user's LDAP permissions, they will first need to [[Help:Create a Wikimedia developer account|create a developer account]].
In either case you will need to know the username used. You can also search ldap to try and find it:
<syntaxhighlight lang=bash>
ldap-maint1001$ ldapsearch -x mail=user@example.org
</syntaxhighlight>
If the user claims to be a Wikimedia Foundation staff member or contractor, you should verify that by following the instructions in [[SRE/Clinic Duty/Access requests#Verifying%20WMF%20developer%20accounts|#Verifying WMF developer accounts]].
====Update data.yaml====
Check whether there's an existing entry in {{Gitweb|project=operations/puppet|file=modules/admin/data/data.yaml}}:
*If the user already has shell access, no further change is needed. You can proceed with the LDAP change below:
*If not, add the user to the ''ldap_only_users'' table at the end of the file, using their would-be shell username (LDAP <code>uid=</code>) as the key within ''ldap_only_users''. (This is just added for tracking/verification purposes. As you'll be making the LDAP changes yourself, no puppet run is required after this.)
**Add the ''realname'' of the user (most Cloud VPS accounts don't have a real name set)
**Add the ''email'' address of the users:
***If the user is WMF staff, use the email address of their Google account (You can double-check the account name in the Gmail interface). Some users have aliases for their nickname; don't use these, use the official Google account (this allows cross-checking data against corp LDAP)
***If the user is not staff, ask for a contact email address (to have a reliable contact e.g. in case of an account compromise)
**If the user is someone with a time-limited access e.g. interns, researchers who have time-limited MOUs or short term contractor, add the estimated account end date as <code>expiry_date</code> (format is YYYY-MM-DD) and a staff contact as <code>expiry_contact</code>
The entry should look something like the following:<syntaxhighlight lang="yaml">
exampleuser:
ensure: present
realname: Example User
email: exampleuser@example.org
expiry_date: 2038-01-19
expiry_contact: examplestaff@wikimedia.org
</syntaxhighlight>
====Modify LDAP groups====
After having added the user to data.yaml, the change in LDAP can be done from one of the LDAP maintenance hosts like <code>ldap-maint1001</code> (this will be automated in a subsequent step):
*Check if they are a member of the group from the Cloud VPS LDAP server: <code>ldapsearch -x cn=grpname</code>
*Add them if they are not there: <code>sudo modify-ldap-group grpname</code> and add their entry in the editor window that pops up
*To remove someone from an ldap group you can <code>sudo modify-ldap-group grpname</code> and delete their entry in the editor window that pops up
{{note|If a user has to be removed from special LDAP access, in most cases (e.g. contract termination) you may want to notify also @aklapper to remove/check Phabricator access on the same ticket.}}
*When adding a user to the wmf, wmde or nda LDAP groups, please also add them to the [[phab:tag/wmf-nda/|Phabricator group wmf-nda]] ((click "members"->"add members", see [[phab:T299839]]/[[phab:T290605]] for background on this).
For further instructions see [[Help:Accessing Cloud VPS instances]], [[LDAP]] and [[LDAP Groups]].
==Production shell access==
Access and reasoning for requesting it are documented on [[Requesting shell access]]. Please read and understand entirely before processing any access requests, as this very brief summary documentation may not cover all required points in the linked page.
If a request asks for things like new shell accounts, access to additional servers, log files, personal data, admin roles in systems like Mailman, Bugzilla, data center access, opening a firewall rule etc, then it is an access request and should be moved into the [[phab:project/view/956/|SRE-Access-Requests]] Project.
=== Check list ===
Users should create requests using the the [https://phabricator.wikimedia.org/maniphest/task/edit/form/8/ access request form], if this has not been followed then you will need to make sure the following checklist is copy/pasted to the task and completed before processing the request.
[] - User has signed the L3 Acknowledgement of Wikimedia Server Access Responsibilities Document.
[] - User has a valid NDA on file with WMF legal. (All WMF Staff/Contractor hiring are covered by NDA. Other users can be validated via the NDA tracking sheet)
[] - User has provided the following: wikitech username, email address, and full reasoning for access (including what commands and/or tasks they expect to perform)
[] - User has provided a public SSH key. This ssh key pair should only be used for WMF cluster access, and not shared with any other service (this includes not sharing with WMCS access, no shared keys.)
[] - access request (or expansion) has sign off of WMF sponsor/manager (sponsor for volunteers, manager for wmf staff)
[] - access request (or expansion) has sign off of group approver indicated by the approval field in data.yaml
More details on the above:
*The [[phab:legalpad/signatures/3/|L3 acknowledgement signature list]].
*User's direct supervisor has approved of access request via comment on phabricator task.
*Approval from project lead where user's access will be granted via comment on phabricator task. ''See above for [[#analytics-privatedata-users|Staff exceptions]]''.
*[[phab:legalpad/signatures/|Confirmation]] that the user has read, comprehend, and signed the [[phab:L3|Acknowledgement of Wikimedia Server Access Responsibilities]] document.
*ALL ACCESS REQUESTS REQUIRE AN NDA.
**Anyone who's Wikimedia staff has signed an NDA as part of their work contract. To validate that someone is staff you can either (1) check ldap-corp1001 via an LDAP search for the GCorp username (2) have the person's manager confirm (they need to sign off anyway)
**Volunteers and researchers need to sign an NDA with the legal department. You can check existing NDAs on file at https://docs.google.com/spreadsheets/d/1xQNx5s2yErvayCMzvk9VkIA2ZihFXSBEhT5Z5ziCsi4
**If that's not the case, add @[[phab:p/KFrancis|KFrancis]] to the Phabricator task to prepare an NDA (she'll confirm on task when that's completed)
*SSH public key has to be submitted via gerrit patchset by user, or by some confirmed (non-email) method (suggestion: wiki user page).
** If a group is marked as '''require_fido: true''', then all of the user's SSH key(s) must be FIDO-backed keys (see [[Yubikey-SSH-FIDO]])
**You can verify that the SSH key is not used in WMCS by running from the current LDAP maintenance host (<code>ldap-maint1001</code> as of July 2025) the cross-validate-accounts command, for example like:<syntaxhighlight lang="shell">
cross-validate-accounts --username USRNAME --uid 00000 --email address@example.com --real-name "Real User" --ssh-key "ssh-ed25519 AAAAC...." --kerberos
</syntaxhighlight>
*Any requests to add sudo rights to a ''group'' should be reviewed at the Infrastructure Foundations SRE meeting. Tag the task with [[phab:tag/Infrastructure-Foundations|#Infrastructure-Foundations]] and assign it to [[phab:p/LSobanski|@LSobanski]] to add it to the next meeting's agenda; don't grant access until it's discussed at the meeting. Skip this step for requests to add a ''user'' to an existing group (the most common kind of production access request).
*Please update the Task in phabricator, as the requestor will get update.
*Please raise any security concerns on ticket via comments.
====Deployment Groups====
*Requires Shell and must have approval from releng to be added to the deployment group
**The user should also be added to the Gerrit group [[gerrit:#/admin/groups/21,members|wmf-deployment]].
====Creating new shell users====
Please see instructions in the puppet admin module's [https://github.com/wikimedia/puppet/blob/production/modules/admin/README.md README].
Some notable changes since February 2017:
*Add the ''realname'' of the user (most Cloud VPS accounts don't have a real name set)
*Add the ''email'' address of the users:
**If the user is WMF staff use the email address of their Google account (usually the first letter of the first name and the surname, you can double-check the account name in the Gmail interface). Some users have aliases for their nickname e.g., don't use these, use the official Google account (this allows cross-checking data against corp LDAP)
**If the user is a volunteer, a researcher or contractor without access to a wikimedia.org account, ask for a contact email address (to have a reliable contact e.g. in case of an account compromise)
*If the user to be added is someone with a time-limited access (e.g. interns, researchers (who have time-limited MOUs) or short term contractor), add the estimated account end date as ''expiry_date'' (format is YYYY-MM-DD) and add a staff contact as ''expiry_contact''
====Renaming shell users====
Sometimes we have to rename a shell user. This is typically when their shell name doesn't match their login name, and they have issues logging into items requiring LDAP credentials.
Renaming a user will require a few things happen, in a very specific order. Since many users keep data in their home directories, backups can sometimes be made, but not always. (Private data that isn't allowed to be copied off the cluster should not be backed up to laptops.) The existing username has to be removed from the host, since the new username will use the old username's UID.
*Patchset is prepared, but not merged.
*Using cumin for these batch commands, all hosts that have the existing (to be replaced) username should have puppet halted.
*Affected hosts should have the user (to be replaced) deleted. DO NOT DELETE THE USER'S HOME DIRECTORY.
*Merge patchset with username change (UID remains the same).
*Run puppet on affected hosts, and they will create the new user (using the same UID.)
*Batch move the contents of the old user home into the new user home.
====IRC channel access====
/query chanserv
help access
access #channel list
access #channel add *!*@wikimedia/cloak
14:07 -ChanServ(ChanServ@services.)- Flags +Aiortv were set on ...
For people wanting to be a channel operator for #wikimedia-operations, first check they got nick protection enabled
/msg nickserv info <nick>
...
<nick> has enabled nick protection
and then
/msg chanserv flags #wikimedia-operations <nick> +Aiotv
====Check on a Phabricator user====
As part of an access request you might want to check first if a Phabricator user is actually who they say they are. There is a shell command on the the Phabricator server. see [[Phabricator#Check_on_a_Phabricator_user]]
== Search console ==
Access to Google Search Console and Bing Webmaster Tools is '''no longer owned by SREs'''. [https://office.wikimedia.org/wiki/ITS IT Services] owns it, approving and deploying the access as needed. Normally, they will be able to self serve and no work from us will be needed. However, we still have a small role overseeing and assisting on those requests, upon their request:
* We still keep admin passwords in [[pwstore]] in case the current administrator in unavailable or their account gets disabled
* We manage the external service authentication through DNS keys (in case new services or domains have to be added. [https://gerrit.wikimedia.org/g/operations/dns/+/bcd9657e5970d1bb0cd7683b8d0d89ab1d62cc49 e.g.]).
The following instructions are kept just in case:
=== Google Search Console ===
* There is no scripted check for expiry at this time. Add the user to the maint-announce calendar for their expiry until we have a better system.
==== Adding users to domains ====
* This is a tedious process. Once you login to the Google Search Console you will see a list of every single sub-domain for every single language and project in both HTTP and HTTPS.
* Login from an incognito browser window or a profile where you're not already logged in with any other Google account to [https://www.google.com/webmasters/tools google search console] using the admin account in pwstore. This requires a verification code that will be sent via email.
* Select the domain you wish to manage from the search/drop down in the top left of the page
* Select settings from the menu, then User and Permissions
* In almost all cases, the user should only be given [https://support.google.com/webmasters/answer/2453966 Restricted] to the Domain.
* Click add user, and then enter the user's email address and click add user. Permission should be 'Restricted'.
* User has now been added to that project/subdomain. Repeat as needed for other projects/subdomains.
* For NON-WMF ADDITIONS: An entry should be added to the maint-announce calendar, set to email out to the root list and the person who approved the access to the search console for the entry to alert them of expiry. Reach out to the SRE Clinic on-duty to request this. Request SCherukuwada@ to remove the user from each domain.
==== Removing users from Domains ====
* Login from an incognito browser window or a profile where you're not already logged in with any other Google account to [https://www.google.com/webmasters/tools google search console].
* Select the domain you wish to manage from the search/drop down in the top left of the page
* Click on Manage Domain, Add or Manage Users for the single domain you want to edit. This pulls up a sub-page.
* Click the user in question in the list presented on page, this highlights the user.
* Click the delete user button on the highlighted line.
=== Bing Webmaster Tools ===
* There is no scripted check for expiry at this time. Add user to the maint-announce calendar for their expiry until we have a better system.
==== Adding Users to Domains ====
* Login from an incognito browser window or a profile where you're not already logged in with any other Google account to [https://www.bing.com/webmasters Bing Webmaster Tools] using the admin account in pwstore.
* Once you login to Webmaster Tools you will see a menu item called "User Management" on the left sidebar.
* Bing has been configured with all the wikipedia.org domains added together. There is no way to grant access on a per-language-domain basis as of this writing.
* Click on "User Management" then on the "Add a User" button and give them "Read Only" access.
IMPORTANT NOTE FOR NON-WMF ADDITIONS: As with Google Search console, we need to ensure that the granted permission has an expiration date. An entry should be added to the maint-announce calendar, set to email out to the root list and the person who approved the access to the search console for the entry to alert them of expiry. Then whoever is on clinic duty for that week needs to login and remove the user from each of the domains.
==== Removing users from domains ====
* Login from an incognito browser window or a profile where you're not already logged in with any other Google account to [https://www.bing.com/webmasters Bing Webmaster Tools].
* Click on "User Management".
* Click on the triple-dot menu alongside the user you wish to remove and then click on "Remove User".
== Verifying WMF developer accounts ==
Both LDAP and shell access is tied to a user's [[Help:Create a Wikimedia developer account|developer account]], so a key task is verifying that a developer account actually belongs to the claimed person.
You can log into ldap-maint1001.eqiad.wmnet and run the following ldapsearch variants:
<pre>
# Searching for the Wikimedia Developer account name:
$ ldapsearch -x cn=foo
# Searching for the shell/UID:
$ ldapsearch -x uid=foo
# Searching for the email address:
$ ldapsearch -x mail=foo@bar.org
</pre>
WMF staff shows up with their @wikimedia.org email address.
If the user has linked their Wikimedia Developer account to a SUL account, it will show up under the ''wikimediaGlobalAccountName'' attribute. All WMF staff members will have a SUL user name with ''(WMF)'' as a suffix.
blcrlp47tq6pdywez3hzpxch5ryd847
Category:TLS
14
444722
2471835
1892250
2026-10-21T13:08:27Z
Fuzheado
1608
add a parent cat [[Category:Security]]
2471835
wikitext
text/x-wiki
Pages related to TLS (formerly known as SSL) and HTTP over TLS (HTTPS).
[[Category:Security]]
sq89nmxwxjb8gq9odul03xg4p5tm3j6
Memcached
0
446419
2471959
2447750
2026-10-22T09:35:26Z
Effie Mouzeli (WMF)
12880
pigeon update
2471959
wikitext
text/x-wiki
{{Navigation Wikimedia infrastructure|expand=mw}}
This page is about the '''Memcached''' infrastructure (clusters, pools and servers) that backs [[MediaWiki at WMF|MediaWiki]] and [[Thumbor]] in production.
For how MediaWiki itself uses this cluster (WANObjectCache, ParserCache, MicroStash), see [[Memcached for MediaWiki]]. For the proxy that MediaWiki talks to in order to reach these servers, see [[mw-mcrouter]].
This page is not about other Memcached clusters in production, such as, [[Help:Cloud Services introduction|Wikimedia Cloud Services]], and [[Swift]].
== Servers ==
There are three logical pools of memcached servers for MediaWiki:
* '''Main''': 18 [[:en:Shard_(database_architecture)|shards]] per DC, running on the <code>mc10XX</code> hosts (in [[Eqiad cluster|Eqiad]]) and <code>mc20XX</code> hosts (in [[Codfw cluster|Codfw]]).
* '''Gutter''': 3 shards per DC, hosted on <code>mc-gp100x</code> and <code>mc-gp200x</code> hosts. This is a fallback pool for the Main pool, and should not generally receive traffic. See [[mw-mcrouter#Routes|mcrouter routes]] for how failover to the Gutterpool works.
* '''mc-wf''' (Wikifunctions): a separate Memcached cluster dedicated to the [[Wikifunctions]] service. Unlike the Main/Gutter pools above, mw-wikifunctions does not go through the shared [[mw-mcrouter]] daemonset, but rather talks to its own in-pod mcrouter container.
Cross-DC traffic between the MediaWiki and Main pools (e.g. WANCache purges relayed by mcrouter's WAN route) is encrypted using TLS.
== Configuration ==
The list of Memcached servers for the Main and Gutter pools is defined in [[gerrit:plugins/gitiles/operations/puppet/+/refs/heads/production/hieradata/common/profile/mediawiki/mcrouter_wancache.yaml|Puppet]], under <code>profile::mediawiki::mcrouter_wancache::shards</code>. This list is passed to [[mw-mcrouter]] after being parsed by some [[gerrit:plugins/gitiles/operations/puppet/+/refs/heads/production/modules/mediawiki/manifests/mcrouter/yaml_defs.pp|wonderful code]].
After a change to this list has been merged and propagated to the deployment server, [[mw-mcrouter]] needs to be [[Deployment pipeline/Components#Helmfile|redeployed]] to pick up the change.
For how to replace a host in a pool, see [[mw-mcrouter#Replacing a host in a pool|mw-mcrouter]].
== Using memkeys and cachedump ==
See [[Performance/Runbooks/Analyze memcached]] for how to use <code>memkeys</code> or <code>cachedump</code> to inspect what a memcached instance is storing, for example to find hot keys or an unexpectedly large key.
== Rebooting & Restarting ==
See [[SRE/Service_Operations/Documentation/Reboots#Datastores]]
== Runbooks ==
* [[Memcached for MediaWiki/Memcached server failure|Memcached server failure]]
* [[Performance/Runbooks/Analyze memcached]] (how to use memkeys or cachedump)
== Dashboards ==
* [https://grafana.wikimedia.org/d/000000316/memcache Memcached Dashboard]
* [https://grafana.wikimedia.org/d/000000316/memcache?orgId=1&var-datasource=eqiad%20prometheus%2Fops&var-cluster=memcached_gutter&var-instance=All Memcached Gutterpool status]
* [https://grafana.wikimedia.org/d/ltSHWhHIk/mw-mcrouter mw-mcrouter]
== Links ==
* [[gerrit:plugins/gitiles/operations/puppet/+/refs/heads/production/hieradata/common/profile/mediawiki/mcrouter_wancache.yaml|list of mediawiki memcached production servers]]
== See also ==
* [[Memcached for MediaWiki]]
* [[mw-mcrouter]]
* [[Redis]]
[[Category:Caching]]
[[Category:MediaWiki production]]
[[Category:SRE Service Operations]]
q7ecodd0npwka4elrtwzl0nbbk0697r
Docker-registry
0
447352
2471853
2464881
2026-10-21T15:55:02Z
LToscano (WMF)
7191
/* Deleting images */
2471853
wikitext
text/x-wiki
{{Kubernetes nav}}
We run our own Docker registry at [https://docker-registry.wikimedia.org docker-registry.wikimedia.org]. Internally the domain <code>docker-registry.discovery.wmnet</code> is also used. The registry is used by our k8s cluster, CI, and local development.
It is highly available (<code>docker_registry_ha</code> Puppet module) and backed by S3 (via the apus Ceph cluster). We run it '''active/passive''' since we don't fully trust the Ceph's bi-directional replication between eqiad and codfw.
The docker-registry nodes consist of the '''docker registry''' itself as well as an '''nginx reverse-proxy''' in front to handle '''authentication''' as well as '''local caching'''.
== Supported use cases ==
The Docker Registry supports all the Wikimedia production/internal use cases, and we allow Docker pulls from external clients as best effort. Please do not add our Docker Registry as additional source in your configs; any recurrent pull attempt for non existing images will be eventually blocked.
== Browsing ==
Visit https://docker-registry.wikimedia.org/ to see a list of images and their tags. The listing is updated on a hourly timer and is done by the <code>registry-homepage-builder.py</code> script in Puppet.
== Downloading images ==
Despite the name, the docker-registry is usable by any OCI container tool, including podman. Nearly all images may be publicly downloaded, examined, run, etc. The only exception is images under the <code>restricted/</code> namespace, which contain non-disclosed security patches and require specific credentials to fetch.
Kubernetes nodes use [[Dragonfly]] to pull images.
== Uploading images ==
For services we recommend using the [[Deployment pipeline]] which is [[Blubber]].
For other docker images, like infrastructure images, we manage them using docker-pkg, see: [[Kubernetes/Images#Image_building]]
Hosts that want to upload images must be individually listed in Puppet hiera.
== Access control ==
The upstream docker-registry software provides no access control, so it is implemented at the nginx level, which restricts GET/POST/etc. requests accordingly. As of 2021-03-18, the following accounts exist:
* <code>ci-restricted</code>: Can pull and push any image (including "restricted/"). Used by releases servers that build the restricted MediaWiki production image.
* <code>ci-build</code>: Can pull and push any non-restricted image. Used by contint servers via docker-pkg and the deployment pipeline.
* <code>prod-build</code>: Can pull and push any non-restricted image. Used by build2001.codfw.wmnet via docker-pkg and build-base-images.
* <code>kubernetes</code>: Can pull any image (including "restricted/"). Used by k8s nodes to pull images, including the restricted MediaWiki production image.
**See [[Kubernetes/Clusters/New#Access to restricted docker images]] for more details.
The passwords are all deployed using the private puppet repo. In case rotation is needed (e.g. compromise), grepping for <code><name>_user_password</code> should find all uses (switch hyphens to underscores).
=== jwt-authorizer ===
docker-registry also supports authorization using JSON Web Tokens. A dedicated daemon is running which handles jwt validation. See [[Docker-registry/jwt-authorizer]] for more information.
== Storage backends ==
These are the S3 buckets that we use (Oct 2026):
* An S3 bucket (restricted) for <code>/v2/restricted.*</code> images.
* An S3 bucket (ml) for <code>/v2/wikimedia/machinelearning.*</code>, <code>/v2/repos/machine-learning/.*</code> images (and their vllm base images).
* An S3 bucket (releng) for <code>/v2/releng.*</code>, <code>/v2/repos/releng.*</code> images.
* An S3 bucket (main) for all the other images running on Kubernetes clusters.
Every S3 bucked is managed by a Docker Distribution instance, and the Nginx proxy in front of them routes requests based on their prefix name.
== Migration from Swift to S3 ==
More info are tracked in [[phab:T427175|https://phabricator.wikimedia.org/T427175.]] The migration is fully done but we keep this guide in case some images haven't been copied correctly.
We use skopeo (from Debian's upstream) to copy over images from one Docker Distribution instance to the other one, preserving the sha256 signatures of the blobs etc.. This is very handy when migrating images from Swift to a new S3 bucket! If it happens that an image has not been copied over and the Nginx config for a given prefix is already pointing to the new S3 bucket/distribution combo, it is sufficient to use skopeo to quickly fill the gap.
For example, let's say that you get a report of <code>docker-registry.wikimedia.org/releng/rake-ruby3.3:0.1.0</code> missing from the registry (docker pull errors etc..), you can do the following:
* ssh to registry1004 (standby host, you can also use any of the other ones).
* Start the Swift Registry Docker Distribution daemon via <code>sudo -u docker-registry /usr/bin/docker-registry serve /home/elukey/config-swift.yml</code>
* Check if the image is present on the Swift backend
<syntaxhighlight lang="bash">
# Note: From docker-registry.wikimedia.org/releng/rake-ruby3.3:0.1.0
# you need to replace "docker-registry.wikimedia.org" with "/v2"
# Note2: localhost:5000 is the address of the Docker Distribution backend for Swift
elukey@registry1004:~$ curl http://localhost:5000/v2/releng/rake-ruby3.3/tags/list
{"name":"releng/rake-ruby3.3","tags":["0.1.0","latest"]}
</syntaxhighlight>
* If it is not present, the issue may not be related to the S3 migration.
* If it is present, you need to figure out what is the S3 destination bucket. In this case, /v2/releng is a prefix matching the Releng's Docker distribution daemon. To find what is the right target, check the beginning of the tutorial.
** Find the port it is listening on, in this case 5006<syntaxhighlight lang="bash">
elukey@registry1004:~$ sudo grep addr /etc/docker/registry/config-releng.yml
addr: ":5006" <====================
addr: ":5007"
addr: rdb1015.eqiad.wmnet:6382
- addr: rdb1015.eqiad.wmnet:6382
</syntaxhighlight>
* And finally, you can execute the following command to copy the image layers / manifests / etc.. over:
<syntaxhighlight lang="text">
# Note: remove the /v2/ prefix since it is not related to the Docker image's name!
skopeo copy --all --preserve-digests docker://localhost:5000/releng/rake-ruby3.3:0.1.0 docker://localhost:5006/releng/rake-ruby3.3:0.1.0 --dest-tls-verify=false --src-tls-verify=false
</syntaxhighlight>That's it! The image should be available again for pulls.
== Deleting images ==
To delete an image entirely, you may use the tool <code>docker-registryctl</code> on the current build host. It will do it's best to remove the tags/image from the registry, despite the [[phab:T242604|circumstances]]. '''Note:''' the domain used here is important. <code>discovery.wmnet</code> has to be used, so you will have to adjust it if you copy and paste from the browser UI.<syntaxhighlight lang="bash">
elukey@build2004:~$ sudo -i docker-registryctl delete-tags docker-registry.discovery.wmnet/wikimedia/machinelearning-liftwing-inference-services
We're about to delete the following tags for image docker-registry.discovery.wmnet/wikimedia/machinelearning-liftwing-inference-services:
2021-07-28-175322-production
stable
Ok to proceed? (y/n)y
docker-registry.discovery.wmnet/wikimedia/machinelearning-liftwing-inference-services:2021-07-28-175322-production[DONE]
docker-registry.discovery.wmnet/wikimedia/machinelearning-liftwing-inference-services:stable[GONE]
</syntaxhighlight>
The underlying data isn't yet automatically garbage-collected from the S3 backend storage (https://phabricator.wikimedia.org/T437297), but the image(s) will no longer be available for download. Note that they will still show up on the docker-registry homepage (e.g. https://docker-registry.wikimedia.org/golang1.25/tags/) for a bit, this list is rebuilt only every hour.
If you want to delete MediaWiki images under the /restricted namespace:<syntaxhighlight>
elukey@deploy1003:~$ sudo -u docker-registryctl -c /etc/docker-pusher/config.json delete-tags docker-registry.discovery.wmnet/restricted/mediawiki-singleversion-cli:2026-0[34]*
</syntaxhighlight>Please note that it may take a bit of time since the bigger the S3 bucket the more checks the Docker Registry's S3 client code needs to do to find the exact sha256 of the manifest to drop. Be patient :)
== Maintenance ==
The docker-registry nodes consist of the '''docker registry''' itself as well as an '''nginx reverse-proxy''' in front to handle '''authentication''' as well as '''local caching'''.
=== Service management ===
The following units run on the registry nodes:
{| class="wikitable"
! Service unit !! Description
|-
| <code>docker-registry-ha-jwt.service</code> || JSON Web Token authoriser
|-
| <code>docker-registry-main.service</code> || Catch all instance for Kubernetes workloads.
|-
| <code>docker-registry-ml.service</code> || Registry instance serving the ML/LiftWing namespace
|-
| <code>docker-registry-restricted.service</code> || Registry instance serving MediaWiki restricted images
|-
|<code>docker-registry-releng.service</code>
|Registry instance serving releng-related images.
|}
==== Restarting ====
Before restarting any service, confirm which node is currently active and prefer restarting the passive node where possible to avoid unnecessary disruption.
cumin1003:$ sudo confctl --object-type discovery select 'dnsdisc=docker-registry' get
<syntaxhighlight lang="bash">
sudo systemctl restart docker-registry-ha-jwt.service
sudo systemctl restart docker-registry-swift.service
sudo systemctl restart docker-registry-ml.service
sudo systemctl restart docker-registry-restricted.service
</syntaxhighlight>
To check status:
<syntaxhighlight lang="bash">
sudo systemctl status docker-registry-ha-jwt.service
</syntaxhighlight>
Note that nginx sits in front of all registry instances and handles authentication and local caching.
<syntaxhighlight lang="bash">
sudo systemctl status nginx.service
sudo systemctl restart nginx.service
</syntaxhighlight>
=== Post-restart verification - httpbb ===
Run the httpbb tests against the restarted node to confirm it is serving correctly. Make sure the instance is '''not''' in read-only mode first (<code>profile::docker_registry::read_only_mode: false</code>):
<syntaxhighlight lang="bash">
sudo httpbb /srv/deployment/httpbb-tests/docker-registry/test_docker-registry.yaml --hosts 'registry2004.codfw.wmnet'
</syntaxhighlight>
== See also ==
* [[/Runbook]] (draft)
*[[SLO/Docker-registry|Service Level Objective (SLO)]]
* [[Docker]]
* [https://github.com/distribution/distribution Upstream Git repository]
*[[User:JMeybohm/Docker-Registry-Stresstest]]
[[Category:Containers]]
[[Category:Docker]]
23ev63ecel3qvdtvlkp2i7jbuhrnbj4
2471854
2471853
2026-10-21T15:55:48Z
LToscano (WMF)
7191
/* Deleting images */
2471854
wikitext
text/x-wiki
{{Kubernetes nav}}
We run our own Docker registry at [https://docker-registry.wikimedia.org docker-registry.wikimedia.org]. Internally the domain <code>docker-registry.discovery.wmnet</code> is also used. The registry is used by our k8s cluster, CI, and local development.
It is highly available (<code>docker_registry_ha</code> Puppet module) and backed by S3 (via the apus Ceph cluster). We run it '''active/passive''' since we don't fully trust the Ceph's bi-directional replication between eqiad and codfw.
The docker-registry nodes consist of the '''docker registry''' itself as well as an '''nginx reverse-proxy''' in front to handle '''authentication''' as well as '''local caching'''.
== Supported use cases ==
The Docker Registry supports all the Wikimedia production/internal use cases, and we allow Docker pulls from external clients as best effort. Please do not add our Docker Registry as additional source in your configs; any recurrent pull attempt for non existing images will be eventually blocked.
== Browsing ==
Visit https://docker-registry.wikimedia.org/ to see a list of images and their tags. The listing is updated on a hourly timer and is done by the <code>registry-homepage-builder.py</code> script in Puppet.
== Downloading images ==
Despite the name, the docker-registry is usable by any OCI container tool, including podman. Nearly all images may be publicly downloaded, examined, run, etc. The only exception is images under the <code>restricted/</code> namespace, which contain non-disclosed security patches and require specific credentials to fetch.
Kubernetes nodes use [[Dragonfly]] to pull images.
== Uploading images ==
For services we recommend using the [[Deployment pipeline]] which is [[Blubber]].
For other docker images, like infrastructure images, we manage them using docker-pkg, see: [[Kubernetes/Images#Image_building]]
Hosts that want to upload images must be individually listed in Puppet hiera.
== Access control ==
The upstream docker-registry software provides no access control, so it is implemented at the nginx level, which restricts GET/POST/etc. requests accordingly. As of 2021-03-18, the following accounts exist:
* <code>ci-restricted</code>: Can pull and push any image (including "restricted/"). Used by releases servers that build the restricted MediaWiki production image.
* <code>ci-build</code>: Can pull and push any non-restricted image. Used by contint servers via docker-pkg and the deployment pipeline.
* <code>prod-build</code>: Can pull and push any non-restricted image. Used by build2001.codfw.wmnet via docker-pkg and build-base-images.
* <code>kubernetes</code>: Can pull any image (including "restricted/"). Used by k8s nodes to pull images, including the restricted MediaWiki production image.
**See [[Kubernetes/Clusters/New#Access to restricted docker images]] for more details.
The passwords are all deployed using the private puppet repo. In case rotation is needed (e.g. compromise), grepping for <code><name>_user_password</code> should find all uses (switch hyphens to underscores).
=== jwt-authorizer ===
docker-registry also supports authorization using JSON Web Tokens. A dedicated daemon is running which handles jwt validation. See [[Docker-registry/jwt-authorizer]] for more information.
== Storage backends ==
These are the S3 buckets that we use (Oct 2026):
* An S3 bucket (restricted) for <code>/v2/restricted.*</code> images.
* An S3 bucket (ml) for <code>/v2/wikimedia/machinelearning.*</code>, <code>/v2/repos/machine-learning/.*</code> images (and their vllm base images).
* An S3 bucket (releng) for <code>/v2/releng.*</code>, <code>/v2/repos/releng.*</code> images.
* An S3 bucket (main) for all the other images running on Kubernetes clusters.
Every S3 bucked is managed by a Docker Distribution instance, and the Nginx proxy in front of them routes requests based on their prefix name.
== Migration from Swift to S3 ==
More info are tracked in [[phab:T427175|https://phabricator.wikimedia.org/T427175.]] The migration is fully done but we keep this guide in case some images haven't been copied correctly.
We use skopeo (from Debian's upstream) to copy over images from one Docker Distribution instance to the other one, preserving the sha256 signatures of the blobs etc.. This is very handy when migrating images from Swift to a new S3 bucket! If it happens that an image has not been copied over and the Nginx config for a given prefix is already pointing to the new S3 bucket/distribution combo, it is sufficient to use skopeo to quickly fill the gap.
For example, let's say that you get a report of <code>docker-registry.wikimedia.org/releng/rake-ruby3.3:0.1.0</code> missing from the registry (docker pull errors etc..), you can do the following:
* ssh to registry1004 (standby host, you can also use any of the other ones).
* Start the Swift Registry Docker Distribution daemon via <code>sudo -u docker-registry /usr/bin/docker-registry serve /home/elukey/config-swift.yml</code>
* Check if the image is present on the Swift backend
<syntaxhighlight lang="bash">
# Note: From docker-registry.wikimedia.org/releng/rake-ruby3.3:0.1.0
# you need to replace "docker-registry.wikimedia.org" with "/v2"
# Note2: localhost:5000 is the address of the Docker Distribution backend for Swift
elukey@registry1004:~$ curl http://localhost:5000/v2/releng/rake-ruby3.3/tags/list
{"name":"releng/rake-ruby3.3","tags":["0.1.0","latest"]}
</syntaxhighlight>
* If it is not present, the issue may not be related to the S3 migration.
* If it is present, you need to figure out what is the S3 destination bucket. In this case, /v2/releng is a prefix matching the Releng's Docker distribution daemon. To find what is the right target, check the beginning of the tutorial.
** Find the port it is listening on, in this case 5006<syntaxhighlight lang="bash">
elukey@registry1004:~$ sudo grep addr /etc/docker/registry/config-releng.yml
addr: ":5006" <====================
addr: ":5007"
addr: rdb1015.eqiad.wmnet:6382
- addr: rdb1015.eqiad.wmnet:6382
</syntaxhighlight>
* And finally, you can execute the following command to copy the image layers / manifests / etc.. over:
<syntaxhighlight lang="text">
# Note: remove the /v2/ prefix since it is not related to the Docker image's name!
skopeo copy --all --preserve-digests docker://localhost:5000/releng/rake-ruby3.3:0.1.0 docker://localhost:5006/releng/rake-ruby3.3:0.1.0 --dest-tls-verify=false --src-tls-verify=false
</syntaxhighlight>That's it! The image should be available again for pulls.
== Deleting images ==
To delete an image entirely, you may use the tool <code>docker-registryctl</code> on the current build host. It will do it's best to remove the tags/image from the registry, despite the [[phab:T242604|circumstances]]. '''Note:''' the domain used here is important. <code>discovery.wmnet</code> has to be used, so you will have to adjust it if you copy and paste from the browser UI.<syntaxhighlight lang="bash">
elukey@build2004:~$ sudo -i docker-registryctl delete-tags docker-registry.discovery.wmnet/wikimedia/machinelearning-liftwing-inference-services
We're about to delete the following tags for image docker-registry.discovery.wmnet/wikimedia/machinelearning-liftwing-inference-services:
2021-07-28-175322-production
stable
Ok to proceed? (y/n)y
docker-registry.discovery.wmnet/wikimedia/machinelearning-liftwing-inference-services:2021-07-28-175322-production[DONE]
docker-registry.discovery.wmnet/wikimedia/machinelearning-liftwing-inference-services:stable[GONE]
</syntaxhighlight>
The underlying data isn't yet automatically garbage-collected from the S3 backend storage (https://phabricator.wikimedia.org/T437297), but the image(s) will no longer be available for download. Note that they will still show up on the docker-registry homepage (e.g. https://docker-registry.wikimedia.org/golang1.25/tags/) for a bit, this list is rebuilt only every hour.
If you want to delete MediaWiki images under the /restricted namespace:<syntaxhighlight lang="bash">
# Note the hostname change! The credentials are at the moment (October 2026) on deploy1003
elukey@deploy1003:~$ sudo -u docker-registryctl -c /etc/docker-pusher/config.json delete-tags docker-registry.discovery.wmnet/restricted/mediawiki-singleversion-cli:2026-0[34]*
</syntaxhighlight>Please note that it may take a bit of time since the bigger the S3 bucket the more checks the Docker Registry's S3 client code needs to do to find the exact sha256 of the manifest to drop. Be patient :)
== Maintenance ==
The docker-registry nodes consist of the '''docker registry''' itself as well as an '''nginx reverse-proxy''' in front to handle '''authentication''' as well as '''local caching'''.
=== Service management ===
The following units run on the registry nodes:
{| class="wikitable"
! Service unit !! Description
|-
| <code>docker-registry-ha-jwt.service</code> || JSON Web Token authoriser
|-
| <code>docker-registry-main.service</code> || Catch all instance for Kubernetes workloads.
|-
| <code>docker-registry-ml.service</code> || Registry instance serving the ML/LiftWing namespace
|-
| <code>docker-registry-restricted.service</code> || Registry instance serving MediaWiki restricted images
|-
|<code>docker-registry-releng.service</code>
|Registry instance serving releng-related images.
|}
==== Restarting ====
Before restarting any service, confirm which node is currently active and prefer restarting the passive node where possible to avoid unnecessary disruption.
cumin1003:$ sudo confctl --object-type discovery select 'dnsdisc=docker-registry' get
<syntaxhighlight lang="bash">
sudo systemctl restart docker-registry-ha-jwt.service
sudo systemctl restart docker-registry-swift.service
sudo systemctl restart docker-registry-ml.service
sudo systemctl restart docker-registry-restricted.service
</syntaxhighlight>
To check status:
<syntaxhighlight lang="bash">
sudo systemctl status docker-registry-ha-jwt.service
</syntaxhighlight>
Note that nginx sits in front of all registry instances and handles authentication and local caching.
<syntaxhighlight lang="bash">
sudo systemctl status nginx.service
sudo systemctl restart nginx.service
</syntaxhighlight>
=== Post-restart verification - httpbb ===
Run the httpbb tests against the restarted node to confirm it is serving correctly. Make sure the instance is '''not''' in read-only mode first (<code>profile::docker_registry::read_only_mode: false</code>):
<syntaxhighlight lang="bash">
sudo httpbb /srv/deployment/httpbb-tests/docker-registry/test_docker-registry.yaml --hosts 'registry2004.codfw.wmnet'
</syntaxhighlight>
== See also ==
* [[/Runbook]] (draft)
*[[SLO/Docker-registry|Service Level Objective (SLO)]]
* [[Docker]]
* [https://github.com/distribution/distribution Upstream Git repository]
*[[User:JMeybohm/Docker-Registry-Stresstest]]
[[Category:Containers]]
[[Category:Docker]]
a7pkgq3pmmuvysnsaud4vxizpl3kixb
2471953
2471854
2026-10-22T08:22:34Z
LToscano (WMF)
7191
/* Deleting images */
2471953
wikitext
text/x-wiki
{{Kubernetes nav}}
We run our own Docker registry at [https://docker-registry.wikimedia.org docker-registry.wikimedia.org]. Internally the domain <code>docker-registry.discovery.wmnet</code> is also used. The registry is used by our k8s cluster, CI, and local development.
It is highly available (<code>docker_registry_ha</code> Puppet module) and backed by S3 (via the apus Ceph cluster). We run it '''active/passive''' since we don't fully trust the Ceph's bi-directional replication between eqiad and codfw.
The docker-registry nodes consist of the '''docker registry''' itself as well as an '''nginx reverse-proxy''' in front to handle '''authentication''' as well as '''local caching'''.
== Supported use cases ==
The Docker Registry supports all the Wikimedia production/internal use cases, and we allow Docker pulls from external clients as best effort. Please do not add our Docker Registry as additional source in your configs; any recurrent pull attempt for non existing images will be eventually blocked.
== Browsing ==
Visit https://docker-registry.wikimedia.org/ to see a list of images and their tags. The listing is updated on a hourly timer and is done by the <code>registry-homepage-builder.py</code> script in Puppet.
== Downloading images ==
Despite the name, the docker-registry is usable by any OCI container tool, including podman. Nearly all images may be publicly downloaded, examined, run, etc. The only exception is images under the <code>restricted/</code> namespace, which contain non-disclosed security patches and require specific credentials to fetch.
Kubernetes nodes use [[Dragonfly]] to pull images.
== Uploading images ==
For services we recommend using the [[Deployment pipeline]] which is [[Blubber]].
For other docker images, like infrastructure images, we manage them using docker-pkg, see: [[Kubernetes/Images#Image_building]]
Hosts that want to upload images must be individually listed in Puppet hiera.
== Access control ==
The upstream docker-registry software provides no access control, so it is implemented at the nginx level, which restricts GET/POST/etc. requests accordingly. As of 2021-03-18, the following accounts exist:
* <code>ci-restricted</code>: Can pull and push any image (including "restricted/"). Used by releases servers that build the restricted MediaWiki production image.
* <code>ci-build</code>: Can pull and push any non-restricted image. Used by contint servers via docker-pkg and the deployment pipeline.
* <code>prod-build</code>: Can pull and push any non-restricted image. Used by build2001.codfw.wmnet via docker-pkg and build-base-images.
* <code>kubernetes</code>: Can pull any image (including "restricted/"). Used by k8s nodes to pull images, including the restricted MediaWiki production image.
**See [[Kubernetes/Clusters/New#Access to restricted docker images]] for more details.
The passwords are all deployed using the private puppet repo. In case rotation is needed (e.g. compromise), grepping for <code><name>_user_password</code> should find all uses (switch hyphens to underscores).
=== jwt-authorizer ===
docker-registry also supports authorization using JSON Web Tokens. A dedicated daemon is running which handles jwt validation. See [[Docker-registry/jwt-authorizer]] for more information.
== Storage backends ==
These are the S3 buckets that we use (Oct 2026):
* An S3 bucket (restricted) for <code>/v2/restricted.*</code> images.
* An S3 bucket (ml) for <code>/v2/wikimedia/machinelearning.*</code>, <code>/v2/repos/machine-learning/.*</code> images (and their vllm base images).
* An S3 bucket (releng) for <code>/v2/releng.*</code>, <code>/v2/repos/releng.*</code> images.
* An S3 bucket (main) for all the other images running on Kubernetes clusters.
Every S3 bucked is managed by a Docker Distribution instance, and the Nginx proxy in front of them routes requests based on their prefix name.
== Migration from Swift to S3 ==
More info are tracked in [[phab:T427175|https://phabricator.wikimedia.org/T427175.]] The migration is fully done but we keep this guide in case some images haven't been copied correctly.
We use skopeo (from Debian's upstream) to copy over images from one Docker Distribution instance to the other one, preserving the sha256 signatures of the blobs etc.. This is very handy when migrating images from Swift to a new S3 bucket! If it happens that an image has not been copied over and the Nginx config for a given prefix is already pointing to the new S3 bucket/distribution combo, it is sufficient to use skopeo to quickly fill the gap.
For example, let's say that you get a report of <code>docker-registry.wikimedia.org/releng/rake-ruby3.3:0.1.0</code> missing from the registry (docker pull errors etc..), you can do the following:
* ssh to registry1004 (standby host, you can also use any of the other ones).
* Start the Swift Registry Docker Distribution daemon via <code>sudo -u docker-registry /usr/bin/docker-registry serve /home/elukey/config-swift.yml</code>
* Check if the image is present on the Swift backend
<syntaxhighlight lang="bash">
# Note: From docker-registry.wikimedia.org/releng/rake-ruby3.3:0.1.0
# you need to replace "docker-registry.wikimedia.org" with "/v2"
# Note2: localhost:5000 is the address of the Docker Distribution backend for Swift
elukey@registry1004:~$ curl http://localhost:5000/v2/releng/rake-ruby3.3/tags/list
{"name":"releng/rake-ruby3.3","tags":["0.1.0","latest"]}
</syntaxhighlight>
* If it is not present, the issue may not be related to the S3 migration.
* If it is present, you need to figure out what is the S3 destination bucket. In this case, /v2/releng is a prefix matching the Releng's Docker distribution daemon. To find what is the right target, check the beginning of the tutorial.
** Find the port it is listening on, in this case 5006<syntaxhighlight lang="bash">
elukey@registry1004:~$ sudo grep addr /etc/docker/registry/config-releng.yml
addr: ":5006" <====================
addr: ":5007"
addr: rdb1015.eqiad.wmnet:6382
- addr: rdb1015.eqiad.wmnet:6382
</syntaxhighlight>
* And finally, you can execute the following command to copy the image layers / manifests / etc.. over:
<syntaxhighlight lang="text">
# Note: remove the /v2/ prefix since it is not related to the Docker image's name!
skopeo copy --all --preserve-digests docker://localhost:5000/releng/rake-ruby3.3:0.1.0 docker://localhost:5006/releng/rake-ruby3.3:0.1.0 --dest-tls-verify=false --src-tls-verify=false
</syntaxhighlight>That's it! The image should be available again for pulls.
== Deleting images ==
To delete an image entirely, you may use the tool <code>docker-registryctl</code> on the current build host. It will do it's best to remove the tags/image from the registry, despite the [[phab:T242604|circumstances]]. '''Note:''' the domain used here is important. <code>discovery.wmnet</code> has to be used, so you will have to adjust it if you copy and paste from the browser UI.<syntaxhighlight lang="bash">
elukey@build2004:~$ sudo -i docker-registryctl delete-tags docker-registry.discovery.wmnet/wikimedia/machinelearning-liftwing-inference-services
We're about to delete the following tags for image docker-registry.discovery.wmnet/wikimedia/machinelearning-liftwing-inference-services:
2021-07-28-175322-production
stable
Ok to proceed? (y/n)y
docker-registry.discovery.wmnet/wikimedia/machinelearning-liftwing-inference-services:2021-07-28-175322-production[DONE]
docker-registry.discovery.wmnet/wikimedia/machinelearning-liftwing-inference-services:stable[GONE]
</syntaxhighlight>
The underlying data isn't yet automatically garbage-collected from the S3 backend storage (https://phabricator.wikimedia.org/T437297), but the image(s) will no longer be available for download. Note that they will still show up on the docker-registry homepage (e.g. https://docker-registry.wikimedia.org/golang1.25/tags/) for a bit, this list is rebuilt only every hour.
If you want to delete MediaWiki images under the /restricted namespace:<syntaxhighlight lang="bash">
# Note the hostname change! The credentials are at the moment (October 2026) on deploy1003
elukey@deploy1003:~$ sudo docker-registryctl -c /etc/docker-pusher/config.json delete-tags docker-registry.discovery.wmnet/restricted/mediawiki-singleversion-cli:2026-0[34]*
</syntaxhighlight>Please note that it may take a bit of time since the bigger the S3 bucket the more checks the Docker Registry's S3 client code needs to do to find the exact sha256 of the manifest to drop. Be patient :)
== Maintenance ==
The docker-registry nodes consist of the '''docker registry''' itself as well as an '''nginx reverse-proxy''' in front to handle '''authentication''' as well as '''local caching'''.
=== Service management ===
The following units run on the registry nodes:
{| class="wikitable"
! Service unit !! Description
|-
| <code>docker-registry-ha-jwt.service</code> || JSON Web Token authoriser
|-
| <code>docker-registry-main.service</code> || Catch all instance for Kubernetes workloads.
|-
| <code>docker-registry-ml.service</code> || Registry instance serving the ML/LiftWing namespace
|-
| <code>docker-registry-restricted.service</code> || Registry instance serving MediaWiki restricted images
|-
|<code>docker-registry-releng.service</code>
|Registry instance serving releng-related images.
|}
==== Restarting ====
Before restarting any service, confirm which node is currently active and prefer restarting the passive node where possible to avoid unnecessary disruption.
cumin1003:$ sudo confctl --object-type discovery select 'dnsdisc=docker-registry' get
<syntaxhighlight lang="bash">
sudo systemctl restart docker-registry-ha-jwt.service
sudo systemctl restart docker-registry-swift.service
sudo systemctl restart docker-registry-ml.service
sudo systemctl restart docker-registry-restricted.service
</syntaxhighlight>
To check status:
<syntaxhighlight lang="bash">
sudo systemctl status docker-registry-ha-jwt.service
</syntaxhighlight>
Note that nginx sits in front of all registry instances and handles authentication and local caching.
<syntaxhighlight lang="bash">
sudo systemctl status nginx.service
sudo systemctl restart nginx.service
</syntaxhighlight>
=== Post-restart verification - httpbb ===
Run the httpbb tests against the restarted node to confirm it is serving correctly. Make sure the instance is '''not''' in read-only mode first (<code>profile::docker_registry::read_only_mode: false</code>):
<syntaxhighlight lang="bash">
sudo httpbb /srv/deployment/httpbb-tests/docker-registry/test_docker-registry.yaml --hosts 'registry2004.codfw.wmnet'
</syntaxhighlight>
== See also ==
* [[/Runbook]] (draft)
*[[SLO/Docker-registry|Service Level Objective (SLO)]]
* [[Docker]]
* [https://github.com/distribution/distribution Upstream Git repository]
*[[User:JMeybohm/Docker-Registry-Stresstest]]
[[Category:Containers]]
[[Category:Docker]]
kuae7zim5gmnmrg5rkw6oky3vr3v64z
2471954
2471953
2026-10-22T08:28:18Z
LToscano (WMF)
7191
/* Deleting images */
2471954
wikitext
text/x-wiki
{{Kubernetes nav}}
We run our own Docker registry at [https://docker-registry.wikimedia.org docker-registry.wikimedia.org]. Internally the domain <code>docker-registry.discovery.wmnet</code> is also used. The registry is used by our k8s cluster, CI, and local development.
It is highly available (<code>docker_registry_ha</code> Puppet module) and backed by S3 (via the apus Ceph cluster). We run it '''active/passive''' since we don't fully trust the Ceph's bi-directional replication between eqiad and codfw.
The docker-registry nodes consist of the '''docker registry''' itself as well as an '''nginx reverse-proxy''' in front to handle '''authentication''' as well as '''local caching'''.
== Supported use cases ==
The Docker Registry supports all the Wikimedia production/internal use cases, and we allow Docker pulls from external clients as best effort. Please do not add our Docker Registry as additional source in your configs; any recurrent pull attempt for non existing images will be eventually blocked.
== Browsing ==
Visit https://docker-registry.wikimedia.org/ to see a list of images and their tags. The listing is updated on a hourly timer and is done by the <code>registry-homepage-builder.py</code> script in Puppet.
== Downloading images ==
Despite the name, the docker-registry is usable by any OCI container tool, including podman. Nearly all images may be publicly downloaded, examined, run, etc. The only exception is images under the <code>restricted/</code> namespace, which contain non-disclosed security patches and require specific credentials to fetch.
Kubernetes nodes use [[Dragonfly]] to pull images.
== Uploading images ==
For services we recommend using the [[Deployment pipeline]] which is [[Blubber]].
For other docker images, like infrastructure images, we manage them using docker-pkg, see: [[Kubernetes/Images#Image_building]]
Hosts that want to upload images must be individually listed in Puppet hiera.
== Access control ==
The upstream docker-registry software provides no access control, so it is implemented at the nginx level, which restricts GET/POST/etc. requests accordingly. As of 2021-03-18, the following accounts exist:
* <code>ci-restricted</code>: Can pull and push any image (including "restricted/"). Used by releases servers that build the restricted MediaWiki production image.
* <code>ci-build</code>: Can pull and push any non-restricted image. Used by contint servers via docker-pkg and the deployment pipeline.
* <code>prod-build</code>: Can pull and push any non-restricted image. Used by build2001.codfw.wmnet via docker-pkg and build-base-images.
* <code>kubernetes</code>: Can pull any image (including "restricted/"). Used by k8s nodes to pull images, including the restricted MediaWiki production image.
**See [[Kubernetes/Clusters/New#Access to restricted docker images]] for more details.
The passwords are all deployed using the private puppet repo. In case rotation is needed (e.g. compromise), grepping for <code><name>_user_password</code> should find all uses (switch hyphens to underscores).
=== jwt-authorizer ===
docker-registry also supports authorization using JSON Web Tokens. A dedicated daemon is running which handles jwt validation. See [[Docker-registry/jwt-authorizer]] for more information.
== Storage backends ==
These are the S3 buckets that we use (Oct 2026):
* An S3 bucket (restricted) for <code>/v2/restricted.*</code> images.
* An S3 bucket (ml) for <code>/v2/wikimedia/machinelearning.*</code>, <code>/v2/repos/machine-learning/.*</code> images (and their vllm base images).
* An S3 bucket (releng) for <code>/v2/releng.*</code>, <code>/v2/repos/releng.*</code> images.
* An S3 bucket (main) for all the other images running on Kubernetes clusters.
Every S3 bucked is managed by a Docker Distribution instance, and the Nginx proxy in front of them routes requests based on their prefix name.
== Migration from Swift to S3 ==
More info are tracked in [[phab:T427175|https://phabricator.wikimedia.org/T427175.]] The migration is fully done but we keep this guide in case some images haven't been copied correctly.
We use skopeo (from Debian's upstream) to copy over images from one Docker Distribution instance to the other one, preserving the sha256 signatures of the blobs etc.. This is very handy when migrating images from Swift to a new S3 bucket! If it happens that an image has not been copied over and the Nginx config for a given prefix is already pointing to the new S3 bucket/distribution combo, it is sufficient to use skopeo to quickly fill the gap.
For example, let's say that you get a report of <code>docker-registry.wikimedia.org/releng/rake-ruby3.3:0.1.0</code> missing from the registry (docker pull errors etc..), you can do the following:
* ssh to registry1004 (standby host, you can also use any of the other ones).
* Start the Swift Registry Docker Distribution daemon via <code>sudo -u docker-registry /usr/bin/docker-registry serve /home/elukey/config-swift.yml</code>
* Check if the image is present on the Swift backend
<syntaxhighlight lang="bash">
# Note: From docker-registry.wikimedia.org/releng/rake-ruby3.3:0.1.0
# you need to replace "docker-registry.wikimedia.org" with "/v2"
# Note2: localhost:5000 is the address of the Docker Distribution backend for Swift
elukey@registry1004:~$ curl http://localhost:5000/v2/releng/rake-ruby3.3/tags/list
{"name":"releng/rake-ruby3.3","tags":["0.1.0","latest"]}
</syntaxhighlight>
* If it is not present, the issue may not be related to the S3 migration.
* If it is present, you need to figure out what is the S3 destination bucket. In this case, /v2/releng is a prefix matching the Releng's Docker distribution daemon. To find what is the right target, check the beginning of the tutorial.
** Find the port it is listening on, in this case 5006<syntaxhighlight lang="bash">
elukey@registry1004:~$ sudo grep addr /etc/docker/registry/config-releng.yml
addr: ":5006" <====================
addr: ":5007"
addr: rdb1015.eqiad.wmnet:6382
- addr: rdb1015.eqiad.wmnet:6382
</syntaxhighlight>
* And finally, you can execute the following command to copy the image layers / manifests / etc.. over:
<syntaxhighlight lang="text">
# Note: remove the /v2/ prefix since it is not related to the Docker image's name!
skopeo copy --all --preserve-digests docker://localhost:5000/releng/rake-ruby3.3:0.1.0 docker://localhost:5006/releng/rake-ruby3.3:0.1.0 --dest-tls-verify=false --src-tls-verify=false
</syntaxhighlight>That's it! The image should be available again for pulls.
== Deleting images ==
To delete an image entirely, you may use the tool <code>docker-registryctl</code> on the current build host. It will do it's best to remove the tags/image from the registry, despite the [[phab:T242604|circumstances]]. '''Note:''' the domain used here is important. <code>discovery.wmnet</code> has to be used, so you will have to adjust it if you copy and paste from the browser UI.<syntaxhighlight lang="bash">
elukey@build2004:~$ sudo -i docker-registryctl delete-tags docker-registry.discovery.wmnet/wikimedia/machinelearning-liftwing-inference-services
We're about to delete the following tags for image docker-registry.discovery.wmnet/wikimedia/machinelearning-liftwing-inference-services:
2021-07-28-175322-production
stable
Ok to proceed? (y/n)y
docker-registry.discovery.wmnet/wikimedia/machinelearning-liftwing-inference-services:2021-07-28-175322-production[DONE]
docker-registry.discovery.wmnet/wikimedia/machinelearning-liftwing-inference-services:stable[GONE]
</syntaxhighlight>
The underlying data isn't yet automatically garbage-collected from the S3 backend storage (https://phabricator.wikimedia.org/T437297), but the image(s) will no longer be available for download. Note that they will still show up on the docker-registry homepage (e.g. https://docker-registry.wikimedia.org/golang1.25/tags/) for a bit, this list is rebuilt only every hour.
If you want to delete MediaWiki images under the /restricted namespace:<syntaxhighlight lang="bash">
# Note the hostname change! The credentials are at the moment (October 2026) on deploy1003
# Delete all images with tag matching September 2026
elukey@deploy1003:~$ sudo docker-registryctl -c /etc/docker-pusher/config.json delete-tags docker-registry.discovery.wmnet/restricted/mediawiki-singleversion-cli:2026-09*
# If you want to restrict images older than a certain date in the tag and from 2026
elukey@deploy1003:~$ sudo docker-registryctl -c /etc/docker-pusher/config.json delete-tags docker-registry.discovery.wmnet/restricted/mediawiki-singleversion-cli:2026* --older-than 2026-09-30
</syntaxhighlight>Please note that it may take a bit of time since the bigger the S3 bucket the more checks the Docker Registry's S3 client code needs to do to find the exact sha256 of the manifest to drop. Be patient :)
== Maintenance ==
The docker-registry nodes consist of the '''docker registry''' itself as well as an '''nginx reverse-proxy''' in front to handle '''authentication''' as well as '''local caching'''.
=== Service management ===
The following units run on the registry nodes:
{| class="wikitable"
! Service unit !! Description
|-
| <code>docker-registry-ha-jwt.service</code> || JSON Web Token authoriser
|-
| <code>docker-registry-main.service</code> || Catch all instance for Kubernetes workloads.
|-
| <code>docker-registry-ml.service</code> || Registry instance serving the ML/LiftWing namespace
|-
| <code>docker-registry-restricted.service</code> || Registry instance serving MediaWiki restricted images
|-
|<code>docker-registry-releng.service</code>
|Registry instance serving releng-related images.
|}
==== Restarting ====
Before restarting any service, confirm which node is currently active and prefer restarting the passive node where possible to avoid unnecessary disruption.
cumin1003:$ sudo confctl --object-type discovery select 'dnsdisc=docker-registry' get
<syntaxhighlight lang="bash">
sudo systemctl restart docker-registry-ha-jwt.service
sudo systemctl restart docker-registry-swift.service
sudo systemctl restart docker-registry-ml.service
sudo systemctl restart docker-registry-restricted.service
</syntaxhighlight>
To check status:
<syntaxhighlight lang="bash">
sudo systemctl status docker-registry-ha-jwt.service
</syntaxhighlight>
Note that nginx sits in front of all registry instances and handles authentication and local caching.
<syntaxhighlight lang="bash">
sudo systemctl status nginx.service
sudo systemctl restart nginx.service
</syntaxhighlight>
=== Post-restart verification - httpbb ===
Run the httpbb tests against the restarted node to confirm it is serving correctly. Make sure the instance is '''not''' in read-only mode first (<code>profile::docker_registry::read_only_mode: false</code>):
<syntaxhighlight lang="bash">
sudo httpbb /srv/deployment/httpbb-tests/docker-registry/test_docker-registry.yaml --hosts 'registry2004.codfw.wmnet'
</syntaxhighlight>
== See also ==
* [[/Runbook]] (draft)
*[[SLO/Docker-registry|Service Level Objective (SLO)]]
* [[Docker]]
* [https://github.com/distribution/distribution Upstream Git repository]
*[[User:JMeybohm/Docker-Registry-Stresstest]]
[[Category:Containers]]
[[Category:Docker]]
lp0r3qiqzqn424dzwt6xfzoo5e4vaho
PKI
0
447389
2471833
2471821
2026-10-21T13:04:05Z
Fuzheado
1608
add explanation and fix some typos/links
2471833
wikitext
text/x-wiki
Wikimedia's PKI (public key infrastructure) is based on Cloudflare's [[github:cloudflare/cfssl|cfssl]], and in order to use it we maintain the following:
* Puppet support to be able to provision and automatically renew a TLS certificate.
* [[gerrit:admin/repos/operations/software/cfssl-issuer,general|cfssl-issuer]], an External Issuer for [[Kubernetes/cert-manager|cert-manager]] to be used with CFSSL <code>multirootca</code> and K8s (it is based off of the sample-external-issuer provided by cert-manager).
* A [[gitlab:repos/sre/cfssl|fork]] of the cfssl repository to add [https://gitlab.wikimedia.org/repos/sre/cfssl/-/tree/main/debian/patches?ref_type=heads custom patches] that we filed to upstream but that were never merged.
At the infrastructure level we run (Oct 2026):
* One pki-root host in eqiad that hosts the cfssl root CA and the intermediate CAs keypairs, that are rotated periodically (when needed) by puppet. It is backed-up regularly via Bacula. It doesn't serve any request, nor it is connected to the pki[12]* nodes in some way.
* Multiple pki[12]* nodes running the cfssl-multiroot daemon. They are a mixture of VMs and bare metal hosts behind a LVS service. The idea is to avoid using only VMs due to the fact that Ganeti depends on PKI for TLS certs. Those hosts serve all the TLS certs requests.
* A MariaDB database supporting the cfssl-multiroot daemons. It holds all certificates emitted, so that cfssl won't regenerate them if not needed.
The most recent PKI upgrade was tracked in [[phab:T416664|T416664]].
Security note: we rely on HMAC signing, provided/required by cfssl, as way to authenticate clients requesting a TLS certificate. Every group of clients (like every k8s cluster, puppet on bare metal, etc.) shares a secret password with cfssl, that allows to sign requests and authenticate them.
== Useful links ==
{{Special:PrefixIndex/PKI/|hideredirects=1}}
[[Category:SRE Infrastructure Foundations]]
[[Category:PKI]]
9guvlvrk5i73g5v0ytszy6bzqrwiqrz
Maps/v2
0
448500
2471830
2415150
2026-10-21T12:38:10Z
Effie Mouzeli (WMF)
12880
2471830
wikitext
text/x-wiki
<!-- pigeon-page: Maps/v2 -->
== Overview ==
The maps stack is responsible for rendering [https://maps.wikimedia.org/ maps.wikimedia.org] and any embedded maps in Wiki articles.
== Components ==
On MediaWiki, the [[mw:Extension:Kartographer|Kartographer extension]] calls the maps.wikimedia.org endpoint with specific parameters, that are aimed to visualize a map with or without overlay shapes on top (city map displaying the neighborhoods for example).
The maps stack is composed by:
* [[:gerrit:admin/repos/mediawiki/services/kartotherian,general|Kartotherian]]: it is the frontend for maps.wikimedia.org and it offers an API to render a specific map in raster or vector formats. It retrieves the base map from Tegola (see below) and it applies geoshapes if requested/configured by the users. It fetches data from the Postgres gis database as well. It also calls the Wikidata Query Service (wdqs-internal) and the MediaWiki Action API, which means it depends on mw-api-int.
* [[:gerrit:admin/repos/operations/software/tegola,general|Tegola]]: called by Kartotherian; it is responsible for fetching vector data from the Postgres gis database on maps* bare metal hosts and rendering the related map tiles in a specific format. It uses Thanos Swift as cache for the tiles.
* Postgres: it is the datastore behind the stack, storing custom information about the above services and the vector data retrieved from [https://www.openstreetmap.org/ Open Street Map].
* [[:github:omniscale/imposm3|Imposm]]: It is the daemon running on Postgres master hosts (maps1011 and maps2011) that fetches data from Open Street Map upstream and updates the gis database.
== Monitoring ==
* Kartotherian [https://grafana.wikimedia.org/d/d821ac19-02c5-49ac-bf18-58d2e27fdf19/kartotherian dashboard]
* Tegola [https://grafana.wikimedia.org/d/AWSBX1rMk/tegola-vector-tiles-app-metrics dashboard]
* Postgres [https://grafana.wikimedia.org/d/000000828/postgresql-database? dashboard] (you need to select the right host, maps1011 and maps2011 are the current master nodes, the rest are replicas).
== Subpages ==
{{Special:PrefixIndex/{{PAGENAME}}/|hideredirects=1|stripprefix=1}}
7ok4vk8bn8ez2cvqstv6220iolzugx1
User:PPenloglou-WMF
2
452558
2471917
2270806
2026-10-21T23:56:10Z
PPenloglou-WMF
34869
profile update
2471917
wikitext
text/x-wiki
{{User info
| full name = Panagiotis Penloglou
| image name = Panagiotis Penloglou.png
| job title = Senior Developer Specialist, Fundraising Products
| about me = My name is Panagiotis Penloglou but I also go by as Panos. I'm a BSc Computer Science graduate from the University of Leeds. 3+ years of experience in the software industry with a focus on web development.
| about my work = I joined the Wikimedia Foundation in 2022 as a Campaign Associate, helping out the Online Fundraising team with donor emails.
| contact me = Email: ppenloglou@wikimedia.org <br /> SSH Key = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILk9fMuOdj1wrz7g5ZZtWxZuEPFzXi84oIy/Pr945VpW ppenloglou@wikimedia.org
}}
3g38osfme3zg2k7g4emqwqwxk83mwr9
Tool:Ircservserv
116
455366
2471874
2208128
2026-10-21T18:35:19Z
BryanDavis
1604
git changed a while ago
2471874
wikitext
text/x-wiki
{{Tool
|name = ircservserv
|title = ircservserv
|description = Management of IRC channels
|website = [[meta:IRC/Bots/ircservserv]]
|keywords = irc, rust
|author = [[User:Legoktm|Legoktm]]
|username =
|maintainer = [[User:Legoktm|Legoktm]], [[User:Majavah|Majavah]]
|repository = [[gitlab:toolforge-repos/ircservserv]]
|license = GPL-3.0+
|phabricator = ircservserv
|issues =
|sal = [[Nova_Resource:Tools.ircservserv/SAL|Tools.ircservserv/SAL]]
}}
{{Soft redirect|meta:IRC/Bots/ircservserv}}
20m9f0xfvthcreuc1u8ocv3h1llmlfz
Template:WMCS top-level product page header
10
455967
2471851
2237027
2026-10-21T15:28:13Z
Meno25
1446
update redirected link
2471851
wikitext
text/x-wiki
{{Mbox|image=[[File:Ambox PR.svg|40x40px|link=|alt=]]|text=Please read the [[Help:Cloud Services introduction|Wikimedia Cloud Services introduction]] and the [[Help:Getting started|Getting Started guide]].}}<noinclude>
{{documentation|content=Header for [[Portal:Toolforge]], [[Portal:Cloud VPS]] and [[Portal:Data Services]].}}</noinclude>
iuhrcu1n84fftg2i5owaatt3mfbqgso
Mw-experimental
0
458856
2471962
2441328
2026-10-22T09:48:19Z
Effie Mouzeli (WMF)
12880
fixed release file path
2471962
wikitext
text/x-wiki
{{lowercase}}
{{Navigation Wikimedia infrastructure|expand=mw}}
'''mw-experimental''' is a [[MediaWiki On Kubernetes]] deployment in [[WikiKube]], for ad-hoc testing via [[WikimediaDebug]].
== Design ==
Each data center runs one <code>mw-experimental</code> pod from a dedicated wikikube-worker node, reachable to you by SSH.
These <code>mw-experimental</code> pods run the same <code>mediawiki-multiversion-debug</code> docker images as <code>mwdebug</code> pods, but with MediaWiki code mounted from the host's <code>/srv/mediawiki</code> directory, rather than the code found in the container. This allows you to edit the files for ad-hoc testing.
This service replaces [[mwdebug]] (more info on {{phab|T276994}})
== Using the service ==
# SSH to the [[Deployment server]] and recreate the <code>mw-experimental</code> pod in Kubernetes for your chosen data center. This will apply the latest images, matching the rest of production [[MediaWiki On Kubernetes|mw-on-k8s]]. '''Scap skips''' restarting/recreating mw-experimental pods during deployments. While code under <code>/srv/mediawiki</code> is updated dynamically, the underlying docker image may be several days behind on infrastructure changes until you redeploy it (e.g. Puppet, Debian packages, Apache config, PHP settings):<syntaxhighlight lang="bash">
deploy:$ cd /srv/deployment-charts/helmfile.d/services/mw-experimental
deploy:$ helmfile -e eqiad -i apply
or
deploy:$ helmfile -e codfw -i apply
</syntaxhighlight>
# SSH to a host '''[[Help:SSH Fingerprints/mw-experimental.eqiad.wmnet|mw-experimental.eqiad.wmnet]]''' or '''[[Help:SSH Fingerprints/mw-experimental.codfw.wmnet|mw-experimental.codfw.wmnet]]'''
# There is timer updating <code>/srv/mediawiki</code> every hour. You can check when it last ran:<syntaxhighlight lang="bash">
systemctl status mw-experimental-mediawiki-image-update.timer
</syntaxhighlight>
# Despite this, if you want to update it again, you may run the timer on demand (takes ~3mins):<syntaxhighlight lang="bash">wikikube-worker-exp1001:~$ sudo systemctl restart mw-experimental-mediawiki-image-update.service</syntaxhighlight>
# Make your changes in <code>/srv/mediawiki</code> as usual. Files are editable as any user in the <code>deployment</code> group; changes to PHP files should take effect immediately (no need to restart php-fpm or anything like that).
# Go to [[WikimediaDebug]] and choose <code>k8s-mw-experimental-eqiad</code> or <code>k8s-mw-experimental-codfw</code>
'''Notes:'''
* We have a timer updating <code>/srv/mediawiki</code> every hour
* To prevent code refreshing, you may run <syntaxhighlight lang="bash">
wikikube-worker-exp1001:~$ /usr/local/sbin/mw-experimental-mediawiki-image-update --lock
wikikube-worker-exp1001:~$ /usr/local/sbin/mw-experimental-mediawiki-image-update --unlock
</syntaxhighlight>
* If you would like to discard your changes quickly and start over, you do not need to run helmfile again, unless some breaking changes have been deployed in the meantime. Restarting <code>mw-experimental-mediawiki-image-update.service</code> should be enough.
* Image versions used on mw-experimental can be found either on the experimental hosts themselves or the deployment server under <code>/etc/helmfile-defaults/mediawiki/release/mw-experimental-pinkllama-eqiad.yaml</code> (or <code>-codfw.yaml</code>)
== Dashboards ==
*Same url as before on [https://logstash.wikimedia.org/app/dashboards#/view/mwdebug1002 logstash]
*[https://grafana-rw.wikimedia.org/d/ddc5a328-b2fa-4fa6-acdf-094d3be39b4e/mw-experimental mw-experimental on grafana]
== Known limitations ==
=== Shell inside the mediawiki pod ===
See [[phab:T405688|T405688: Support shell to mw-experimental pod]].
=== Checking out a Gerrit change ===
Τhere is no straightforward way to check out a certain Gerrit change. Unofficial workaround: do some Git trickery to turn the directories into Git repositories.
<syntaxhighlight lang="shell">
cd /srv/mediawiki/php-1.46.0-wmf.26/extensions/cldr/
sudo -u mwdeploy git init -b wmf/1.46.0-wmf.26
sudo -u mwdeploy git remote add gerrit https://gerrit.wikimedia.org/r/mediawiki/extensions/cldr.git
sudo -u mwdeploy git fetch --depth=1 gerrit wmf/1.46.0-wmf.26
sudo -u mwdeploy git update-ref HEAD gerrit/wmf/1.46.0-wmf.26
sudo -u mwdeploy git reset
</syntaxhighlight>
(Substitute the right directories, branches and Gerrit URLs as needed.) Then you can fetch the Gerrit change from the <code>refs/changes</code> namespace, see [https://gerrit-review.googlesource.com/Documentation/concept-refs-for-namespace.html Gerrit documentation] or [[:mw:Gerrit/Advanced usage]], and check it out at <code>FETCH_HEAD</code>.
If you break anything, revert your changes with <code>sudo systemctl restart mw-experimental-mediawiki-image-update.service</code>.
== See also ==
* [[Debugging in production]]
* [[mw-parsoid]]
[[Category:MediaWiki production]]
c92c2e5g0m61cg4evktf9zxueu0ynhe
Data Platform/Data Lake/Edits/Editor counts per page
0
460388
2471889
2454142
2026-10-21T21:16:15Z
AKhatun (WMF)
50461
/* Access */ Fix stala attribution API link.
2471889
wikitext
text/x-wiki
{{TOC|align=right}}
The <code>wmf_contributors.editor_counts_per_page</code> dataset holds distinct '''visible''' editor counts for every <code>(wiki_id, page_id)</code> across all Wikimedia wikis — broken down into total, permanent (registered human), bot, logged-out (anonymous), and temporary-account editors. It is built from the [[Data Platform/Data Lake/Edits/Mediawiki_history_incremental_v1|Incremental MediaWiki History]] table by a daily pipeline, stored as an Iceberg table in the Data Lake, and served per page from a Cassandra-backed [[mw:Data Gateway|Data Gateway]] endpoint.
* Ticket: [[phab:T426316|T426316]]
* [https://docs.google.com/document/d/1tTRH3lGaHWFJIgdTx4W4dsV7b42ejF2gnpXG001Qmj0/edit?tab=t.if3fpl2cm1pp Design Document]
* dbt selector: <code>+editor_counts_per_page</code> ([[gitLab:repos/data-engineering/dbt-jobs/-/tree/main/models/data-engineering|dbt-repo]])
* Airflow DAG: [[:gitLab:repos/data-engineering/airflow-dags/-/blob/main/main/dags/wmf_contributors/editor_counts_per_page_daily_dag.py|editor_counts_per_page_daily_dag.py]].
= User documentation =
For each page on each wiki, the dataset stores the number of '''distinct editors''' who have made at least one publicly visible revision to that page, split by editor type:
* '''Total''' — all distinct visible editors (humans and bots).
* '''Permanent''' — distinct visible registered (permanent-account) human editors.
* '''Bot''' — distinct visible editors classified as bots.
* '''Logged-out''' — distinct visible anonymous (IP-based) human editors.
* '''Temporary''' — distinct visible [[mw:Temporary accounts|temporary-account]] human editors.
A "distinct editor" is counted once per page regardless of how many revisions they made. Editors are identified by a stable key (central user id when available, otherwise a local user id, otherwise an anonymous identity) so the same registered user is not double-counted across renames.
== Schema ==
The Data Lake table (<code>wmf_contributors.editor_counts_per_page</code>) and the per-page API expose the same columns. One row per <code>(wiki_id, page_id)</code>.
{| class="wikitable"
|-
! column !! data type !! description
|-
| <code>wiki_id</code> || string || Wiki database code (e.g. <code>enwiki</code>, <code>cawiki</code>). Part of the primary key.
|-
| <code>page_id</code> || bigint || MediaWiki page identifier within the wiki. Part of the primary key.
|-
| <code>page_is_deleted</code> || boolean || <code>true</code> when the page is deleted in MediaWiki History. <code>false</code> when page is not deleted. <code>null</code> when no deletion information is available.
|-
| <code>editor_total_count</code> || int || Distinct visible editors on this page (humans and bots), excluding cross-wiki editors.
|-
| <code>editor_permanent_count</code> || int || Distinct visible permanent (registered) human editors, excluding cross-wiki editors.
|-
| <code>editor_bot_count</code> || int || Distinct visible bot editors, excluding cross-wiki editors.
|-
| <code>editor_logged_out_count</code> || int || Distinct visible anonymous (IP-based) human editors, excluding cross-wiki editors.
|-
| <code>editor_temporary_count</code> || int || Distinct visible temporary-account human editors, excluding cross-wiki editors.
|-
| <code>loaded_at</code> || timestamp || Load watermark — when this row was written by the pipeline (the pipeline run's <code>data_interval_end</code> on incremental runs, current UTC on a full refresh). '''Not''' the underlying MediaWiki History update time.
|}
== Access ==
* '''Attribution API''': The [[mw:Attribution_API|Attribution API]] is the preferred access method for MediaWiki clients, allowing lookups by <code>wiki_id</code> and <code>page_id</code>.
* '''Data Lake (Iceberg):''' WMF staff can also use the <code>wmf_contributors.editor_counts_per_page</code> table in dbt models, Jupyter notebooks and Superset dashboards. Also queryable directly from [[Data Platform/Systems/Presto|Presto]] / [[Data Platform/Systems/Spark|Spark]] for ad-hoc analysis. See examples below.
For other use cases, such as accessing this data from within a MediaWiki extension or exposing it through a different API, please contact the MediaWiki Interfaces and/or Data Engineering teams.
== Examples ==
=== Attribution API ===
See more usage in [[mw:Attribution_API]] documentation. This API is in development and will incorporate editor counts soon. Learn more in the [https://diff.wikimedia.org/2026/05/18/a-better-way-to-give-credit-introducing-the-wikimedia-attribution-framework-and-api/ diff post].
Example API call with curl:
<syntaxhighlight lang="bash">
curl 'https://en.wikipedia.org/w/rest.php/attribution/v0-beta/pages/Earth/signals?expand=trust_and_relevance' | jq
</syntaxhighlight>
The output looks like the following as of beta v0. We are interested in the <code>trust_and_relevance.contributor_counts</code>. This will be updated to include the unique editor counts by permanent, bot, temp, and anonymous accounts.
<syntaxhighlight lang="bash">
{
"essential": {
"link": "https://en.wikipedia.org/w/index.php?title=Earth&wprov=afsw1",
"default_brand_marks": [
{
"name": "Default logo",
"url": "https://en.wikipedia.org/static/images/project-logos/enwiki-25.png",
"type": "logo"
}...
],
"source_wiki": {
"site_name": "English Wikipedia",
"project_family": "wikipedia",
"site_id": "enwiki",
"site_language": "en",
"page_language": "en"
},
"title": "Earth",
"license": {
"title": "CC BY-SA 4.0",
"url": "https://creativecommons.org/licenses/by-sa/4.0/deed.en"
}
},
"trust_and_relevance": {
"last_updated": "2026-07-02T17:36:24Z",
"contributor_counts": null,
"page_views": 244510,
"reference_count": 310,
"trending": {
"top": {
"read": false,
"edited": false,
"read_and_edited": false
},
"relative": {
"read": false,
"edited": false,
"read_and_edited": false
}
}
}
}
</syntaxhighlight>
TBD: API response will be updated after Attribution API incorporates the editor counts.
=== dbt models ===
Sample dbt model that lists all pages with more than 100 unique editors. The editor counts table is accessed by <code>ref('editor_counts_per_page')</code>.
<syntaxhighlight lang="sql">
{{ config(materialized='table') }}
SELECT
wiki_id,
page_id,
editor_total_count,
editor_permanent_count,
editor_bot_count,
editor_logged_out_count,
editor_temporary_count
FROM {{ ref('editor_counts_per_page') }}
WHERE wiki_id = 'enwiki'
AND editor_total_count > 100
</syntaxhighlight>
=== SQL ===
We can use [[Data_Platform/Systems/Spark|PySpark/Spark]] or [[Data_Platform/Systems/Presto|Presto]] from the terminal in a stat machine; execute python or scala code in stat machines; run SQL directly in [[Data_Platform/Systems/Superset|Superset]]; or code in [[Data_Platform/Systems/Jupyter|Jupyter Notebooks]] to run SQL or equivalent code to access this dataset.
==== Counts for a single page ====
<syntaxhighlight lang="sql">
SELECT
editor_total_count,
editor_permanent_count,
editor_bot_count,
editor_logged_out_count,
editor_temporary_count
FROM wmf_contributors.editor_counts_per_page
WHERE wiki_id = 'cawiki'
AND page_id = 148945;
</syntaxhighlight>
==== Top 20 pages on a wiki by distinct editors ====
<syntaxhighlight lang="sql">
SELECT
page_id,
editor_total_count
FROM wmf_contributors.editor_counts_per_page
WHERE wiki_id = 'enwiki'
ORDER BY editor_total_count DESC
LIMIT 20;
</syntaxhighlight>
== Details ==
* '''Visible revisions only.''' Counts include only editors with at least one publicly visible (non-suppressed, non-deleted) revision. A visibility change on an old revision can therefore change a page's counts.
* '''Cross-wiki editors are excluded''' from all counts, until MediaWiki History exposes reliable user-status for them ([[phab:T428018]]).
* '''<code>loaded_at</code> is a load timestamp, not a data-freshness timestamp.''' It marks when the pipeline wrote the row, not when the underlying edit happened or when MediaWiki History last changed. Data freshness can be determined from when the latest airflow job ran.
* '''New-wiki completeness gap.''' A wiki created mid-month can miss events until the next monthly namespace snapshot.
* '''~1 day producer latency.''' Data of a day is collected and processed at the start of the next day. So we get updated data of day <code>D</code> at the start of day <code>D+1</code>.
* '''~2-3 days latency on first of month.''' The editor counts pipeline depends on incremental MWH, which in turn depends on the monthly MWH. The monthly MWH take 2-3 days to land. The 1st of the month of incremental MWH waits on this load before loading the data for the 1st of the month. Hence editor counts pipeline also waits ~2-3 days, after which the data from 1st of the month is loaded, followed by subsequent days.
* '''Editor is bot.''' An editor is considered a bot if the editor belongs to a user group bot (bot by group) or has the term "bot" in the name (bot by name).
* '''Bot as of event-time.''' We use <code>event_user_is_bot_by_historical</code> (bot status as of event time), as current bot status is not available in incremental MWH. This means if someone was deemed bot later on (or vice versa), we won't know that until that user makes a new change in that page. If we receive an update for that user, we update the bot field. We are able to take on the latest value of bot-ness (if available). More details here: [[phab:T426316#11979835]].
* <code>page_is_deleted</code> is not comprehensive and may contain NULL values. MWH could not identify the status of those pages, hence they are NULL.
= Technical documentation =
The dataset is produced by a chain of three dbt models and one Airflow DAG, then loaded into Cassandra for per-page serving. A Data Gateway API acts as an interface for the Cassandra table to be used for serving into applications.
<pre>
incremental MediaWiki History (wmf_mediawiki.mediawiki_history_incremental_v1)
│
▼
stg_mwh__revision_editor (view) one row per visible revision, with editor identity/type
│
▼
int_editors_per_page (Iceberg) one row per (wiki_id, page_id, editor_key)
│
▼
editor_counts_per_page (Iceberg) one row per (wiki_id, page_id) with the count columns
│
▼ (post-hook)
Cassandra linked_artifacts.editor_counts_per_page ──► Data Gateway API
</pre>The original design for this pipeline can be found in a [https://docs.google.com/document/d/1tTRH3lGaHWFJIgdTx4W4dsV7b42ejF2gnpXG001Qmj0/edit?tab=t.if3fpl2cm1pp publicly-viewable Google document], kept for historical purposes.
== Source: incremental MediaWiki History ==
The chain reads the incremental MediaWiki History table <code>wmf_mediawiki.mediawiki_history_incremental_v1</code> rather than the monthly <code>wmf.mediawiki_history</code> snapshot. This gives '''daily freshness''' from a single table. Every touched row carries a <code>row_update_dt</code> watermark — re-stamped on inserts and on revert / visibility / page-deletion back-patches — so a single column captures every change the model cares about, including a visibility flip on an old revision.
== dbt Models ==
; <code>wmf_contributors.stg_mwh__revision_editor</code> (view)
: Selects visible revisions from incremental MWH and derives each revision's editor identity (<code>editor_key</code>) and type flags (anonymous / temporary / permanent / bot / cross-wiki / visible). Incremental runs filter on a closed-right <code>row_update_dt</code> window <code>(data_interval_start, data_interval_end]</code>, with a 1st-of-month <code>−1s</code> reach-back to fold in the monthly reconcile. See [[phab:T428503#12003010]].
; <code>wmf_contributors.int_editors_per_page</code> (Iceberg incremental table)
: Aggregates staging to one row per <code>(wiki_id, page_id, editor_key)</code>. Lists all unique editors of a page with the latest-revision identity/type flags and a page-level <code>editor_is_visible</code> / <code>page_is_deleted</code>. Cross-wiki editors are retained here.
; <code>wmf_contributors.editor_counts_per_page</code> (Iceberg incremental table)
: Computes the distinct editor counts over visible, non-cross-wiki editors, one row per <code>(wiki_id, page_id)</code>. Incremental runs recount only pages touched in the current <code>int_editors_per_page</code> load, then <code>MERGE</code> into Iceberg. A post-hook loads the run's rows to Cassandra.
== Incremental design and read window ==
The watermark is the Airflow <code>logical_date</code> interval itself — there is no stored stateful watermark, so retries, <code>catchup</code>, and backfills are reproducible because the read set is a pure function of the interval.
* '''Normal day:''' <code>row_update_dt ∈ (data_interval_start, data_interval_end]</code> → reads the run's own day (fresh).
* '''1st of month:''' the lower bound reaches back one second (<code>>= data_interval_start − 1s</code>) to also capture the monthly reconcile, which is stamped at the last second of the prior month.
* '''Touched-key re-aggregation:''' the model finds <code>(wiki_id, page_id, editor_key)</code> touched in the window, then re-aggregates '''all''' revisions for those keys (not an append), so a changed revision correctly re-derives the page's counts.
== Orchestration ==
One Airflow DAG, [[:gitLab:repos/data-engineering/airflow-dags/-/blob/main/main/dags/wmf_contributors/editor_counts_per_page_daily_dag.py|editor_counts_per_page_daily_dag.py]]:
* '''Schedule:''' <code>@daily</code>, <code>max_active_runs=1</code> (the incremental-merge model must run one at a time).
* '''Dependency:''' an <code>ExternalTaskSensor</code> on the incremental MWH daily writer (dataset <code>iceberg_wmf_mediawiki_mediawiki_history_incremental_v1</code>) at the same logical date. The 1st-of-month run is transitively gated on the prior month's reconcile through that writer, so no separate monthly job and no manual full refresh are needed.
* '''SLA:''' 4 days — the 1st-of-month run is full-refresh-sized and can wait ~3 days on the monthly reconcile; with <code>max_active_runs=1</code> the next runs queue behind it. The job lives in its own DAG (not the shared <code>dbt_daily</code>) so this wait does not block other teams.
* '''Load step:''' on success the dbt post-hook writes the run's rows to Cassandra (<code>aqs.linked_artifacts.editor_counts_per_page</code>). The Cassandra data is accessible through a Data Gateway endpoint. See usage below.
* A manual <code>--full-refresh</code> rebuilds the whole table and re-pushes all rows.
== Usage ==
See more usage examples in [[Data_Platform/Data_Lake/Edits/Editor_counts_per_page#Examples]].
=== Data Gateway ===
[[mw:Data Gateway|Data Gateway]] is a wrapper on the Cassandra table and allows single-page lookups by <code>(wiki_id, page_id)</code>, backed by [[Cassandra|Cassandra]]. See the [[mw:Data Gateway#Editor Counts|Data Gateway documentation]] for the endpoint contract. This is only to be used by internal APIs and not for direct access by external applications or APIs.
<syntaxhighlight lang="shell-session">
$ curl https://data-gateway.discovery.wmnet:30443/public/linked_artifacts/editor_counts_per_page/cawiki/148945 | jq
{
"rows": [
{
"wiki_id": "cawiki",
"page_id": 148945,
"editor_bot_count": 0,
"editor_logged_out_count": 0,
"editor_permanent_count": 2,
"editor_temporary_count": 0,
"editor_total_count": 2,
"loaded_at": "2026-06-25 23:29:52.000Z",
"page_is_deleted": false
}
]
}
</syntaxhighlight>
== Operational notes ==
* '''1st-of-month run is full-refresh-sized''' — it re-aggregates the entire re-inserted snapshot and re-pushes the whole table to Cassandra.
* '''Computes all touched pages''' — <code>row_update_dt</code> is re-stamped on any field change with back-patches. All such pages get re-aggregated irrespective of what changed.
== Changes and known problems ==
{| class="wikitable"
|-
! Date from !! Task !! Details
|-
| 2026-06-25
| {{PhabT|T426316}}
| Initial data set.
|}
[[Category:Data platform]]
[[Category:Editors data]]
[[Category:Prep Pantry Projects]]
mvpzzv8oxep86m4niwrqm30igzlohkm
2471894
2471889
2026-10-21T21:36:24Z
AKhatun (WMF)
50461
/* Examples */ Update attribution API response
2471894
wikitext
text/x-wiki
{{TOC|align=right}}
The <code>wmf_contributors.editor_counts_per_page</code> dataset holds distinct '''visible''' editor counts for every <code>(wiki_id, page_id)</code> across all Wikimedia wikis — broken down into total, permanent (registered human), bot, logged-out (anonymous), and temporary-account editors. It is built from the [[Data Platform/Data Lake/Edits/Mediawiki_history_incremental_v1|Incremental MediaWiki History]] table by a daily pipeline, stored as an Iceberg table in the Data Lake, and served per page from a Cassandra-backed [[mw:Data Gateway|Data Gateway]] endpoint.
* Ticket: [[phab:T426316|T426316]]
* [https://docs.google.com/document/d/1tTRH3lGaHWFJIgdTx4W4dsV7b42ejF2gnpXG001Qmj0/edit?tab=t.if3fpl2cm1pp Design Document]
* dbt selector: <code>+editor_counts_per_page</code> ([[gitLab:repos/data-engineering/dbt-jobs/-/tree/main/models/data-engineering|dbt-repo]])
* Airflow DAG: [[:gitLab:repos/data-engineering/airflow-dags/-/blob/main/main/dags/wmf_contributors/editor_counts_per_page_daily_dag.py|editor_counts_per_page_daily_dag.py]].
= User documentation =
For each page on each wiki, the dataset stores the number of '''distinct editors''' who have made at least one publicly visible revision to that page, split by editor type:
* '''Total''' — all distinct visible editors (humans and bots).
* '''Permanent''' — distinct visible registered (permanent-account) human editors.
* '''Bot''' — distinct visible editors classified as bots.
* '''Logged-out''' — distinct visible anonymous (IP-based) human editors.
* '''Temporary''' — distinct visible [[mw:Temporary accounts|temporary-account]] human editors.
A "distinct editor" is counted once per page regardless of how many revisions they made. Editors are identified by a stable key (central user id when available, otherwise a local user id, otherwise an anonymous identity) so the same registered user is not double-counted across renames.
== Schema ==
The Data Lake table (<code>wmf_contributors.editor_counts_per_page</code>) and the per-page API expose the same columns. One row per <code>(wiki_id, page_id)</code>.
{| class="wikitable"
|-
! column !! data type !! description
|-
| <code>wiki_id</code> || string || Wiki database code (e.g. <code>enwiki</code>, <code>cawiki</code>). Part of the primary key.
|-
| <code>page_id</code> || bigint || MediaWiki page identifier within the wiki. Part of the primary key.
|-
| <code>page_is_deleted</code> || boolean || <code>true</code> when the page is deleted in MediaWiki History. <code>false</code> when page is not deleted. <code>null</code> when no deletion information is available.
|-
| <code>editor_total_count</code> || int || Distinct visible editors on this page (humans and bots), excluding cross-wiki editors.
|-
| <code>editor_permanent_count</code> || int || Distinct visible permanent (registered) human editors, excluding cross-wiki editors.
|-
| <code>editor_bot_count</code> || int || Distinct visible bot editors, excluding cross-wiki editors.
|-
| <code>editor_logged_out_count</code> || int || Distinct visible anonymous (IP-based) human editors, excluding cross-wiki editors.
|-
| <code>editor_temporary_count</code> || int || Distinct visible temporary-account human editors, excluding cross-wiki editors.
|-
| <code>loaded_at</code> || timestamp || Load watermark — when this row was written by the pipeline (the pipeline run's <code>data_interval_end</code> on incremental runs, current UTC on a full refresh). '''Not''' the underlying MediaWiki History update time.
|}
== Access ==
* '''Attribution API''': The [[mw:Attribution_API|Attribution API]] is the preferred access method for MediaWiki clients, allowing lookups by <code>wiki_id</code> and <code>page_id</code>.
* '''Data Lake (Iceberg):''' WMF staff can also use the <code>wmf_contributors.editor_counts_per_page</code> table in dbt models, Jupyter notebooks and Superset dashboards. Also queryable directly from [[Data Platform/Systems/Presto|Presto]] / [[Data Platform/Systems/Spark|Spark]] for ad-hoc analysis. See examples below.
For other use cases, such as accessing this data from within a MediaWiki extension or exposing it through a different API, please contact the MediaWiki Interfaces and/or Data Engineering teams.
== Examples ==
=== Attribution API ===
See usage in [[mw:Attribution_API]] documentation. Learn more in the [https://diff.wikimedia.org/2026/05/18/a-better-way-to-give-credit-introducing-the-wikimedia-attribution-framework-and-api/ diff post].
Example API call with curl:
<syntaxhighlight lang="bash">
curl 'https://en.wikipedia.org/w/rest.php/attribution/v0-beta/pages/Earth/signals?expand=trust_and_relevance' | jq
</syntaxhighlight>
We are interested in the <code>trust_and_relevance.contributor_counts</code>.
<syntaxhighlight lang="bash">
{
"essential": {
"link": "https://en.wikipedia.org/w/index.php?title=Earth&wprov=afsw1",
"default_brand_marks": [
{
"name": "Default logo",
"url": "https://en.wikipedia.org/static/images/project-logos/enwiki-25.png",
"type": "logo"
}...
],
"source_wiki": {
"site_name": "English Wikipedia",
"project_family": "wikipedia",
"site_id": "enwiki",
"site_language": "en",
"page_language": "en"
},
"title": "Earth",
"license": {
"title": "CC BY-SA 4.0",
"url": "https://creativecommons.org/licenses/by-sa/4.0/deed.en"
}
},
"trust_and_relevance": {
"last_updated": "2026-10-19T09:27:36Z",
"contributor_counts": {
"total_unique": 5543,
"logged_in_users": 3287,
"unregistered_users": 2139,
"known_bots": 114
},
"page_views": 250249,
"reference_count": 316,
"trending": {
"top": {
"read": false,
"edited": false,
"read_and_edited": false
},
"relative": false
}
}
}
</syntaxhighlight>
=== dbt models ===
Sample dbt model that lists all pages with more than 100 unique editors. The editor counts table is accessed by <code>ref('editor_counts_per_page')</code>.
<syntaxhighlight lang="sql">
{{ config(materialized='table') }}
SELECT
wiki_id,
page_id,
editor_total_count,
editor_permanent_count,
editor_bot_count,
editor_logged_out_count,
editor_temporary_count
FROM {{ ref('editor_counts_per_page') }}
WHERE wiki_id = 'enwiki'
AND editor_total_count > 100
</syntaxhighlight>
=== SQL ===
We can use [[Data_Platform/Systems/Spark|PySpark/Spark]] or [[Data_Platform/Systems/Presto|Presto]] from the terminal in a stat machine; execute python or scala code in stat machines; run SQL directly in [[Data_Platform/Systems/Superset|Superset]]; or code in [[Data_Platform/Systems/Jupyter|Jupyter Notebooks]] to run SQL or equivalent code to access this dataset.
==== Counts for a single page ====
<syntaxhighlight lang="sql">
SELECT
editor_total_count,
editor_permanent_count,
editor_bot_count,
editor_logged_out_count,
editor_temporary_count
FROM wmf_contributors.editor_counts_per_page
WHERE wiki_id = 'cawiki'
AND page_id = 148945;
</syntaxhighlight>
==== Top 20 pages on a wiki by distinct editors ====
<syntaxhighlight lang="sql">
SELECT
page_id,
editor_total_count
FROM wmf_contributors.editor_counts_per_page
WHERE wiki_id = 'enwiki'
ORDER BY editor_total_count DESC
LIMIT 20;
</syntaxhighlight>
== Details ==
* '''Visible revisions only.''' Counts include only editors with at least one publicly visible (non-suppressed, non-deleted) revision. A visibility change on an old revision can therefore change a page's counts.
* '''Cross-wiki editors are excluded''' from all counts, until MediaWiki History exposes reliable user-status for them ([[phab:T428018]]).
* '''<code>loaded_at</code> is a load timestamp, not a data-freshness timestamp.''' It marks when the pipeline wrote the row, not when the underlying edit happened or when MediaWiki History last changed. Data freshness can be determined from when the latest airflow job ran.
* '''New-wiki completeness gap.''' A wiki created mid-month can miss events until the next monthly namespace snapshot.
* '''~1 day producer latency.''' Data of a day is collected and processed at the start of the next day. So we get updated data of day <code>D</code> at the start of day <code>D+1</code>.
* '''~2-3 days latency on first of month.''' The editor counts pipeline depends on incremental MWH, which in turn depends on the monthly MWH. The monthly MWH take 2-3 days to land. The 1st of the month of incremental MWH waits on this load before loading the data for the 1st of the month. Hence editor counts pipeline also waits ~2-3 days, after which the data from 1st of the month is loaded, followed by subsequent days.
* '''Editor is bot.''' An editor is considered a bot if the editor belongs to a user group bot (bot by group) or has the term "bot" in the name (bot by name).
* '''Bot as of event-time.''' We use <code>event_user_is_bot_by_historical</code> (bot status as of event time), as current bot status is not available in incremental MWH. This means if someone was deemed bot later on (or vice versa), we won't know that until that user makes a new change in that page. If we receive an update for that user, we update the bot field. We are able to take on the latest value of bot-ness (if available). More details here: [[phab:T426316#11979835]].
* <code>page_is_deleted</code> is not comprehensive and may contain NULL values. MWH could not identify the status of those pages, hence they are NULL.
= Technical documentation =
The dataset is produced by a chain of three dbt models and one Airflow DAG, then loaded into Cassandra for per-page serving. A Data Gateway API acts as an interface for the Cassandra table to be used for serving into applications.
<pre>
incremental MediaWiki History (wmf_mediawiki.mediawiki_history_incremental_v1)
│
▼
stg_mwh__revision_editor (view) one row per visible revision, with editor identity/type
│
▼
int_editors_per_page (Iceberg) one row per (wiki_id, page_id, editor_key)
│
▼
editor_counts_per_page (Iceberg) one row per (wiki_id, page_id) with the count columns
│
▼ (post-hook)
Cassandra linked_artifacts.editor_counts_per_page ──► Data Gateway API
</pre>The original design for this pipeline can be found in a [https://docs.google.com/document/d/1tTRH3lGaHWFJIgdTx4W4dsV7b42ejF2gnpXG001Qmj0/edit?tab=t.if3fpl2cm1pp publicly-viewable Google document], kept for historical purposes.
== Source: incremental MediaWiki History ==
The chain reads the incremental MediaWiki History table <code>wmf_mediawiki.mediawiki_history_incremental_v1</code> rather than the monthly <code>wmf.mediawiki_history</code> snapshot. This gives '''daily freshness''' from a single table. Every touched row carries a <code>row_update_dt</code> watermark — re-stamped on inserts and on revert / visibility / page-deletion back-patches — so a single column captures every change the model cares about, including a visibility flip on an old revision.
== dbt Models ==
; <code>wmf_contributors.stg_mwh__revision_editor</code> (view)
: Selects visible revisions from incremental MWH and derives each revision's editor identity (<code>editor_key</code>) and type flags (anonymous / temporary / permanent / bot / cross-wiki / visible). Incremental runs filter on a closed-right <code>row_update_dt</code> window <code>(data_interval_start, data_interval_end]</code>, with a 1st-of-month <code>−1s</code> reach-back to fold in the monthly reconcile. See [[phab:T428503#12003010]].
; <code>wmf_contributors.int_editors_per_page</code> (Iceberg incremental table)
: Aggregates staging to one row per <code>(wiki_id, page_id, editor_key)</code>. Lists all unique editors of a page with the latest-revision identity/type flags and a page-level <code>editor_is_visible</code> / <code>page_is_deleted</code>. Cross-wiki editors are retained here.
; <code>wmf_contributors.editor_counts_per_page</code> (Iceberg incremental table)
: Computes the distinct editor counts over visible, non-cross-wiki editors, one row per <code>(wiki_id, page_id)</code>. Incremental runs recount only pages touched in the current <code>int_editors_per_page</code> load, then <code>MERGE</code> into Iceberg. A post-hook loads the run's rows to Cassandra.
== Incremental design and read window ==
The watermark is the Airflow <code>logical_date</code> interval itself — there is no stored stateful watermark, so retries, <code>catchup</code>, and backfills are reproducible because the read set is a pure function of the interval.
* '''Normal day:''' <code>row_update_dt ∈ (data_interval_start, data_interval_end]</code> → reads the run's own day (fresh).
* '''1st of month:''' the lower bound reaches back one second (<code>>= data_interval_start − 1s</code>) to also capture the monthly reconcile, which is stamped at the last second of the prior month.
* '''Touched-key re-aggregation:''' the model finds <code>(wiki_id, page_id, editor_key)</code> touched in the window, then re-aggregates '''all''' revisions for those keys (not an append), so a changed revision correctly re-derives the page's counts.
== Orchestration ==
One Airflow DAG, [[:gitLab:repos/data-engineering/airflow-dags/-/blob/main/main/dags/wmf_contributors/editor_counts_per_page_daily_dag.py|editor_counts_per_page_daily_dag.py]]:
* '''Schedule:''' <code>@daily</code>, <code>max_active_runs=1</code> (the incremental-merge model must run one at a time).
* '''Dependency:''' an <code>ExternalTaskSensor</code> on the incremental MWH daily writer (dataset <code>iceberg_wmf_mediawiki_mediawiki_history_incremental_v1</code>) at the same logical date. The 1st-of-month run is transitively gated on the prior month's reconcile through that writer, so no separate monthly job and no manual full refresh are needed.
* '''SLA:''' 4 days — the 1st-of-month run is full-refresh-sized and can wait ~3 days on the monthly reconcile; with <code>max_active_runs=1</code> the next runs queue behind it. The job lives in its own DAG (not the shared <code>dbt_daily</code>) so this wait does not block other teams.
* '''Load step:''' on success the dbt post-hook writes the run's rows to Cassandra (<code>aqs.linked_artifacts.editor_counts_per_page</code>). The Cassandra data is accessible through a Data Gateway endpoint. See usage below.
* A manual <code>--full-refresh</code> rebuilds the whole table and re-pushes all rows.
== Usage ==
See more usage examples in [[Data_Platform/Data_Lake/Edits/Editor_counts_per_page#Examples]].
=== Data Gateway ===
[[mw:Data Gateway|Data Gateway]] is a wrapper on the Cassandra table and allows single-page lookups by <code>(wiki_id, page_id)</code>, backed by [[Cassandra|Cassandra]]. See the [[mw:Data Gateway#Editor Counts|Data Gateway documentation]] for the endpoint contract. This is only to be used by internal APIs and not for direct access by external applications or APIs.
<syntaxhighlight lang="shell-session">
$ curl https://data-gateway.discovery.wmnet:30443/public/linked_artifacts/editor_counts_per_page/cawiki/148945 | jq
{
"rows": [
{
"wiki_id": "cawiki",
"page_id": 148945,
"editor_bot_count": 0,
"editor_logged_out_count": 0,
"editor_permanent_count": 2,
"editor_temporary_count": 0,
"editor_total_count": 2,
"loaded_at": "2026-06-25 23:29:52.000Z",
"page_is_deleted": false
}
]
}
</syntaxhighlight>
== Operational notes ==
* '''1st-of-month run is full-refresh-sized''' — it re-aggregates the entire re-inserted snapshot and re-pushes the whole table to Cassandra.
* '''Computes all touched pages''' — <code>row_update_dt</code> is re-stamped on any field change with back-patches. All such pages get re-aggregated irrespective of what changed.
== Changes and known problems ==
{| class="wikitable"
|-
! Date from !! Task !! Details
|-
| 2026-06-25
| {{PhabT|T426316}}
| Initial data set.
|}
[[Category:Data platform]]
[[Category:Editors data]]
[[Category:Prep Pantry Projects]]
oc29nj3g2wi05caw4jyphub87hypfns
Talk:Wikidata Query Service/Migration/Rewrite of Label Service
1
460409
2471923
2463773
2026-10-22T01:27:41Z
Toolregistry4Memory
61127
/* AUTO LANGUAGE not a feature of QLever? */ new section
2471923
wikitext
text/x-wiki
== incorrect and inefficient replacement for label service ==
The replacement for the WDQS label service is incorrect and has serious computational problems for query variables that can be unbound. This is a well-known problem with a well-known solution. To see the problem consider the two following queries; https://qlever.dev/wikidata/1U6g3X with over 92 million solutions and https://qlever.dev/wikidata/8jVfEw with one solution. (QLever is decently fast on the first query, but it is possible to create unexpectedly slow queries with the incorrect replacement.) [[User:Peter F. Patel-Schneider|Peter F. Patel-Schneider]] ([[User talk:Peter F. Patel-Schneider|talk]]) 11:52, 3 July 2026 (UTC)
:@[[User:Peter F. Patel-Schneider|Peter F. Patel-Schneider]] I have updated the wikibase:label text to [[Blazegraph Migration: Rewrite of Label and Utility Services and Functions#Label Service Results for an Unbound Variable|describe the effects of requesting a label for an unbound variable]]. [[User:AWesterinen-WMF|AWesterinen-WMF]] ([[User talk:AWesterinen-WMF|talk]]) 02:54, 9 July 2026 (UTC)
== burying the lede ==
Given that the label service is by far the most used WDQS extension to SPARQL 1.1, I would have thought that it deserves its own page and that it should be mentioned first in the enclosing document. Instead it is the last section of a page that also includes a bunch of utility extensions. [[User:Peter F. Patel-Schneider|Peter F. Patel-Schneider]] ([[User talk:Peter F. Patel-Schneider|talk]]) 11:56, 3 July 2026 (UTC)
:@[[User:Peter F. Patel-Schneider|Peter F. Patel-Schneider]] That is good feedback. I tried to write the page using an alphabetical approach, but an "importance" one is better. The page is now updated to put the wikibase:label discussion first. [[User:AWesterinen-WMF|AWesterinen-WMF]] ([[User talk:AWesterinen-WMF|talk]]) 01:36, 7 July 2026 (UTC)
== non-replacement of label service ? ==
The platform newsletter [https://www.wikidata.org/w/index.php?title=Wikidata:Wikidata_Platform_team/Newsletter&oldid=2513400181] speaks about this page working up "processing logic for an upcoming tool designed to automatically convert Blazegraph queries into standard SPARQL for the QLever engine".
Given that the label service is probably used by upwards of 98% of existing queries (or, at least, of those queries written by and for humans), it would be useful to know more about what is currently envisioned.
* Am I right in thinking that a ''fully'' automatic translation service, even for query-links that are supposed to auto-run is unlikely -- or is this the intention, that an old link will automatically lead to an updated query?
* I imagine that, at least for queries other than those going to the UI via auto-run links, the most likely option is a button similar to the diamond button on the UI, that would re-write the query, perhaps commenting out superseded lines with a double-hash '## ', preceded by a comment note that the lines had been changed; plus also a comment note where new lines had been added.
* At the moment users writing new queries or re-editing old ones now just have to type <code>S-E-R control+space</code>, and auto-complete will add everything they need to handle labels descriptions and aliases, that they never then need to touch again.
:Are they now going to be expected to add lines and lines of boilerplate code & then have to go through it and make the right boilerplate adjustments every time they change variable names of what they want output?
:Is ''any'' kind of macro going to be offered to replace the current service?
If no macro at all is offered, would the team expect that to go down as badly with the community as would be my expectation?
(Note: English understatement present in the use of the word "badly"). -- [[User:Jheald|Jheald]] ([[User talk:Jheald|talk]]) 12:16, 6 July 2026 (UTC)
:Some further thoughts: I think that partly underlying the above is my uncertainty as to how much query rewriting can be done behind the scenes, on-the-fly, hidden from the user; and how much can not be (or should not be).
:On the one hand, it's worth remembering that many users who run (written by humans for humans) queries will neither read nor write SPARQL; if we are lucky at most they can be enticed to click a link then press the big blue button. For such users even an error message when they try to run the query saying "non-standard SPARQL needs to be rewritten; press the magic diamond button to proceed" may be quite a big jump.
:Also, I should maybe remember that once query planners and optimisers have got involved, the sequence of what is actually executed may be quite different to what the user may have been thinking when they wrote the query. (With some optimisations being quite radical, eg QLever's rewrites of queries with tests of <code>geof:distance</code>). So quite substantial behind-the-scenes rewriting may be entirely viable.
:On the other hand, what is executed should have at least some relation to what is in the edit window. Especially when error reports come back. But taking this further, perhaps it is only the initial parser-check that needs to be particularly closely coupled to what is on screen (eg for it to be able to move the cursor to the error). But perhaps so long as what is written can get past the parser (and perhaps so long as there is an ''option'' for the user to see the transformed query text), then perhaps there ''is'' leeway for quite a degree of behind-the-scenes transformation before passing it to the engine?
:This is all circling around the fact that I don't know what I should be expecting to see in the query edit window after the transition to QLever. If I ought to expect to see lines and lines of SPARQL dealing with labels and descriptions, explicitly as part of the query, that would be bad (see note on "bad" above).
:If there were a macro that would handle all of it for me, that I could access with just a few key-presses and auto-complete, and that wouldn't fill my query with clutter, that would be good. If there was a button to show me how the macro was being expanded into standard SPARQL that could run anywhere then fine, but I probably wouldn't press it very often.
:Already, with WDQS as it is, whenever because I'm using SAMPLE() or GROUP_CONCAT() a label can't just be handled magically by the label service, and instead I need to add it in by hand using <code>rdfs:label</code> I resent it. I resent the extra time it is taking. I resent having to add all the words, and the filter, and having to get all the brackets in the right place. If I have to add another one to deal with a language fall-back, I resent that too. If I was going to have to do this every single time I wrote a query, times every language I wanted to test, times every variable I want in the output, times every time I change a variable name and have to rewrite it all ... well, you do the maths, and consider how my resentment would be multiplied. And that's for me as a native English-language speaker! Imagine if I was specifying a full set of language fall-backs routinely on every single query, with another line of this clutter for every single language and every single variable. Even I will often specify long line of language fall-backs, if I'm sanity-checking a lot of results, and I know that otherwise the alternative is opening the page, then often a wiki page, and then a trip to Google Translate. So yes, even I will sometimes use very long lists of language fall-backs -- and I get them all just with <code>S-E-R control+space</code>.
:The other thing is the aesthetics. Clutter, even trivial clutter, makes queries longer to read and harder to focus on the important bits of. This is important, not just for our own queries, but because an important part of WDQS is seeing other people's queries, being able to rapidly grasp how they work, and then constantly adapt or re-adapt the query, or lift a motif to use in another context. SPARQL is good for this because so much can be specified in so few words of query text, with minimal clutter, making examples easier to learn from.
:The label service is brilliant because it reduces all of the label and description handling to a single line, so that what is on screen is the actual meat of the query.
:The user-efficiency of the label service is one of WDQS's biggest usability improvements over raw SPARQL. Losing it would not be good. Really not good. -- [[User:Jheald|Jheald]] ([[User talk:Jheald|talk]]) 15:31, 6 July 2026 (UTC)
::Thank you, @[[User:Jheald|Jheald]], for raising this. As discussed during the [[d:Event:Blazegraph Migration Office Hours - July 2026|Blazegraph Migration Office Hour yesterday]], the current plan is to provide a tool that allows users to compare the output of an original Blazegraph query with the rewritten query running on QLever. We also clarified that there are no plans for hidden server-side rewrites, as we want the transformation process to remain visible to users.
::The team recognizes the importance of the label service experience, especially for interactive query writing, and the difference between interactive and programmatic use cases. We will continue to gather feedback from users as we develop and iterate on the migration tooling. We will also discuss the relevant aspects with the Query UI maintainers (WMDE), since WDQS and Query UI are separate services.-[[User:Udehb-WMF|Udehb-WMF]] ([[User talk:Udehb-WMF|talk]]) 13:38, 8 July 2026 (UTC)
:::{{re|Udehb-WMF}}. Hi Benedict, thanks for getting back to me on this. I hope you don't mind me coming back to it again, because it does seem to me that this issue is absolutely fundamental for community expectations.
:::Looking into it all a bit more after the call yesterday, I found [[Wikidata Query Service/Migration/label and mwapi service replacement evaluation|this page]] created in March by [[User:STrug-WMF]], and the proof-of-concept [https://gitlab.wikimedia.org/repos/wikidata-platform/wdqs/wdqs-proxy wdqs-proxy] with phabricator tracking tickets [[:phab:T414453]] and [[:phab:T418595]] that it describes.
:::This made me wonder, at the meeting yesterday (https://etherpad.wikimedia.org/p/Blazegraph_Migration_Office_Hours etherpad]) it was stated that the platform team will not put a query-rewriting proxy in front of the server. But it was also stressed that the platform team was distinct from the team (WMDE) that own the online query interface, Query-UI ?
:::So this made me wonder, even if platform team will not put a query-rewriting proxy in front of the server, is it possible that the Query-UI team may put a query-rewriting proxy behind the Query-UI ?
:::At the meeting yesterday it seemed that one team couldn't entirely speak for the other team's intentions.
:::Such a query-rewriting proxy would allow things like
:::* the label service,
:::* named subqueries, and
:::* functions like <code>isSomeValue()</code>,<br />
:::with all their immense significance for query readability and query re-writeability (and general pleasantness of using the system)<br />
:::to be continue to be used in
:::* online examples,
:::* interactive query writing / re-writing / re-re-writing sessions, and
:::* queries sent to <code>https://query.wikidata.org/embed.html#</code>
:::As [[User:STrug-WMF]] noted [[Wikidata_Query_Service/Migration/label_and_mwapi_service_replacement_evaluation#A_Generic_Solution|in March]] this achieves the desired uncoupling from any particular vendor, because "the solution is independent of any choice of backend [that] supports SPARQL 1.1".
:::By running the query text through a parser locally (as done by the <code>wdqs-proxy</code> proof-of-concept demonstrator), before the standardisation re-write is applied, this means that parse errors returned will continue to track directly with the lines and character-positions of the user text in the query window.
:::In the call [[User:GModena (WMF)]] suggested that it was important that "we don’t want to have any hidden functionality from the users", the transformation process needs to remain visible. However, as suggested in my initial stream-of-consciousness, that could be achieved in the UI quite easily by adding a button to show the translated raw SPARQL 1.1 version (then could then be run directly), similarly to how the "diamond" button in the Query UI currently can show the user a rewritten query.
:::Run-time errors (as opposed to parse-time errors, if we can hope the local parser has caught those) that come back from QLever probably anyway refer only to the query plan (after optimisation), rather than the detailed query text, so may show little effect of the re-writing stage anyone. Where there are corner cases caused by the re-writing process, those can be publicised, thanks to Andrea's ongoing work -- and in any case the actual query text being run would be available at just the click of a button.
:::The one thing I wondered about was whether the system would handle things that QLever can do, but Blazegraph couldn't -- for example some of the additional GeoSPARQL support. Would this be a problem to get the local parser to accept (based on Jena, written in Java?) vs the QLever parser (written in C++). But perhaps if the constraints on what QLever's parser expects are well-abstracted, as a grammar, then it is possible to take just this and slot it into the parser/re-writer attached to the Query UI ?
:::So {{ping|Udehb-WMF}}, do you think you could find out if there's any possibility the ''Query UI'' team may be thinking of implementing something like this ?
:::In the call, somebody said they thought WMDE was already starting to re-write online examples, to turn them (in my mind, to degenerate them) into raw SPARQL 1.1 and make them less readable. In response I think I said that I thought this would be a big step in the ''wrong'' direction, and I hoped very much it was not true -- which would be particularly true if it also turned out to be unnecessary.
:::That kind of thing is why I think it is really important to get an idea of where the platform team and the Query UI team ''together'' hope this is going, and so for users just how big are the changes they should be expecting to have to make (or not), always accepting that what is hoped for and what turns out to be deliverable may not be the same thing.
:::Is a query-rewriting proxy behind the Query-UI a live possibility ? -- [[User:Jheald|Jheald]] ([[User talk:Jheald|talk]]) 20:29, 8 July 2026 (UTC)
::::@[[User:Jheald|Jheald]] To clarify and address a small part of your comment above ... It is my work that is updating the samples. [[User:AWesterinen-WMF|AWesterinen-WMF]] ([[User talk:AWesterinen-WMF|talk]]) 03:00, 9 July 2026 (UTC)
:::::That's good. From the call I had got the impression that someone had started re-writing the wiki page [[:d:Wikidata:SPARQL query service/queries/examples]] which contains the examples linked to by the Query UI, which IMO would be both premature and unfortunate. However there appear to have been no changes to the text of that page so far.
:::::That's as distinct from your own work, making sure that queries ''can'' be performantly and automatically modified, which is essential. [[User:Jheald|Jheald]] ([[User talk:Jheald|talk]]) 23:04, 13 July 2026 (UTC)
::::::Hmm. It looks like WMDE ''do'' have it on their to-do list to update the query examples [[:phab:T421427]], and have done some testing as to how performant QLever-rewritten versions appear to be [[:phab:T430291]] (ie without Blazegraph query hints, and having to deal with QLever possibly optimising joins differently). So these tests might well after all have been what was being referred to in the call.
::::::So far the WMDE tests have just been stripping out addition of labels completely. The tests also appear to have looked only at whether the re-written queries still run, with no assessment as to impacts on readability and reusability.
::::::But I note the comment of [[User:Lucas Werkmeister (WMDE)]] (perhaps the single most prolific author and publisher of WDQS queries to date) [[:phab:T421427#11947779|on May 22]] that:
:::::::{{tq|it is my firm belief that the new system has to support the label service. There are countless queries out there using the label service – you can’t break all of those at the same time, nor can you expect everyone to rewrite their queries to a form that is far more tedious to write, more verbose, and less readable than the label service.}}
::::::-- [[User:Jheald|Jheald]] ([[User talk:Jheald|talk]]) 00:14, 14 July 2026 (UTC)
::::Hi @[[User:Jheald|Jheald]], so sorry for the delayed response and once again thank you for the feedback. The Query UI team will have access to the new endpoints this quarter, and we are in regular contact with them with regards migration readiness. We will commit to bubble up your feedback, concerns and proposals in the upcoming sync. We can’t commit to plans or roadmaps for our partner teams, but we will follow up with the community once our planning progresses. -[[User:Udehb-WMF|Udehb-WMF]] ([[User talk:Udehb-WMF|talk]]) 09:37, 15 July 2026 (UTC)
== named subqueries ==
To me named subqueries are the most important addition in WDQS to SPARQL after the label service.
As noted in the text, named subqueries can often be important for performance by allowing sub-results to be reused.
But for me, their most valuable contribution is something else the text notes: ''clarity''. As noted in the text, they avoid "Complexity, when a sub-query is copied multiple times and the query text “explodes”"
Last month, at the [https://etherpad.wikimedia.org/p/Blazegraph_Migration_Office_Hours Migration Office Hours monthly call], I raised query [[:d:Property talk:P10271/map query]] <s><code>tinyurl.com/5tj5e2vk</code></s> which I re-use different variants of a lot, and which I hope to encourage others to use to improve data specifying the UK rail network (eg locating and adding missing junctions).
I don't believe I could have written the query without named subqueries. It would have been spaghetti code.
In a complex query, as the text says, they can help "cleanly define the query", separating the different stages of the flow of the query, making it easier to understand for both humans and the optimiser alike.
Elsewhere, when writing about query hints, the text notes that on QLever almost the only way to get the engine to execute a query in a particular way will be "to use subqueries to force early evaluation of a portion of a query".
In general inline subqueries make a query more verbose, harder to read, and more complex to understand. In contrast, named subqueries separate things out, and by making the query more modular makes it easier to understand.
That makes the queries easier to write, and - critically - it also makes the queries easier for ''others'' to follow and dissect, understand and adapt.
This spread of techniques and query fragments is a vital part of the wikidata knowledge and user ecosystem -- many (most?) queries of any difficulty are not scratch-written, but are adapted from existing queries, and then in turn yet further adapted and re-adapted, either by the same user, or by yet others building on elements of the work. Clarity and transparency is not just a "nice to have", it is a core enabler of helping the community do its work. Wikidata's part of helping "every single human being ... freely share in the sum of all knowledge" is not just about sharing data; it is also about sharing know-how and techniques and queries.
Back in October 2021, on Phabricator [https://phabricator.wikimedia.org/T291903#7396030], QLever's Hannah Best wrote
:{{tq|QLever already supports something like named subqueries... We don't yet support the "WITH" syntax, but that will be easy to add}}.
Would it be ''so'' hard for the team to file a feature request to take her up on that offer, using the Blazegraph syntax?
An argument may be made that WMF should not make such a request, as it would not be helping WDQS towards "standard SPARQL, reduc[ing] vendor lock-in, improv[ing] interoperability with other triplestores, and ensur[ing] our codebase remains robust" ([https://www.wikidata.org/w/index.php?title=Wikidata:Wikidata_Platform_team/Newsletter&oldid=2513400181]).
I do not believe this carries much water, for several reasons:
(1) While there may be some users for whom portability of queries between different engines is very important, I believe that Peter is correct [[:d:Wikidata_talk:SPARQL_query_service/WDQS_backend_update#SPARQL_1.1_and_GeoSPARQL_coverage|in his expectation]] that many users will write to platform, and make full use of whatever QLever-specific optimisations and non-standard extensions they find. Against that background, it's hard to see why QLever providing one more non-standard extension would be that bad.
(2) The proposition to users seems to be for them to embrace the certainty of transition pain now, to avoid the possibility of transition pain at some possible time in the future -- and even then the action needed possibly in future would be no more than the action being required for certain now. On top of which users would have to endure obfusticated queries for an extra however long, which it might be possible to avoid. This is not a strong offer.
If QLever have said they could let us retain named subqueries, that the feature would be "easy to add", is it not worth at least asking? -- [[User:Jheald|Jheald]] ([[User talk:Jheald|talk]]) 19:13, 6 July 2026 (UTC)
:Again, thank you, @[[User:Jheald|Jheald]], for raising this aswell. This was also covered during the [[:d:Event:Blazegraph Migration Office Hours - July 2026|Blazegraph Migration Office Hour yesterday]], when the team confirmed that we will work with the QLever team to explore the practicalities of supporting named subqueries.
:As part of this exploration, we will continue to consider scalability and stability as core tenets of our migration. Any QLever-specific features we decide to support will need to align with our broader approach for making capabilities available. At this stage, we cannot confirm the implementation approach, as we need to gather more information about the technical options and trade-offs involved.-[[User:Udehb-WMF|Udehb-WMF]] ([[User talk:Udehb-WMF|talk]]) 13:42, 8 July 2026 (UTC)
::@[[User:Jheald|Jheald]] I definitely have the query that you raised at the June Community meeting in my bucket for rewrite and review. I will keep you posted. [[User:AWesterinen-WMF|AWesterinen-WMF]] ([[User talk:AWesterinen-WMF|talk]]) 03:07, 9 July 2026 (UTC)
:::{{re|AWesterinen-WMF}} Thank you very much. Note that when I tried the tinyurl link before the call last Tuesday, it seemed to have some hiccough. Today the tinyurl seems to be working again, but just in case there's again any problem with the tinyurl in future, I've now also put the text of the query up at [[:d:Property talk:P10271/map query]]. [[User:Jheald|Jheald]] ([[User talk:Jheald|talk]]) 23:10, 13 July 2026 (UTC)
::::@[[User:Jheald|Jheald]] Got it! [[User:AWesterinen-WMF|AWesterinen-WMF]] ([[User talk:AWesterinen-WMF|talk]]) 15:05, 14 July 2026 (UTC)
== bd:slice and bd:sample ==
For both of these the hope seems to be that because QLever may be better indexed and more performant (or has cunning optimisations?), then these short-cuts to reduce server time and server load may not be needed.
I hope that is the case, and it remains the case in a production environment with QLever handling a production load of diverse queries all competing for time and memory and memory access, and accessing different parts of the knowledge graph.
Looking at the slice code (and it may still be necessary to step through a dataset, I imagine even on QLever, if the subsequent analysis is expensive), I don't understand why the <code><nowiki>FILTER(STR(?item) > "http://www.wikidata.org/entity/Q100310806")</nowiki></code> line, rather than just using <code>OFFSET</code> ?
Second question: Is there anything that it is particularly quick to ORDER BY and jump to an OFFSET of on QLever, because of the indexes it has?
Looking at the sample code, it is very neat for when one does just want a properly random sample, not the whole set.
I wonder if the <code>ORDER BY RAND() LIMIT ... </code> idiom is common enough and distinctive enough that QLever may some day recognise it and quietly optimise for it (without materialising the whole set), as it does for <code>FILTER(geof:distance() <= ... </code>. Something for QLever's suggestion list, perhaps? Though perhaps too rare a case for it ever to get to the top of anyone's to-do list.
The <code>MD5()</code> code, while perhaps also a classic idiom (?), presumably always has to all be materialised, given that MD5 is a specific deterministic function that unavoidably has to be evaluated over every item if a ranking has been requested. [[User:Jheald|Jheald]] ([[User talk:Jheald|talk]]) 20:18, 6 July 2026 (UTC)
:Note also that there are even more files on Commons than people on Wikidata -- to be exact 144,190,985 files according to the Commons front page. I doubt even QLever can materialise the full set of that number of rows. cf [[:c:Commons:SPARQL query service/queries/examples|WCQS query examples]]. -- [[User:Jheald|Jheald]] ([[User talk:Jheald|talk]]) 23:03, 6 July 2026 (UTC)
::@[[User:Jheald|Jheald]] Thanks for the pointer. I have also moved the Common examples into my test bucket. See https://github.com/AndreaWesterinen/Wikidata-Queries/tree/main/extract_sample_queries for the complete set and their stats. [[User:AWesterinen-WMF|AWesterinen-WMF]] ([[User talk:AWesterinen-WMF|talk]]) 03:29, 9 July 2026 (UTC)
:@[[User:Jheald|Jheald]] I will try to answer your questions in order:
:- Why the FILTER(STR(?item) > "http://www.wikidata.org/entity/Q100310806") line, rather than just using OFFSET?
:-- Answer: I believe that keyset pagination changes the question from "Give me rows 100001 through 101000" to "Give me the next 1000 rows where key > last_key_seen". That should be cheaper because the engine can potentially use an index-like access pattern: "FILTER(STR(?subject) > "last-value") ORDER BY STR(?subject) LIMIT 1000". So, instead of retrieving and then skipping an ever-growing number of prior rows, the engine continues from a known boundary. But, I need to test this. In the current document, I am trying to look at the problem from all angles. But, in the final analysis, I will go with what is most performant.
:- Is ORDER BY RAND() combined with LIMIT common?
:-- Answer: I have not seen it in general use. I would think that it is not efficient and has all the problems of LIMIT/OFFSET when the OFFSET is large.
:- Is there anything that it is particularly quick to ORDER BY and jump to an OFFSET of on QLever?
:-- Answer: I have put this question to the QLever team. I can update this page/discussion when I get a response.
:- You asked about the MD5() code. I am not sure what your question is. Can you clarify this? [[User:AWesterinen-WMF|AWesterinen-WMF]] ([[User talk:AWesterinen-WMF|talk]]) 03:24, 9 July 2026 (UTC)
::{{re|AWesterinen-WMF}} Thanks for all the above. Very interesting re the FILTER(STR(?item) > ...) test; will be interesting to know whether that makes a difference.
::In respect of MD5, no question, just an observation that while an optimiser ''might'' spot ORDER BY RAND() LIMIT as an idiom it can optimise, no such short-cut optimisation would be possible even in theory for the MD5() code because it is asking for a specific function to be evaluated across the solution set -- so in that case the optimiser ''can't'' get away with just calculating a few of them.
::Finally, for info, some further sets that are so big that bd:slice and bd:sample may sometimes get used to allow just a subset to be analysed or processed: "all the items with an en-wiki sitelink", which is quite a large; also "all items with a Commons sitelink" or "all items with a [[:d:Property:P373]]" (currently 6.4 million); also queries analysing references (or trying to filter references to a particular target site). [[User:Jheald|Jheald]] ([[User talk:Jheald|talk]]) 23:28, 13 July 2026 (UTC)
== status of label service queries ==
This morning https://query.wikidata.org/#SELECT%20%3Fitem%20%3Flabel%20%3Fdescription%20%3Falternate%20WHERE%20%7B%0A%20%20%20%3Fitem%20wdt%3AP31%20wd%3AQ515%20.%0A%20%20%20SERVICE%20wikibase%3Alabel%20%7B%0A%20%20%20%20%20%20%20bd%3AserviceParam%20wikibase%3Alanguage%20%22de%2Cen%22%20.%0A%20%20%20%20%20%20%20%3Fitem%20rdfs%3Alabel%20%3Flabel%20.%0A%20%20%20%20%20%20%20%3Fitem%20schema%3Adescription%20%3Fdescription%20.%0A%20%20%20%20%20%20%20%3Fitem%20skos%3AaltLabel%20%3Falternate%20.%20%7D%0A%7D is timing out.
And so is https://query.wikidata.org/#SELECT%20%3Fitem%20%3FitemLabel%20%3FitemDescription%20%3FitemAltLabel%20WHERE%20%7B%0A%20%20%20%3Fitem%20wdt%3AP31%20wd%3AQ515%20.%0A%20%20%20SERVICE%20wikibase%3Alabel%20%7B%20%0A%20%20%20%20%20%20%20bd%3AserviceParam%20wikibase%3Alanguage%20%22%5BAUTO_LANGUAGE%5D%2Cde%2Cen%22.%20%7D%0A%7D%0A
It would also be useful to point to the documentation for the label service. [[User:Peter F. Patel-Schneider|Peter F. Patel-Schneider]] ([[User talk:Peter F. Patel-Schneider|talk]]) 12:47, 4 August 2026 (UTC)
:Hi @[[User:Peter F. Patel-Schneider|Peter F. Patel-Schneider]], Thanks for reporting this. The timeout you are seeing appears to be related to query performance rather than feedback on the rewrite documentation itself. We will need to investigate the specific queries to understand what is causing the issue. Please file a [[phab:project/board/8467/|Phabricator ticket]] with the affected queries and any additional context that may help with the investigation so we can track the issue as part of the rest of the team's work. [[User:BTracy-WMF|BTracy-WMF]] ([[User talk:BTracy-WMF|talk]]) 13:13, 6 August 2026 (UTC)
::See https://phabricator.wikimedia.org/T434202 [[User:Peter F. Patel-Schneider|Peter F. Patel-Schneider]] ([[User talk:Peter F. Patel-Schneider|talk]]) 14:09, 6 August 2026 (UTC)
:::There has been no action on this ticket, and the queries are still timing out. [[User:Peter F. Patel-Schneider|Peter F. Patel-Schneider]] ([[User talk:Peter F. Patel-Schneider|talk]]) 12:51, 7 September 2026 (UTC)
::::@[[User:Peter F. Patel-Schneider|Peter F. Patel-Schneider]] We concluded our investigation on the problem you raised, sorry it took us so long to answer. The errors appear to be transient, and depend on the load on Blazegraph at the time those queries are submitted. FWIW, our test came out positive, and no problem was encountered. Therefore, we won't be troubleshooting these queries specifically. [[User:Sannita (WMF)|Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 15:18, 5 October 2026 (UTC)
:::::OK [[User:Peter F. Patel-Schneider|Peter F. Patel-Schneider]] ([[User talk:Peter F. Patel-Schneider|talk]]) 16:14, 5 October 2026 (UTC)
== AUTO_LANGUAGE not a feature of QLever? ==
My apologies if this was answered elsewhere, but it says in the article that "<code>[AUTO_LANGUAGE]</code> only has meaning inside the [https://query.wikidata.org WDQS UI]" which I understand as "QLever can not interpret that variable". A simple test only involving <code>[AUTO_LANGUAGE]</code> as label (and with my browser set to English) on https://qlever.dev seems to confirm this. But if that's the case, shouldn't it be removed from [[Wikidata Query Service/Migration/Rewrite of Label Service#Returning to the first example|Returning to the first example]]? [[User:Toolregistry4Memory|Toolregistry4Memory]] ([[User talk:Toolregistry4Memory|talk]]) 01:27, 22 October 2026 (UTC)
3ow3hyi4ctv942i1njcrlymfnw1gbrz
Revision Feature Counts
0
460627
2471900
2465072
2026-10-21T21:59:53Z
AKhatun (WMF)
50461
Add user docs
2471900
wikitext
text/x-wiki
What are Revision features?
The term '''features''' <ref>[[ phab:T351225#11682262]]</ref> refers to artifacts of a revision:
a reference, a wikilink, an image, an infobox, and so on.
'''Revision feature counts''' are counts of these features in a specific revision: the count of references, wikilinks, images, infoboxes, and so on. The counts come from the rendered HTML of the revision, not from the wikitext. The name says ''revision'' because a count always describes one revision.
What is this application?
The revision feature counts application does a few things:
* Provides a lambda application through [[Linked Artifacts Cache|Linked Artifacts Cache (LAC)]] that users can call to get the counts of various features in a revision.
* On every new edit, warms the LAC cache and creates a kafka event which is eventually saved in [[Data Platform/Data Lake|Data Lake]].
{| class="wikitable"
|-
! Item !! Value
|-
| Owner || [[mw:Data_Platform_Engineering/Data_Engineering|Data Engineering]] (PoC: [[User:AKhatun_(WMF)|Aisha Khatun]], [[User:Ottomata|Andrew Otto]])
|-
| Main task || {{PhabT|T432604}}
|-
| Service code || [[gitlab:repos/data-engineering/linked-artifact-lambdas|repos/data-engineering/linked-artifact-lambdas]]
|-
| Image || [https://docker-registry.wikimedia.org/repos/data-engineering/linked-artifact-lambdas/python/tags repos/data-engineering/linked-artifact-lambdas/python]
|-
| Deployment || [https://gerrit.wikimedia.org/r/plugins/gitiles/operations/deployment-charts/+/refs/heads/master/helmfile.d/services/lac-lambdas/revision-feature-counts helmfile.d/services/lac-lambdas/revision-feature-counts]
|-
| Dashboard || [https://grafana.wikimedia.org/d/revision-feature-counts/revision-feature-counts RevisionFeatureCounts]
|-
| Readiness review || [[SCROLL/RevisionFeatureCounts]]
|-
| Design Doc || [https://docs.google.com/document/d/1tTRH3lGaHWFJIgdTx4W4dsV7b42ejF2gnpXG001Qmj0/edit?tab=t.vjqnf2u0buh0#heading=h.kuytgzdajcm4 Prep Pantry: Intake for Attribution API Signals]
|}
= User documentation =
== Schema ==
The response payload of the lambda contains information about the page, the revision, and the id and time of when the html of the page was rendered. The same revision rendered at different times may show slightly different counts due to changes in templates used in the page. <code>revision.rendering.feature.counts</code> contains the counts of each available feature. This example shows a few features. The full list of features is provided in [[#Article features]].
<syntaxhighlight lang="json">
{
"wiki_id": "enwiki",
"page": {
"namespace_id": 0,
"page_id": 1576250,
"page_title": "Christie Cleek"
},
"revision": {
"rev_dt": "2026-08-09T03:40:11Z",
"rev_id": 1368453569,
"rev_sha1": "5vejfybry6yr7x0xfv02tn5s1ze3d4f",
"rendering": {
"render_id": "83c65a97-bc3e-11f1-9680-b5b59ebb64f0",
"render_dt": "2026-09-29T19:02:50Z",
"content": {
"content_length": 43807,
"content_type": "text/html; charset=utf-8; profile=\"https://www.mediawiki.org/wiki/Specs/HTML/2.8.0\"",
"content_language": "en",
"content_uri": "https://en.wikipedia.org/w/rest.php/v1/revision/1368453569/html"
},
"features": {
"software_info": {
"name": "mwparserfromhtml",
"version": "2.1.2"
},
"counts": {
"reference": 42,
"wikilink": 310,
"media_img": 7
}
}
}
}
}
</syntaxhighlight>
=== Article features ===
<code>counts</code> holds one entry for each of the 21 features exposed by [https://pypi.org/project/mwparserfromhtml/ <code>mwparserfromhtml</code>], the library we use to extract and count the features. Every count is present, or the whole call fails. A count is never <code>null</code>.
{| class="wikitable"
|-
! Article feature name !! Description
|-
| <code>reference</code> || Referenced sources used within an article, generally listed in a section at the end of the article.
|-
| <code>citation</code> || Inline instance of a given reference, e.g. [1]. A reference may be associated with multiple citations.
|-
| <code>external_link</code> || Links to external websites.
|-
| <code>wikilink</code> || Links to other wiki pages on the Wikimedia projects ([[:en:Help:Link|more info]]).
|-
| <code>category</code> || Wiki page categories ([[:en:Help:Category|more info]]).
|-
| <code>section</code> || Content between subsequent headings. An article has a number of sections equal to the number of headings + 1, for the lead ([[:en:Help:Section|more info]]).
|-
| <code>heading</code> || <nowiki><h#></nowiki> tags. Every section has a heading except the lead section ([[:en:Wikipedia:Manual_of_Style/Layout#Headings_and_sections|more info]]).
|-
| <code>template</code> || Template transclusions, counted by the <code>about</code> id Parsoid gives each one. The same template used twice counts twice.
|-
| <code>text_format</code> || Text formatting, e.g. bold, blockquote, etc.
|-
| <code>comment</code> || Comments within rendered content (not shown to readers).
|-
| <code>list</code> || Bulleted, numbered and definition lists ([[:mw:Help:Lists|more info]]).
|-
| <code>math</code> || Rendered math formulae ([[:mw:Extension:Math|more info]]).
|-
| <code>infobox</code> || The summary table at the start of an article ([[:en:Help:Infobox|more info]]).
|-
| <code>wikitable</code> || Table with the wikitable class applied ([[:en:Help:Table|more info]]).
|-
| <code>navbox</code> || Boxes that contain links to related articles ([[:en:Wikipedia:Navigation_template|more info]]).
|-
| <code>messagebox</code> || Informational messages in the form of a table contained within articles ([[:en:Wikipedia:Manual_of_Style/Article_message_boxes|more info]]).
|-
| <code>inline_cleanup</code> || Clean-up tags like [citation needed] that appear within the text of the article, as opposed to at the top of sections ([[:en:Category:Inline_cleanup_templates|more info]]).
|-
| <code>notes</code> || Informational boxes like hatnotes, which help a reader find out whether they are on the correct page ([[:en:Wikipedia:Hatnote|more info]]).
|-
| <code>media_img</code> || <nowiki><img></nowiki> tags ([[:en:Wikipedia:Images|more info]]).
|-
| <code>media_audio</code> || <nowiki><audio></nowiki> tags ([[:en:Wikipedia:Audio|more info]]).
|-
| <code>media_video</code> || <nowiki><video></nowiki> tags ([[:en:Wikipedia:Videos|more info]]).
|}
== Access ==
* '''LAC''': The revision feature counts can be accessed through LAC endpoint: <code><nowiki>https://linked-artifacts.discovery.wmnet:30443/revisions/v1/revision_feature_counts/{wiki_id}/{page_id}/{revision_id}</nowiki></code>. LAC stores the response in cache. On cache-hit, the response is sent back immediately. On cache-miss, the lambda is invoked, features computed, and response returned. We can ask for the latest revision stored in LAC by only passing the <code>page_id</code>. <code><nowiki>https://linked-artifacts.discovery.wmnet:30443/revisions/v1/revision_feature_counts/{wiki_id}/{page_id}</nowiki></code>.
This access method is available to internal clients only. Currently, [[mw:Attribution_API|Attribution_API]] exposes citation and reference counts externally.
To expose other feature counts externally, please contact MediaWiki Interfaces and/or Data Engineering teams.
<syntaxhighlight lang="bash">
# Example usage from deploy host
# in staging
$ curl https://linked-artifacts.k8s-staging.discovery.wmnet:30443/revisions/v1/revision_feature_counts/enwiki/11022716/729413703 | jq
# in production
$ curl https://linked-artifacts.discovery.wmnet:30443/revisions/v1/revision_feature_counts/enwiki/11022716/729413703 | jq
</syntaxhighlight>
* '''Stream''': Every new revision triggers the lambda and creates a kafka event in <code>stream_name</code>. The feature counts can be accessed through this stream.
* '''Data Lake''': <code>table_name</code>, the table resulting from the event stream can be used for downstream batch computations. This can be used in dbt models, Juputer notebooks, Superset dashboards, or directly queried from [[Data Platform/Systems/Presto|Presto]] or [[Data Platform/Systems/Spark|Spark]] for ad-hoc analysis.
== Caveats ==
* '''Old revisions''': The lambda fetches HTML from MW API and computes the feature counts on top of that. HTML fetches may be slow depending on whether the HTML was fetched from parser cache or rendered instantly. LAC cache hits prevent all this. For latest revisions, we trigger a JobQueue job that warms LAC. So usually latest revisions should always be in LAC cache and responses should be fast. However, if an old revision is queried, more often than not, it will not be in LAC cache. A lambda compute may be triggered and the response will take longer than usual. The caller has to wait for the response, else the response will not be computed and stored in LAC cache for later fetches.
* '''LAC cache''': LAC cache stores the latest revisions of a page. If an older revision is queried, it will compute and store it too. But, if a newer revision is queried, it will discard all old revisions and store on ly the new revision. This has implications for clients who work with flagged revisions enabled wikis/pages and need stable revisions, which can be older than latest revisions. See example in {{PhabT|T435557}}.
* '''HTML render''': The same revision can have different feature counts if the rendered HTML is different (e.g. due to changes in templates). <code>render_id</code> and <code>render_dt</code> can help distinguish this.
= Technical documentation =
== Design ==
=== DomainEvent ===
=== JobQueue ===
=== Linked Artifact Cache (LAC) ===
=== Lambda ===
=== Events ===
=== Backfill / Cache warming ===
== Usage ==
Internal usage method if applicable. See more in User Doc#Usage
== Changes and known problems ==
{| class="wikitable"
|-
! Date from !! Task !! Details
|-
| 2026-09-??
| {{PhabT|T432604}}
| Initial data set.
|}
== Technical Owners ==
DE: specific names
= Operational Notes =
== MW Domain Events ==
== JobQueue ==
== LAC ==
== Lambda ==
* MW blast radius
* Estimation of traffic: normal and backfill
* Mertic and alerts links; dashbaords
=== SLOs ===
* Metrics and Dashboards
[[Category:Data platform]]
[[Category:Data products]]
[[Category:Prep Pantry Projects]]
= References =
{{reflist}}
h5pnpt80pqdm87jwrrfp1hu4o5i8ig9
2471929
2471900
2026-10-22T02:27:26Z
AKhatun (WMF)
50461
Add doc details
2471929
wikitext
text/x-wiki
What are Revision features?
The term '''features''' <ref>[[ phab:T351225#11682262]]</ref> refers to artifacts of a revision:
a reference, a wikilink, an image, an infobox, and so on.
'''Revision feature counts''' are counts of these features of a specific revision: the count of references, wikilinks, images, infoboxes, and so on. The counts come from the rendered HTML of the revision.
What is this application?
The revision feature counts application does a few things:
* Provides a lambda application through [[Linked Artifacts Cache|Linked Artifacts Cache (LAC)]] that users can call to get the counts of various features in a revision.
* On every new edit, warms the LAC cache and creates a kafka event which is eventually saved in [[Data Platform/Data Lake|Data Lake]].
{| class="wikitable"
|-
! Item !! Value
|-
| Owner || [[mw:Data_Platform_Engineering/Data_Engineering|Data Engineering]] (PoC: [[User:AKhatun_(WMF)|Aisha Khatun]], [[User:Ottomata|Andrew Otto]])
|-
| Main task || {{PhabT|T432604}}
|-
| Service code || [[gitlab:repos/data-engineering/linked-artifact-lambdas/-/tree/main/python/revision_feature_counts|repos/data-engineering/linked-artifact-lambdas/python/revision_feature_counts]]
|-
| Image || [https://docker-registry.wikimedia.org/repos/data-engineering/linked-artifact-lambdas/python/tags repos/data-engineering/linked-artifact-lambdas/python]
|-
| Deployment || [https://gerrit.wikimedia.org/r/plugins/gitiles/operations/deployment-charts/+/refs/heads/master/helmfile.d/services/lac-lambdas/revision-feature-counts helmfile.d/services/lac-lambdas/revision-feature-counts]
|-
| Dashboard || [https://grafana.wikimedia.org/d/revision-feature-counts/revision-feature-counts RevisionFeatureCounts]
|-
| Alerts || TBD after merge
|-
| Design Doc || [https://docs.google.com/document/d/1tTRH3lGaHWFJIgdTx4W4dsV7b42ejF2gnpXG001Qmj0/edit?tab=t.vjqnf2u0buh0#heading=h.kuytgzdajcm4 Prep Pantry: Intake for Attribution API Signals]
|-
| SCROLL review || [[SCROLL/RevisionFeatureCounts]]
|}
= User documentation =
== Schema ==
The response payload of the lambda contains information about the page, the revision, and the id and time of when the html of the page was rendered. The same revision rendered at different times may show slightly different counts due to changes in templates used in the page. <code>revision.rendering.feature.counts</code> contains the counts of each available feature. This example shows a few features. The full list of features is provided in [[#Article features]].
<syntaxhighlight lang="json">
{
"wiki_id": "enwiki",
"page": {
"namespace_id": 0,
"page_id": 1576250,
"page_title": "Christie Cleek"
},
"revision": {
"rev_dt": "2026-08-09T03:40:11Z",
"rev_id": 1368453569,
"rev_sha1": "5vejfybry6yr7x0xfv02tn5s1ze3d4f",
"rendering": {
"render_id": "83c65a97-bc3e-11f1-9680-b5b59ebb64f0",
"render_dt": "2026-09-29T19:02:50Z",
"content": {
"content_length": 43807,
"content_type": "text/html; charset=utf-8; profile=\"https://www.mediawiki.org/wiki/Specs/HTML/2.8.0\"",
"content_language": "en",
"content_uri": "https://en.wikipedia.org/w/rest.php/v1/revision/1368453569/html"
},
"features": {
"software_info": {
"name": "mwparserfromhtml",
"version": "2.1.2"
},
"counts": {
"reference": 42,
"wikilink": 310,
"media_img": 7
}
}
}
}
}
</syntaxhighlight>
=== Article features ===
<code>counts</code> holds one entry for each of the 21 features exposed by [https://pypi.org/project/mwparserfromhtml/ <code>mwparserfromhtml</code>], the library we use to extract and count the features. Every count is present, or the whole call fails. A count is never <code>null</code>.
{| class="wikitable"
|-
! Article feature name !! Description
|-
| <code>reference</code> || Referenced sources used within an article, generally listed in a section at the end of the article.
|-
| <code>citation</code> || Inline instance of a given reference, e.g. [1]. A reference may be associated with multiple citations.
|-
| <code>external_link</code> || Links to external websites.
|-
| <code>wikilink</code> || Links to other wiki pages on the Wikimedia projects ([[:en:Help:Link|more info]]).
|-
| <code>category</code> || Wiki page categories ([[:en:Help:Category|more info]]).
|-
| <code>section</code> || Content between subsequent headings. An article has a number of sections equal to the number of headings + 1, for the lead ([[:en:Help:Section|more info]]).
|-
| <code>heading</code> || <nowiki><h#></nowiki> tags. Every section has a heading except the lead section ([[:en:Wikipedia:Manual_of_Style/Layout#Headings_and_sections|more info]]).
|-
| <code>template</code> || Template transclusions, counted by the <code>about</code> id Parsoid gives each one. The same template used twice counts twice.
|-
| <code>text_format</code> || Text formatting, e.g. bold, blockquote, etc.
|-
| <code>comment</code> || Comments within rendered content (not shown to readers).
|-
| <code>list</code> || Bulleted, numbered and definition lists ([[:mw:Help:Lists|more info]]).
|-
| <code>math</code> || Rendered math formulae ([[:mw:Extension:Math|more info]]).
|-
| <code>infobox</code> || The summary table at the start of an article ([[:en:Help:Infobox|more info]]).
|-
| <code>wikitable</code> || Table with the wikitable class applied ([[:en:Help:Table|more info]]).
|-
| <code>navbox</code> || Boxes that contain links to related articles ([[:en:Wikipedia:Navigation_template|more info]]).
|-
| <code>messagebox</code> || Informational messages in the form of a table contained within articles ([[:en:Wikipedia:Manual_of_Style/Article_message_boxes|more info]]).
|-
| <code>inline_cleanup</code> || Clean-up tags like [citation needed] that appear within the text of the article, as opposed to at the top of sections ([[:en:Category:Inline_cleanup_templates|more info]]).
|-
| <code>notes</code> || Informational boxes like hatnotes, which help a reader find out whether they are on the correct page ([[:en:Wikipedia:Hatnote|more info]]).
|-
| <code>media_img</code> || <nowiki><img></nowiki> tags ([[:en:Wikipedia:Images|more info]]).
|-
| <code>media_audio</code> || <nowiki><audio></nowiki> tags ([[:en:Wikipedia:Audio|more info]]).
|-
| <code>media_video</code> || <nowiki><video></nowiki> tags ([[:en:Wikipedia:Videos|more info]]).
|}
== Access ==
* '''LAC''': The revision feature counts can be accessed through LAC endpoint: <code><nowiki>https://linked-artifacts.discovery.wmnet:30443/revisions/v1/revision_feature_counts/{wiki_id}/{page_id}/{revision_id}</nowiki></code>. LAC stores the response in cache. On cache-hit, the response is sent back immediately. On cache-miss, the lambda is invoked, features computed, and response returned. We can ask for the latest revision stored in LAC by only passing the <code>page_id</code>. <code><nowiki>https://linked-artifacts.discovery.wmnet:30443/revisions/v1/revision_feature_counts/{wiki_id}/{page_id}</nowiki></code>.
This access method is available to internal clients only. Currently, [[mw:Attribution_API|Attribution_API]] exposes citation and reference counts externally.
To expose other feature counts externally, please contact MediaWiki Interfaces and/or Data Engineering teams.
<syntaxhighlight lang="bash">
# Example usage from deploy host
# in staging
$ curl https://linked-artifacts.k8s-staging.discovery.wmnet:30443/revisions/v1/revision_feature_counts/enwiki/11022716/729413703 | jq
# in production
$ curl https://linked-artifacts.discovery.wmnet:30443/revisions/v1/revision_feature_counts/enwiki/11022716/729413703 | jq
</syntaxhighlight>
* '''Stream''': Every new revision triggers the lambda and creates a kafka event in <code>stream_name</code>. The feature counts can be accessed through this stream.
* '''Data Lake''': <code>table_name</code>, the table resulting from the event stream can be used for downstream batch computations. This can be used in dbt models, Juputer notebooks, Superset dashboards, or directly queried from [[Data Platform/Systems/Presto|Presto]] or [[Data Platform/Systems/Spark|Spark]] for ad-hoc analysis.
== Caveats ==
* '''Old revisions''': The lambda fetches HTML from MW API and computes the feature counts on top of that. HTML fetches may be slow depending on whether the HTML was fetched from parser cache or rendered instantly. LAC cache hits prevent all this. For latest revisions, we trigger a JobQueue job that warms LAC. So usually latest revisions should always be in LAC cache and responses should be fast. However, if an old revision is queried, more often than not, it will not be in LAC cache. A lambda compute may be triggered and the response will take longer than usual. The caller has to wait for the response, else the response will not be computed and stored in LAC cache for later fetches.
* '''LAC cache''': LAC cache stores the latest revisions of a page. If an older revision is queried, it will compute and store it too. But, if a newer revision is queried, it will discard all old revisions and store on ly the new revision. This has implications for clients who work with flagged revisions enabled wikis/pages and need stable revisions, which can be older than latest revisions. See example in {{PhabT|T435557}}.
* '''HTML render''': The same revision can have different feature counts if the rendered HTML is different (e.g. due to changes in templates). <code>render_id</code> and <code>render_dt</code> can help distinguish this.
= Technical documentation =
== Design ==
[[File:Revision feature counts architecture.png|772x772px]]
The design consists of a few components that talk to each other and produce results in different places.
=== On new edits ===
# A user edits a page; MediaWiki emits <code>PageLatestRevisionChanged</code> DomainEvent.
# <code>LinkedArtifactPrefetchJob</code> is triggered and job is created in [[MediaWiki JobQueue|JobQueue]] for revision feature counts.
# JobQueue job calls LAC for the new revision.
# For new revisions, this is usually a cache miss. So [[Linked Artifacts Cache|LAC]] calls revision_feature_counts lambda.
# Lambda calls [[mw:API:REST API/Reference|MW API]] for the HTML of that revision. Then it computes and returns the feature counts.
# LAC gets the feature counts and gives response back to the Job.
# The feature counts response is received by JobQueue job and a <code>RevisionLinkedArtifactPrefetched</code> domain event is triggered.
# A listener, <code>RevisionHtmlFeatureCountsChangeIngress</code>, listens for this DomainEvent. Once received, it sends a <code>mediawiki.revision_html_feature_counts_change.v1</code> event to Kafka.
# The Kafka event goes through schema verification and lands the events (hourly) into DataLake table <code>event.mediawiki_revision_html_feature_counts_change_v1</code>. This table only saves the last 90 days of data.
# A sanitization job removes any sensitive information (none in this case) and saves data indefinitely in <code>event_sanitized.mediawiki_revision_html_feature_counts_change_v1</code>.
=== On API calls ===
Internal APIs (e.g. Attribution API) can call LAC directly with the discovery endpoint.
# Setting no cache control, LAC replies with feature counts if in cache, or computes it and then replies.
# Calling with no-cache forces new computation in lambda
# Calling with only-if-cached, LAC replies with feature counts only is already in cached. Use this method if latency is a big concern. Handle cache misses separately by running a async job with longer timeout.
== Lambda ==
The [[gitlab:repos/data-engineering/linked-artifact-lambdas/-/tree/main/python/revision_feature_counts|revision_feature_counts]] is a small gRPC service. It implements the one method every LAC lambda implements, <code>lambda.LambdaService/GetRevisionArtifact</code>, which takes <code>{wiki_id, page_id, revision_id}</code> and returns the artifact bytes.
For each call it:
# looks up the wiki in a map read from the Sitematrix API, to get the domain
# fetches the HTML of the revision from the MediaWiki REST API, through the service mesh
# checks that the revision really belongs to the page the caller named
# counts the 21 features with [[gitlab:repos/research/html-dumps|mwparserfromhtml]]
# returns the artifact as compact JSON.
===Timeout===
The service stops as soon as the caller's deadline passes, because work after that is thrown away. It holds no state between calls apart from the wiki map. The timeout is therefore the minimum of Client, LAC, and lambda default.
===Wiki Map===
The service calls SiteMatrix once a day to fetch a fresh set of wiki_id to domain map. This ensures any new wiki added is recognized by our lambda.
=== Configuration ===
Every setting is an environment variable with the prefix <code>RFC_</code>, in <code>values.yaml</code>.
<code>jsonargparse</code> reads the values as YAML, and a value of the wrong type stops the service at startup.
=== Retries ===
To fetch the HTML from MW API, the lambda does not retry on its own. The mesh listener <code>mw-api-int-async-ro</code> already carries <code>retry_on: 5xx, num_retries: 1</code> inside its own end-to-end limit. A
retry in the lambda would be a retry on top of that one, and <code>RFC_HTML_TIMEOUT</code> applies to each attempt rather than to the call, so a retry here can hold a worker for longer than expected.
The code still has retry mechanism, but it is set to <code>0</code>. We can set retry to a non-zero value but we need to either remove envoy retries (by choosing another mesh listener for mw-api), or manage timeout such that it applies across all retries (in lambda and envoy combined).
=== Concurrency===
== Backfill ==
A MediaWiki job warms the cache after each edit, so a reader normally gets a hit. Revisions from before the service existed need a backfill.
TBD: {{PhabT|T436718}}
== Usage ==
Internal usage method if applicable. See more in User Doc#Usage
== Changes and known problems ==
{| class="wikitable"
|-
! Date from !! Task !! Details
|-
| 2026-09-??
| {{PhabT|T432604}}
| Initial data set.
|}
== Technical Owners ==
DE: specific names
= Operational Notes =
== MW Domain Events ==
== JobQueue ==
== LAC ==
== Lambda ==
* MW blast radius
* Estimation of traffic: normal and backfill
* Mertic and alerts links; dashbaords
=== SLOs ===
* Metrics and Dashboards
= See Also =
* [[Prep_Pantry/Architectures]]: this would be the entry point for anyone looking to implement similar architecture.
* [https://docs.google.com/document/d/1tTRH3lGaHWFJIgdTx4W4dsV7b42ejF2gnpXG001Qmj0/edit?tab=t.vjqnf2u0buh0#heading=h.kuytgzdajcm4 Prep Pantry: Intake for Attribution API Signals]: Alternate designs and details.
* [[User:Ottomata/Article_Feature_Counts_Data_Product]]: Other possible uses of feature counts discussed during product design.
* https://wiki-topic.toolforge.org/html-parsing: Examples of feature counts computed by [[gitlab:repos/research/html-dumps|mwparserfromhtml]] in a UI.
= References =
{{reflist}}
[[Category:Data platform]]
[[Category:Data products]]
[[Category:Prep Pantry Projects]]
huy1tz1l2895xi7v42q56knoaroj0zi
Help:Toolforge/My first Python tool
12
460669
2471942
2464385
2026-10-22T05:05:57Z
SSapaty (WMF)
28955
/* How to create a basic Python Flask webservice */ Change Push-to-deploy to Components API
2471942
wikitext
text/x-wiki
= My first Python tool =
== Overview ==
Python webservices are used by many existing tools on Toolforge. [[w:Python (programming language)|Python]] is a general-purpose programming language commonly used for web development, automation, data processing, and many other tasks.
This tutorial is designed to get a sample Python application deployed to Toolforge using [[Help:Toolforge/Deploy your tool|Push-to-Deploy]] as quickly as possible. The application uses [[w:Flask (web framework)|Flask]] and runs on Toolforge using the Build Service.
Then we'll use the database credentials provided by Toolforge to extract the list of available databases from the Wiki Replicas.
The guide will teach you how to:
* Create a new tool
* Run a Python Flask webservice on [[w:Kubernetes|Kubernetes]]
* Deploy the application using [[Help:Toolforge/Deploy your tool|Push-to-Deploy]]
* Connect to the Wiki Replicas from Python
* Run a query and extract information
== Getting started ==
=== Prerequisites ===
==== Skills ====
* Basic knowledge of [[w:Python (programming language)|Python]]
* Basic knowledge of [[w:Secure Shell|SSH]]
* Basic knowledge of the [[w:Unix shell|Unix command line]]
* Basic knowledge of [[w:Git|Git]]
==== Accounts ====
* [[Help:Toolforge/Quickstart|A Toolforge account]]
== Step-by-step guide ==
=== Step 1: Create a new tool account ===
# Follow the [[Help:Toolforge/Quickstart|Toolforge quickstart]] guide to create a Toolforge tool and SSH into Toolforge.
#* For the examples in this tutorial, <code>sample-python-ptd-app</code> is used to indicate places where your unique tool name is used in another command.
# Make sure to create a Git repository for the tool. You can get one like this:
## Log into the [https://toolsadmin.wikimedia.org/ Toolforge admin page].
## Select your tool.
## On the left side panel, under <code>Git repositories</code>, click <code>create repository</code>.
## Copy the URL in the <code>Clone</code> section.
### There is a private URL that we will use to clone the repository locally, starting with <code>git</code>: <code>git@gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app.git</code>
### There is also a public URL that Toolforge will use to build the application, starting with <code>https</code>: <code>https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app.git</code>
=== Step 2: Create a basic Python Flask webservice ===
What is Flask?
[[w:Flask (web framework)|Flask]] is a lightweight Python web framework that can be used to create web applications and APIs.
==== How to create a basic Python Flask webservice ====
'''Clone your tool Git repository'''
You will have to clone the tool repository to be able to add code to it. On your local computer, with Git installed, run:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~$ git clone git@gitlab.wikimedia.org:toolforge-repos/sample-python-ptd-app.git
laptop:~$ cd sample-python-ptd-app
}}
That will create a folder called <code>sample-python-ptd-app</code>. We are going to put the code in that folder.
'''Add the Python dependencies'''
{{Note|Use a file named <code>requirements.txt</code> to keep track of the Python dependencies required by the application.}}
Create <code>requirements.txt</code>:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ cat > requirements.txt << EOF
Flask
gunicorn
PyMySQL
EOF
}}
'''Create a "Hello World!" Python application'''
Create a file named <code>app.py</code>:
{{Codesample|lang=python|scheme=light|name=app.py|code=
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "<p>Hello World!</p>"
}}
{{Note|Code on Toolforge must always be licensed under an [[w:Open-source license|Open Source Initiative (OSI) approved license]]. See [[Help:Toolforge/Right to fork policy|Right to fork policy]] for more information on this Toolforge policy.}}
'''Create the Procfile'''
The <code>Procfile</code> defines the command that the Build Service should use to start the web application.
Create it with:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ cat > Procfile << EOF
web: gunicorn --bind 0.0.0.0:\$PORT app:app
EOF
}}
The <code>web</code> entry defines the command used to start the Flask application. Gunicorn runs the application and listens on the port provided by Toolforge through the <code>PORT</code> environment variable.
'''Create the Toolforge configuration file'''
Create <code>toolforge.yaml</code>:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ cat > toolforge.yaml << EOF
# yaml-language-server: \$schema=https://gitlab.wikimedia.org/repos/cloud/toolforge/components-api/-/raw/main/openapi/tool-config-schema.json
source_url: https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app/-/raw/main/toolforge.yaml?ref_type=heads
components:
webservice:
build:
repository: https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app
ref: main
run:
command: web
publish: /
port: 8000
EOF
}}
If you don't want your webservice to be reachable from the internet, remove the <code>publish</code> setting. If you are deploying a process without a port, you can remove <code>port</code> too. See [[Help:Toolforge/Deploy your tool|Deploy your tool]] for more information.
'''Commit your changes and push'''
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ git add .
laptop:~/sample-python-ptd-app$ git commit -m "First commit"
laptop:~/sample-python-ptd-app$ git push origin main
}}
'''Initialize the tool configuration'''
Now SSH to <code>login.toolforge.org</code> and become your tool:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ ssh login.toolforge.org
user@tools-sgebastion-XX:~$ become sample-python-ptd-app
}}
Create the tool configuration using the public copy of <code>toolforge.yaml</code>:
{{Codesample|lang=shell-session|scheme=light|code=
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ curl 'https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app/-/raw/main/toolforge.yaml?ref_type=heads' {{!}} toolforge components config create
}}
You should see a message indicating that the configuration was updated successfully.
{{Note|Push-to-Deploy is currently a beta feature of Toolforge, so the command may also display a warning indicating that you are using a beta feature.}}
'''Create the first deployment'''
Create a deployment:
{{Codesample|lang=shell-session|scheme=light|code=
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment create
}}
Components API will build the application from your Git repository and deploy the webservice.
{{Note|The repository in <code>toolforge.yaml</code> must be publicly accessible so that Toolforge can clone and build it.}}
'''Wait for the deployment to finish'''
Check the deployment status:
{{Codesample|lang=shell-session|scheme=light|code=
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment show
}}
Wait for the deployment status to be <code>ok(Succeeded)</code>.
Once the deployment has finished, navigate to:
{{Codesample|lang=shell-session|scheme=light|code=
https://sample-python-ptd-app.toolforge.org
}}
You should see:
<syntaxhighlight lang="text">
Hello World!
</syntaxhighlight>
It might take a couple of minutes for the application to become reachable.
'''Automate deployment on push'''
You can follow [[Help:Toolforge/Deploy your tool#Automatically deploy on git push|this guide]] to configure and automate deployment of your tool whenever you push or merge changes to the main branch.
==== Connecting to the replicas ====
Toolforge provides database credentials to your application through environment variables. We will use these credentials to connect to the special <code>meta_p</code> database and retrieve the names of the available Wiki Replica databases.
First, update <code>requirements.txt</code> if <code>PyMySQL</code> is not already present:
<syntaxhighlight lang="text">
Flask
gunicorn
PyMySQL
</syntaxhighlight>
Now update <code>app.py</code>:
{{Collapse top|Sample flask code}}
{{Codesample|lang=python|scheme=light|name=app.py|code=
from flask import Flask
import os
import pymysql
app = Flask(__name__)
def get_db_connection():
return pymysql.connect(
host="meta.web.db.svc.wikimedia.cloud",
user=os.environ["TOOL_REPLICA_USER"],
password=os.environ["TOOL_REPLICA_PASSWORD"],
database="meta_p",
cursorclass=pymysql.cursors.DictCursor,
)
def get_db_names():
connection = get_db_connection()
try:
with connection.cursor() as cursor:
cursor.execute("SELECT dbname FROM wiki;")
return cursor.fetchall()
finally:
connection.close()
@app.route("/")
def index():
databases = get_db_names()
rows = "".join(
f"<tr><td>{row['dbname']}</td></tr>"
for row in databases
)
return f"""
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Database names</title>
</head>
<body>
<p>
Sample Python application accessing the
<a href="https://wikitech.wikimedia.org/wiki/Help:Toolforge/Database">
Wiki Replicas
</a>
special <code>meta_p</code> database.
</p>
<table>
<thead>
<tr>
<th>Database name</th>
</tr>
</thead>
<tbody>
{rows}
</tbody>
</table>
</body>
</html>
"""
}}
{{Collapse bottom}}
The application connects to <code>meta.web.db.svc.wikimedia.cloud</code> using the <code>TOOL_REPLICA_USER</code> and <code>TOOL_REPLICA_PASSWORD</code> environment variables provided by Toolforge.
The query:
{{Codesample|lang=sql|scheme=light|code=
SELECT dbname FROM wiki;
}}
retrieves the database names from the special <code>meta_p</code> database.
'''Commit, push, and redeploy'''
Commit and push your changes:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ git add .
laptop:~/sample-python-ptd-app$ git commit -m "Query meta_p database"
laptop:~/sample-python-ptd-app$ git push origin main
}}
Then create a new deployment:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ ssh login.toolforge.org
user@tools-sgebastion-XX:~$ become sample-python-ptd-app
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment create
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment show
}}
Wait for the deployment to finish and refresh the application in your browser.
You should now see a list of Wiki Replica database names.
== Configure Push-to-Deploy ==
Push-to-Deploy allows a CI runner to trigger a Components Service deployment after changes are pushed to your Git repository.
Below are the steps for a basic configuration. Visit [[Help:Toolforge/Deploy your tool#Triggering a deployment from your CI runner|Triggering a deployment from your CI runner]] for more details.
== Configure Push-to-Deploy ==
To enable Push-to-Deploy, configure your Git repository's CI system to trigger a Components deployment whenever changes are pushed to the repository.
The following is a minimal example for Wikimedia GitLab. For additional options and details, see [[Help:Toolforge/Deploy your tool#Triggering a deployment from your CI runner|Triggering a deployment from your CI runner]].
=== Create a deploy token ===
While logged in as your tool account, create a deploy token:
{{Codesample|lang=shell-session|scheme=light|code=
$ toolforge components deploy-token create
}}
The command displays a token. Treat this token as a secret. Do not commit it to your repository.
=== Add the deploy token to GitLab ===
In your GitLab repository, go to:
<code>Settings → CI/CD → Variables</code>
Create a variable named:
{{Codesample|lang=text|scheme=light|code=
TOOLS_DEPLOY_TOKEN
}}
Set its value to the deploy token created in the previous step.
For security, make the variable hidden, protected, and masked where appropriate.
=== Add a GitLab CI configuration ===
Create a <code>.gitlab-ci.yml</code> file in the repository containing:
{{Codesample|lang=yaml|scheme=light|name=.gitlab-ci.yml|code=
include:
- project: "repos/cloud/cicd/gitlab-ci"
file: "toolforge-cd/deploy-to-toolforge.yaml"
}}
The included Toolforge CI configuration handles triggering the Components deployment.
This minimal configuration assumes that the GitLab project name and Toolforge tool name are the same. If they are different, or if you need to customize the deployment process, see [[Help:Toolforge/Deploy your tool#Triggering a deployment from your CI runner|Triggering a deployment from your CI runner]].
Commit and push <code>.gitlab-ci.yml</code> to the repository.
When changes are pushed to the repository, GitLab CI will use the deploy token to trigger a Components deployment.
At this point, Push-to-Deploy is configured.
=== Test Push-to-Deploy ===
After configuring your CI runner, make a small change to <code>app.py</code>.
For example, change the title from `Database names` to `All Database Names:
{{Codesample|lang=yaml|scheme=light|name=app.py|code=
<title>All Database Names</title>
}}
Commit and push the change:
{{Codesample|lang=shell-session|scheme=light|code=
$ git add app.py
$ git commit -m "Expand database name"
$ git push
}}
Do not manually create a deployment.
The push should trigger your CI runner, which creates a Components Service deployment automatically.
Check your repository's CI pipeline and verify that it completes successfully.
You can then inspect the deployment from Toolforge:
{{Codesample|lang=shell-session|scheme=light|code=
$ toolforge components deployment list
}}
For the scheduled example, verify that the new schedule has been applied:
{{Codesample|lang=shell-session|scheme=light|code=
$ toolforge jobs list -o long
}}
If the deployment was triggered automatically and the new change was applied, Push-to-Deploy is working.
==== Notes ====
You can see the code used in this example in the <code>sample-python-ptd-app</code> repository.
== Troubleshooting ==
See [[Help:Toolforge/Build Service#Troubleshooting|Toolforge Build Service troubleshooting]].
You can also inspect the status of your Push-to-Deploy deployments with the following:
{{Codesample|lang=shell-session|scheme=light|code=
toolforge components deployment list
toolforge components deployment show
toolforge jobs logs webservice #view logs
}}
== See also ==
* [[Help:Toolforge/Deploy your tool|Deploy your tool with Push-to-Deploy]]
* [[Help:Toolforge/Build Service|Toolforge Build Service]]
* [[Help:Toolforge/Database|Toolforge databases]]
* [[Help:Toolforge/Quickstart|Toolforge quickstart]]
* [[Help:Toolforge/My first PHP tool|My first PHP tool]]
== Communication and support ==
Support and administration of the WMCS resources is provided by Wikimedia Foundation staff and Wikimedia movement volunteers. Please reach out with questions and join the conversation:
'''Discuss and receive general support'''
* Chat in real time in the [[Help:IRC|IRC channel]] <code>#wikimedia-cloud</code> or the bridged Telegram group.
* Discuss via email after you have subscribed to the [[mail:cloud|cloud@]] mailing list.
'''Stay aware of critical changes and plans'''
* Subscribe to the [[mail:cloud-announce|cloud-announce@]] mailing list. Messages are also mirrored to the [[mail:cloud|cloud@]] list.
'''Track work tasks and report bugs'''
Use a subproject of the [[phab:tag/cloud-services/|Cloud-Services]] Phabricator project to track confirmed bug reports and feature requests about the Cloud Services infrastructure itself.
{{:Help:Cloud Services communication}}
[[Category:Toolforge]]
[[Category:Tutorials|Python]]
[[Category:How-to-guide|Python]]
[[Category:Python]]
qt6alwtgchkmptn84ejmlecajn0nwwy
2471943
2471942
2026-10-22T05:12:10Z
SSapaty (WMF)
28955
Simplify "Configure Push-to-Deploy" section
2471943
wikitext
text/x-wiki
= My first Python tool =
== Overview ==
Python webservices are used by many existing tools on Toolforge. [[w:Python (programming language)|Python]] is a general-purpose programming language commonly used for web development, automation, data processing, and many other tasks.
This tutorial is designed to get a sample Python application deployed to Toolforge using [[Help:Toolforge/Deploy your tool|Push-to-Deploy]] as quickly as possible. The application uses [[w:Flask (web framework)|Flask]] and runs on Toolforge using the Build Service.
Then we'll use the database credentials provided by Toolforge to extract the list of available databases from the Wiki Replicas.
The guide will teach you how to:
* Create a new tool
* Run a Python Flask webservice on [[w:Kubernetes|Kubernetes]]
* Deploy the application using [[Help:Toolforge/Deploy your tool|Push-to-Deploy]]
* Connect to the Wiki Replicas from Python
* Run a query and extract information
== Getting started ==
=== Prerequisites ===
==== Skills ====
* Basic knowledge of [[w:Python (programming language)|Python]]
* Basic knowledge of [[w:Secure Shell|SSH]]
* Basic knowledge of the [[w:Unix shell|Unix command line]]
* Basic knowledge of [[w:Git|Git]]
==== Accounts ====
* [[Help:Toolforge/Quickstart|A Toolforge account]]
== Step-by-step guide ==
=== Step 1: Create a new tool account ===
# Follow the [[Help:Toolforge/Quickstart|Toolforge quickstart]] guide to create a Toolforge tool and SSH into Toolforge.
#* For the examples in this tutorial, <code>sample-python-ptd-app</code> is used to indicate places where your unique tool name is used in another command.
# Make sure to create a Git repository for the tool. You can get one like this:
## Log into the [https://toolsadmin.wikimedia.org/ Toolforge admin page].
## Select your tool.
## On the left side panel, under <code>Git repositories</code>, click <code>create repository</code>.
## Copy the URL in the <code>Clone</code> section.
### There is a private URL that we will use to clone the repository locally, starting with <code>git</code>: <code>git@gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app.git</code>
### There is also a public URL that Toolforge will use to build the application, starting with <code>https</code>: <code>https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app.git</code>
=== Step 2: Create a basic Python Flask webservice ===
What is Flask?
[[w:Flask (web framework)|Flask]] is a lightweight Python web framework that can be used to create web applications and APIs.
==== How to create a basic Python Flask webservice ====
'''Clone your tool Git repository'''
You will have to clone the tool repository to be able to add code to it. On your local computer, with Git installed, run:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~$ git clone git@gitlab.wikimedia.org:toolforge-repos/sample-python-ptd-app.git
laptop:~$ cd sample-python-ptd-app
}}
That will create a folder called <code>sample-python-ptd-app</code>. We are going to put the code in that folder.
'''Add the Python dependencies'''
{{Note|Use a file named <code>requirements.txt</code> to keep track of the Python dependencies required by the application.}}
Create <code>requirements.txt</code>:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ cat > requirements.txt << EOF
Flask
gunicorn
PyMySQL
EOF
}}
'''Create a "Hello World!" Python application'''
Create a file named <code>app.py</code>:
{{Codesample|lang=python|scheme=light|name=app.py|code=
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "<p>Hello World!</p>"
}}
{{Note|Code on Toolforge must always be licensed under an [[w:Open-source license|Open Source Initiative (OSI) approved license]]. See [[Help:Toolforge/Right to fork policy|Right to fork policy]] for more information on this Toolforge policy.}}
'''Create the Procfile'''
The <code>Procfile</code> defines the command that the Build Service should use to start the web application.
Create it with:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ cat > Procfile << EOF
web: gunicorn --bind 0.0.0.0:\$PORT app:app
EOF
}}
The <code>web</code> entry defines the command used to start the Flask application. Gunicorn runs the application and listens on the port provided by Toolforge through the <code>PORT</code> environment variable.
'''Create the Toolforge configuration file'''
Create <code>toolforge.yaml</code>:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ cat > toolforge.yaml << EOF
# yaml-language-server: \$schema=https://gitlab.wikimedia.org/repos/cloud/toolforge/components-api/-/raw/main/openapi/tool-config-schema.json
source_url: https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app/-/raw/main/toolforge.yaml?ref_type=heads
components:
webservice:
build:
repository: https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app
ref: main
run:
command: web
publish: /
port: 8000
EOF
}}
If you don't want your webservice to be reachable from the internet, remove the <code>publish</code> setting. If you are deploying a process without a port, you can remove <code>port</code> too. See [[Help:Toolforge/Deploy your tool|Deploy your tool]] for more information.
'''Commit your changes and push'''
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ git add .
laptop:~/sample-python-ptd-app$ git commit -m "First commit"
laptop:~/sample-python-ptd-app$ git push origin main
}}
'''Initialize the tool configuration'''
Now SSH to <code>login.toolforge.org</code> and become your tool:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ ssh login.toolforge.org
user@tools-sgebastion-XX:~$ become sample-python-ptd-app
}}
Create the tool configuration using the public copy of <code>toolforge.yaml</code>:
{{Codesample|lang=shell-session|scheme=light|code=
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ curl 'https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app/-/raw/main/toolforge.yaml?ref_type=heads' {{!}} toolforge components config create
}}
You should see a message indicating that the configuration was updated successfully.
{{Note|Push-to-Deploy is currently a beta feature of Toolforge, so the command may also display a warning indicating that you are using a beta feature.}}
'''Create the first deployment'''
Create a deployment:
{{Codesample|lang=shell-session|scheme=light|code=
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment create
}}
Components API will build the application from your Git repository and deploy the webservice.
{{Note|The repository in <code>toolforge.yaml</code> must be publicly accessible so that Toolforge can clone and build it.}}
'''Wait for the deployment to finish'''
Check the deployment status:
{{Codesample|lang=shell-session|scheme=light|code=
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment show
}}
Wait for the deployment status to be <code>ok(Succeeded)</code>.
Once the deployment has finished, navigate to:
{{Codesample|lang=shell-session|scheme=light|code=
https://sample-python-ptd-app.toolforge.org
}}
You should see:
<syntaxhighlight lang="text">
Hello World!
</syntaxhighlight>
It might take a couple of minutes for the application to become reachable.
'''Automate deployment on push'''
You can follow [[Help:Toolforge/Deploy your tool#Automatically deploy on git push|this guide]] to configure and automate deployment of your tool whenever you push or merge changes to the main branch.
==== Connecting to the replicas ====
Toolforge provides database credentials to your application through environment variables. We will use these credentials to connect to the special <code>meta_p</code> database and retrieve the names of the available Wiki Replica databases.
First, update <code>requirements.txt</code> if <code>PyMySQL</code> is not already present:
<syntaxhighlight lang="text">
Flask
gunicorn
PyMySQL
</syntaxhighlight>
Now update <code>app.py</code>:
{{Collapse top|Sample flask code}}
{{Codesample|lang=python|scheme=light|name=app.py|code=
from flask import Flask
import os
import pymysql
app = Flask(__name__)
def get_db_connection():
return pymysql.connect(
host="meta.web.db.svc.wikimedia.cloud",
user=os.environ["TOOL_REPLICA_USER"],
password=os.environ["TOOL_REPLICA_PASSWORD"],
database="meta_p",
cursorclass=pymysql.cursors.DictCursor,
)
def get_db_names():
connection = get_db_connection()
try:
with connection.cursor() as cursor:
cursor.execute("SELECT dbname FROM wiki;")
return cursor.fetchall()
finally:
connection.close()
@app.route("/")
def index():
databases = get_db_names()
rows = "".join(
f"<tr><td>{row['dbname']}</td></tr>"
for row in databases
)
return f"""
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Database names</title>
</head>
<body>
<p>
Sample Python application accessing the
<a href="https://wikitech.wikimedia.org/wiki/Help:Toolforge/Database">
Wiki Replicas
</a>
special <code>meta_p</code> database.
</p>
<table>
<thead>
<tr>
<th>Database name</th>
</tr>
</thead>
<tbody>
{rows}
</tbody>
</table>
</body>
</html>
"""
}}
{{Collapse bottom}}
The application connects to <code>meta.web.db.svc.wikimedia.cloud</code> using the <code>TOOL_REPLICA_USER</code> and <code>TOOL_REPLICA_PASSWORD</code> environment variables provided by Toolforge.
The query:
{{Codesample|lang=sql|scheme=light|code=
SELECT dbname FROM wiki;
}}
retrieves the database names from the special <code>meta_p</code> database.
'''Commit, push, and redeploy'''
Commit and push your changes:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ git add .
laptop:~/sample-python-ptd-app$ git commit -m "Query meta_p database"
laptop:~/sample-python-ptd-app$ git push origin main
}}
Then create a new deployment:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ ssh login.toolforge.org
user@tools-sgebastion-XX:~$ become sample-python-ptd-app
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment create
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment show
}}
Wait for the deployment to finish and refresh the application in your browser.
You should now see a list of Wiki Replica database names.
== Configure Push-to-Deploy ==
To enable Push-to-Deploy, configure your Git repository's CI system to trigger a Components deployment whenever changes are pushed to the repository.
The following is a minimal example for Wikimedia GitLab. For additional options and details, see [[Help:Toolforge/Deploy your tool#Triggering a deployment from your CI runner|Triggering a deployment from your CI runner]].
=== Create a deploy token ===
While logged in as your tool account, create a deploy token:
{{Codesample|lang=shell-session|scheme=light|code=
$ toolforge components deploy-token create
}}
The command displays a token. Treat this token as a secret. Do not commit it to your repository.
=== Add the deploy token to GitLab ===
In your GitLab repository, go to:
<code>Settings → CI/CD → Variables</code>
Create a variable named:
{{Codesample|lang=text|scheme=light|code=
TOOLS_DEPLOY_TOKEN
}}
Set its value to the deploy token created in the previous step.
For security, make the variable hidden, protected, and masked where appropriate.
=== Add a GitLab CI configuration ===
Create a <code>.gitlab-ci.yml</code> file in the repository containing:
{{Codesample|lang=yaml|scheme=light|name=.gitlab-ci.yml|code=
include:
- project: "repos/cloud/cicd/gitlab-ci"
file: "toolforge-cd/deploy-to-toolforge.yaml"
}}
The included Toolforge CI configuration handles triggering the Components deployment.
This minimal configuration assumes that the GitLab project name and Toolforge tool name are the same. If they are different, or if you need to customize the deployment process, see [[Help:Toolforge/Deploy your tool#Triggering a deployment from your CI runner|Triggering a deployment from your CI runner]].
Commit and push <code>.gitlab-ci.yml</code> to the repository.
When changes are pushed to the repository, GitLab CI will use the deploy token to trigger a Components deployment.
At this point, Push-to-Deploy is configured.
=== Test Push-to-Deploy ===
After configuring your CI runner, make a small change to <code>app.py</code>.
For example, change the title from `Database names` to `All Database Names:
{{Codesample|lang=yaml|scheme=light|name=app.py|code=
<title>All Database Names</title>
}}
Commit and push the change:
{{Codesample|lang=shell-session|scheme=light|code=
$ git add app.py
$ git commit -m "Expand database name"
$ git push
}}
Do not manually create a deployment.
The push should trigger your CI runner, which creates a Components Service deployment automatically.
Check your repository's CI pipeline and verify that it completes successfully.
You can then inspect the deployment from Toolforge:
{{Codesample|lang=shell-session|scheme=light|code=
$ toolforge components deployment list
}}
For the scheduled example, verify that the new schedule has been applied:
{{Codesample|lang=shell-session|scheme=light|code=
$ toolforge jobs list -o long
}}
If the deployment was triggered automatically and the new change was applied, Push-to-Deploy is working.
==== Notes ====
You can see the code used in this example in the <code>sample-python-ptd-app</code> repository.
== Troubleshooting ==
See [[Help:Toolforge/Build Service#Troubleshooting|Toolforge Build Service troubleshooting]].
You can also inspect the status of your Push-to-Deploy deployments with the following:
{{Codesample|lang=shell-session|scheme=light|code=
toolforge components deployment list
toolforge components deployment show
toolforge jobs logs webservice #view logs
}}
== See also ==
* [[Help:Toolforge/Deploy your tool|Deploy your tool with Push-to-Deploy]]
* [[Help:Toolforge/Build Service|Toolforge Build Service]]
* [[Help:Toolforge/Database|Toolforge databases]]
* [[Help:Toolforge/Quickstart|Toolforge quickstart]]
* [[Help:Toolforge/My first PHP tool|My first PHP tool]]
== Communication and support ==
Support and administration of the WMCS resources is provided by Wikimedia Foundation staff and Wikimedia movement volunteers. Please reach out with questions and join the conversation:
'''Discuss and receive general support'''
* Chat in real time in the [[Help:IRC|IRC channel]] <code>#wikimedia-cloud</code> or the bridged Telegram group.
* Discuss via email after you have subscribed to the [[mail:cloud|cloud@]] mailing list.
'''Stay aware of critical changes and plans'''
* Subscribe to the [[mail:cloud-announce|cloud-announce@]] mailing list. Messages are also mirrored to the [[mail:cloud|cloud@]] list.
'''Track work tasks and report bugs'''
Use a subproject of the [[phab:tag/cloud-services/|Cloud-Services]] Phabricator project to track confirmed bug reports and feature requests about the Cloud Services infrastructure itself.
{{:Help:Cloud Services communication}}
[[Category:Toolforge]]
[[Category:Tutorials|Python]]
[[Category:How-to-guide|Python]]
[[Category:Python]]
7zpdnlhfvoy9t2p28bkuqlyiirnfqs5
2471944
2471943
2026-10-22T05:15:29Z
SSapaty (WMF)
28955
/* Test Push-to-Deploy */ Remove old 'scheduled' example from push-to-deploy verification
2471944
wikitext
text/x-wiki
= My first Python tool =
== Overview ==
Python webservices are used by many existing tools on Toolforge. [[w:Python (programming language)|Python]] is a general-purpose programming language commonly used for web development, automation, data processing, and many other tasks.
This tutorial is designed to get a sample Python application deployed to Toolforge using [[Help:Toolforge/Deploy your tool|Push-to-Deploy]] as quickly as possible. The application uses [[w:Flask (web framework)|Flask]] and runs on Toolforge using the Build Service.
Then we'll use the database credentials provided by Toolforge to extract the list of available databases from the Wiki Replicas.
The guide will teach you how to:
* Create a new tool
* Run a Python Flask webservice on [[w:Kubernetes|Kubernetes]]
* Deploy the application using [[Help:Toolforge/Deploy your tool|Push-to-Deploy]]
* Connect to the Wiki Replicas from Python
* Run a query and extract information
== Getting started ==
=== Prerequisites ===
==== Skills ====
* Basic knowledge of [[w:Python (programming language)|Python]]
* Basic knowledge of [[w:Secure Shell|SSH]]
* Basic knowledge of the [[w:Unix shell|Unix command line]]
* Basic knowledge of [[w:Git|Git]]
==== Accounts ====
* [[Help:Toolforge/Quickstart|A Toolforge account]]
== Step-by-step guide ==
=== Step 1: Create a new tool account ===
# Follow the [[Help:Toolforge/Quickstart|Toolforge quickstart]] guide to create a Toolforge tool and SSH into Toolforge.
#* For the examples in this tutorial, <code>sample-python-ptd-app</code> is used to indicate places where your unique tool name is used in another command.
# Make sure to create a Git repository for the tool. You can get one like this:
## Log into the [https://toolsadmin.wikimedia.org/ Toolforge admin page].
## Select your tool.
## On the left side panel, under <code>Git repositories</code>, click <code>create repository</code>.
## Copy the URL in the <code>Clone</code> section.
### There is a private URL that we will use to clone the repository locally, starting with <code>git</code>: <code>git@gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app.git</code>
### There is also a public URL that Toolforge will use to build the application, starting with <code>https</code>: <code>https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app.git</code>
=== Step 2: Create a basic Python Flask webservice ===
What is Flask?
[[w:Flask (web framework)|Flask]] is a lightweight Python web framework that can be used to create web applications and APIs.
==== How to create a basic Python Flask webservice ====
'''Clone your tool Git repository'''
You will have to clone the tool repository to be able to add code to it. On your local computer, with Git installed, run:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~$ git clone git@gitlab.wikimedia.org:toolforge-repos/sample-python-ptd-app.git
laptop:~$ cd sample-python-ptd-app
}}
That will create a folder called <code>sample-python-ptd-app</code>. We are going to put the code in that folder.
'''Add the Python dependencies'''
{{Note|Use a file named <code>requirements.txt</code> to keep track of the Python dependencies required by the application.}}
Create <code>requirements.txt</code>:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ cat > requirements.txt << EOF
Flask
gunicorn
PyMySQL
EOF
}}
'''Create a "Hello World!" Python application'''
Create a file named <code>app.py</code>:
{{Codesample|lang=python|scheme=light|name=app.py|code=
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "<p>Hello World!</p>"
}}
{{Note|Code on Toolforge must always be licensed under an [[w:Open-source license|Open Source Initiative (OSI) approved license]]. See [[Help:Toolforge/Right to fork policy|Right to fork policy]] for more information on this Toolforge policy.}}
'''Create the Procfile'''
The <code>Procfile</code> defines the command that the Build Service should use to start the web application.
Create it with:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ cat > Procfile << EOF
web: gunicorn --bind 0.0.0.0:\$PORT app:app
EOF
}}
The <code>web</code> entry defines the command used to start the Flask application. Gunicorn runs the application and listens on the port provided by Toolforge through the <code>PORT</code> environment variable.
'''Create the Toolforge configuration file'''
Create <code>toolforge.yaml</code>:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ cat > toolforge.yaml << EOF
# yaml-language-server: \$schema=https://gitlab.wikimedia.org/repos/cloud/toolforge/components-api/-/raw/main/openapi/tool-config-schema.json
source_url: https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app/-/raw/main/toolforge.yaml?ref_type=heads
components:
webservice:
build:
repository: https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app
ref: main
run:
command: web
publish: /
port: 8000
EOF
}}
If you don't want your webservice to be reachable from the internet, remove the <code>publish</code> setting. If you are deploying a process without a port, you can remove <code>port</code> too. See [[Help:Toolforge/Deploy your tool|Deploy your tool]] for more information.
'''Commit your changes and push'''
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ git add .
laptop:~/sample-python-ptd-app$ git commit -m "First commit"
laptop:~/sample-python-ptd-app$ git push origin main
}}
'''Initialize the tool configuration'''
Now SSH to <code>login.toolforge.org</code> and become your tool:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ ssh login.toolforge.org
user@tools-sgebastion-XX:~$ become sample-python-ptd-app
}}
Create the tool configuration using the public copy of <code>toolforge.yaml</code>:
{{Codesample|lang=shell-session|scheme=light|code=
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ curl 'https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app/-/raw/main/toolforge.yaml?ref_type=heads' {{!}} toolforge components config create
}}
You should see a message indicating that the configuration was updated successfully.
{{Note|Push-to-Deploy is currently a beta feature of Toolforge, so the command may also display a warning indicating that you are using a beta feature.}}
'''Create the first deployment'''
Create a deployment:
{{Codesample|lang=shell-session|scheme=light|code=
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment create
}}
Components API will build the application from your Git repository and deploy the webservice.
{{Note|The repository in <code>toolforge.yaml</code> must be publicly accessible so that Toolforge can clone and build it.}}
'''Wait for the deployment to finish'''
Check the deployment status:
{{Codesample|lang=shell-session|scheme=light|code=
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment show
}}
Wait for the deployment status to be <code>ok(Succeeded)</code>.
Once the deployment has finished, navigate to:
{{Codesample|lang=shell-session|scheme=light|code=
https://sample-python-ptd-app.toolforge.org
}}
You should see:
<syntaxhighlight lang="text">
Hello World!
</syntaxhighlight>
It might take a couple of minutes for the application to become reachable.
'''Automate deployment on push'''
You can follow [[Help:Toolforge/Deploy your tool#Automatically deploy on git push|this guide]] to configure and automate deployment of your tool whenever you push or merge changes to the main branch.
==== Connecting to the replicas ====
Toolforge provides database credentials to your application through environment variables. We will use these credentials to connect to the special <code>meta_p</code> database and retrieve the names of the available Wiki Replica databases.
First, update <code>requirements.txt</code> if <code>PyMySQL</code> is not already present:
<syntaxhighlight lang="text">
Flask
gunicorn
PyMySQL
</syntaxhighlight>
Now update <code>app.py</code>:
{{Collapse top|Sample flask code}}
{{Codesample|lang=python|scheme=light|name=app.py|code=
from flask import Flask
import os
import pymysql
app = Flask(__name__)
def get_db_connection():
return pymysql.connect(
host="meta.web.db.svc.wikimedia.cloud",
user=os.environ["TOOL_REPLICA_USER"],
password=os.environ["TOOL_REPLICA_PASSWORD"],
database="meta_p",
cursorclass=pymysql.cursors.DictCursor,
)
def get_db_names():
connection = get_db_connection()
try:
with connection.cursor() as cursor:
cursor.execute("SELECT dbname FROM wiki;")
return cursor.fetchall()
finally:
connection.close()
@app.route("/")
def index():
databases = get_db_names()
rows = "".join(
f"<tr><td>{row['dbname']}</td></tr>"
for row in databases
)
return f"""
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Database names</title>
</head>
<body>
<p>
Sample Python application accessing the
<a href="https://wikitech.wikimedia.org/wiki/Help:Toolforge/Database">
Wiki Replicas
</a>
special <code>meta_p</code> database.
</p>
<table>
<thead>
<tr>
<th>Database name</th>
</tr>
</thead>
<tbody>
{rows}
</tbody>
</table>
</body>
</html>
"""
}}
{{Collapse bottom}}
The application connects to <code>meta.web.db.svc.wikimedia.cloud</code> using the <code>TOOL_REPLICA_USER</code> and <code>TOOL_REPLICA_PASSWORD</code> environment variables provided by Toolforge.
The query:
{{Codesample|lang=sql|scheme=light|code=
SELECT dbname FROM wiki;
}}
retrieves the database names from the special <code>meta_p</code> database.
'''Commit, push, and redeploy'''
Commit and push your changes:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ git add .
laptop:~/sample-python-ptd-app$ git commit -m "Query meta_p database"
laptop:~/sample-python-ptd-app$ git push origin main
}}
Then create a new deployment:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ ssh login.toolforge.org
user@tools-sgebastion-XX:~$ become sample-python-ptd-app
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment create
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment show
}}
Wait for the deployment to finish and refresh the application in your browser.
You should now see a list of Wiki Replica database names.
== Configure Push-to-Deploy ==
To enable Push-to-Deploy, configure your Git repository's CI system to trigger a Components deployment whenever changes are pushed to the repository.
The following is a minimal example for Wikimedia GitLab. For additional options and details, see [[Help:Toolforge/Deploy your tool#Triggering a deployment from your CI runner|Triggering a deployment from your CI runner]].
=== Create a deploy token ===
While logged in as your tool account, create a deploy token:
{{Codesample|lang=shell-session|scheme=light|code=
$ toolforge components deploy-token create
}}
The command displays a token. Treat this token as a secret. Do not commit it to your repository.
=== Add the deploy token to GitLab ===
In your GitLab repository, go to:
<code>Settings → CI/CD → Variables</code>
Create a variable named:
{{Codesample|lang=text|scheme=light|code=
TOOLS_DEPLOY_TOKEN
}}
Set its value to the deploy token created in the previous step.
For security, make the variable hidden, protected, and masked where appropriate.
=== Add a GitLab CI configuration ===
Create a <code>.gitlab-ci.yml</code> file in the repository containing:
{{Codesample|lang=yaml|scheme=light|name=.gitlab-ci.yml|code=
include:
- project: "repos/cloud/cicd/gitlab-ci"
file: "toolforge-cd/deploy-to-toolforge.yaml"
}}
The included Toolforge CI configuration handles triggering the Components deployment.
This minimal configuration assumes that the GitLab project name and Toolforge tool name are the same. If they are different, or if you need to customize the deployment process, see [[Help:Toolforge/Deploy your tool#Triggering a deployment from your CI runner|Triggering a deployment from your CI runner]].
Commit and push <code>.gitlab-ci.yml</code> to the repository.
When changes are pushed to the repository, GitLab CI will use the deploy token to trigger a Components deployment.
At this point, Push-to-Deploy is configured.
=== Test Push-to-Deploy ===
After configuring your CI runner, make a small change to <code>app.py</code>.
For example, change the title from `Database names` to `All Database Names:
{{Codesample|lang=yaml|scheme=light|name=app.py|code=
<title>All Database Names</title>
}}
Commit and push the change:
{{Codesample|lang=shell-session|scheme=light|code=
$ git add app.py
$ git commit -m "Expand database name"
$ git push
}}
Do not manually create a deployment.
The push should trigger your CI runner, which creates a Components Service deployment automatically.
Check your repository's CI pipeline and verify that it completes successfully.
You can then inspect the deployment from Toolforge:
{{Codesample|lang=shell-session|scheme=light|code=
$ toolforge components deployment list
}}
If the deployment was triggered automatically and the new change was applied, Push-to-Deploy is working.
==== Notes ====
You can see the code used in this example in the <code>sample-python-ptd-app</code> repository.
== Troubleshooting ==
See [[Help:Toolforge/Build Service#Troubleshooting|Toolforge Build Service troubleshooting]].
You can also inspect the status of your Push-to-Deploy deployments with the following:
{{Codesample|lang=shell-session|scheme=light|code=
toolforge components deployment list
toolforge components deployment show
toolforge jobs logs webservice #view logs
}}
== See also ==
* [[Help:Toolforge/Deploy your tool|Deploy your tool with Push-to-Deploy]]
* [[Help:Toolforge/Build Service|Toolforge Build Service]]
* [[Help:Toolforge/Database|Toolforge databases]]
* [[Help:Toolforge/Quickstart|Toolforge quickstart]]
* [[Help:Toolforge/My first PHP tool|My first PHP tool]]
== Communication and support ==
Support and administration of the WMCS resources is provided by Wikimedia Foundation staff and Wikimedia movement volunteers. Please reach out with questions and join the conversation:
'''Discuss and receive general support'''
* Chat in real time in the [[Help:IRC|IRC channel]] <code>#wikimedia-cloud</code> or the bridged Telegram group.
* Discuss via email after you have subscribed to the [[mail:cloud|cloud@]] mailing list.
'''Stay aware of critical changes and plans'''
* Subscribe to the [[mail:cloud-announce|cloud-announce@]] mailing list. Messages are also mirrored to the [[mail:cloud|cloud@]] list.
'''Track work tasks and report bugs'''
Use a subproject of the [[phab:tag/cloud-services/|Cloud-Services]] Phabricator project to track confirmed bug reports and feature requests about the Cloud Services infrastructure itself.
{{:Help:Cloud Services communication}}
[[Category:Toolforge]]
[[Category:Tutorials|Python]]
[[Category:How-to-guide|Python]]
[[Category:Python]]
cj77pc13ul87fkeu8vb0413iaar5ydo
2471945
2471944
2026-10-22T05:22:44Z
SSapaty (WMF)
28955
/* How to create a basic Python Flask webservice */ Add explanation for source_url
2471945
wikitext
text/x-wiki
= My first Python tool =
== Overview ==
Python webservices are used by many existing tools on Toolforge. [[w:Python (programming language)|Python]] is a general-purpose programming language commonly used for web development, automation, data processing, and many other tasks.
This tutorial is designed to get a sample Python application deployed to Toolforge using [[Help:Toolforge/Deploy your tool|Push-to-Deploy]] as quickly as possible. The application uses [[w:Flask (web framework)|Flask]] and runs on Toolforge using the Build Service.
Then we'll use the database credentials provided by Toolforge to extract the list of available databases from the Wiki Replicas.
The guide will teach you how to:
* Create a new tool
* Run a Python Flask webservice on [[w:Kubernetes|Kubernetes]]
* Deploy the application using [[Help:Toolforge/Deploy your tool|Push-to-Deploy]]
* Connect to the Wiki Replicas from Python
* Run a query and extract information
== Getting started ==
=== Prerequisites ===
==== Skills ====
* Basic knowledge of [[w:Python (programming language)|Python]]
* Basic knowledge of [[w:Secure Shell|SSH]]
* Basic knowledge of the [[w:Unix shell|Unix command line]]
* Basic knowledge of [[w:Git|Git]]
==== Accounts ====
* [[Help:Toolforge/Quickstart|A Toolforge account]]
== Step-by-step guide ==
=== Step 1: Create a new tool account ===
# Follow the [[Help:Toolforge/Quickstart|Toolforge quickstart]] guide to create a Toolforge tool and SSH into Toolforge.
#* For the examples in this tutorial, <code>sample-python-ptd-app</code> is used to indicate places where your unique tool name is used in another command.
# Make sure to create a Git repository for the tool. You can get one like this:
## Log into the [https://toolsadmin.wikimedia.org/ Toolforge admin page].
## Select your tool.
## On the left side panel, under <code>Git repositories</code>, click <code>create repository</code>.
## Copy the URL in the <code>Clone</code> section.
### There is a private URL that we will use to clone the repository locally, starting with <code>git</code>: <code>git@gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app.git</code>
### There is also a public URL that Toolforge will use to build the application, starting with <code>https</code>: <code>https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app.git</code>
=== Step 2: Create a basic Python Flask webservice ===
What is Flask?
[[w:Flask (web framework)|Flask]] is a lightweight Python web framework that can be used to create web applications and APIs.
==== How to create a basic Python Flask webservice ====
'''Clone your tool Git repository'''
You will have to clone the tool repository to be able to add code to it. On your local computer, with Git installed, run:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~$ git clone git@gitlab.wikimedia.org:toolforge-repos/sample-python-ptd-app.git
laptop:~$ cd sample-python-ptd-app
}}
That will create a folder called <code>sample-python-ptd-app</code>. We are going to put the code in that folder.
'''Add the Python dependencies'''
{{Note|Use a file named <code>requirements.txt</code> to keep track of the Python dependencies required by the application.}}
Create <code>requirements.txt</code>:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ cat > requirements.txt << EOF
Flask
gunicorn
PyMySQL
EOF
}}
'''Create a "Hello World!" Python application'''
Create a file named <code>app.py</code>:
{{Codesample|lang=python|scheme=light|name=app.py|code=
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "<p>Hello World!</p>"
}}
{{Note|Code on Toolforge must always be licensed under an [[w:Open-source license|Open Source Initiative (OSI) approved license]]. See [[Help:Toolforge/Right to fork policy|Right to fork policy]] for more information on this Toolforge policy.}}
'''Create the Procfile'''
The <code>Procfile</code> defines the command that the Build Service should use to start the web application.
Create it with:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ cat > Procfile << EOF
web: gunicorn --bind 0.0.0.0:\$PORT app:app
EOF
}}
The <code>web</code> entry defines the command used to start the Flask application. Gunicorn runs the application and listens on the port provided by Toolforge through the <code>PORT</code> environment variable.
'''Create the Toolforge configuration file'''
Create <code>toolforge.yaml</code>:
The <code>source_url</code> specifies the source from which the tool configuration should be fetched.
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ cat > toolforge.yaml << EOF
# yaml-language-server: \$schema=https://gitlab.wikimedia.org/repos/cloud/toolforge/components-api/-/raw/main/openapi/tool-config-schema.json
source_url: https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app/-/raw/main/toolforge.yaml?ref_type=heads
components:
webservice:
build:
repository: https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app
ref: main
run:
command: web
publish: /
port: 8000
EOF
}}
If you don't want your webservice to be reachable from the internet, remove the <code>publish</code> setting. If you are deploying a process without a port, you can remove <code>port</code> too. See [[Help:Toolforge/Deploy your tool|Deploy your tool]] for more information.
'''Commit your changes and push'''
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ git add .
laptop:~/sample-python-ptd-app$ git commit -m "First commit"
laptop:~/sample-python-ptd-app$ git push origin main
}}
'''Initialize the tool configuration'''
Now SSH to <code>login.toolforge.org</code> and become your tool:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ ssh login.toolforge.org
user@tools-sgebastion-XX:~$ become sample-python-ptd-app
}}
Create the tool configuration using the public copy of <code>toolforge.yaml</code>:
{{Codesample|lang=shell-session|scheme=light|code=
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ curl 'https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app/-/raw/main/toolforge.yaml?ref_type=heads' {{!}} toolforge components config create
}}
You should see a message indicating that the configuration was updated successfully.
{{Note|Push-to-Deploy is currently a beta feature of Toolforge, so the command may also display a warning indicating that you are using a beta feature.}}
'''Create the first deployment'''
Create a deployment:
{{Codesample|lang=shell-session|scheme=light|code=
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment create
}}
Components API will build the application from your Git repository and deploy the webservice.
{{Note|The repository in <code>toolforge.yaml</code> must be publicly accessible so that Toolforge can clone and build it.}}
'''Wait for the deployment to finish'''
Check the deployment status:
{{Codesample|lang=shell-session|scheme=light|code=
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment show
}}
Wait for the deployment status to be <code>ok(Succeeded)</code>.
Once the deployment has finished, navigate to:
{{Codesample|lang=shell-session|scheme=light|code=
https://sample-python-ptd-app.toolforge.org
}}
You should see:
<syntaxhighlight lang="text">
Hello World!
</syntaxhighlight>
It might take a couple of minutes for the application to become reachable.
'''Automate deployment on push'''
You can follow [[Help:Toolforge/Deploy your tool#Automatically deploy on git push|this guide]] to configure and automate deployment of your tool whenever you push or merge changes to the main branch.
==== Connecting to the replicas ====
Toolforge provides database credentials to your application through environment variables. We will use these credentials to connect to the special <code>meta_p</code> database and retrieve the names of the available Wiki Replica databases.
First, update <code>requirements.txt</code> if <code>PyMySQL</code> is not already present:
<syntaxhighlight lang="text">
Flask
gunicorn
PyMySQL
</syntaxhighlight>
Now update <code>app.py</code>:
{{Collapse top|Sample flask code}}
{{Codesample|lang=python|scheme=light|name=app.py|code=
from flask import Flask
import os
import pymysql
app = Flask(__name__)
def get_db_connection():
return pymysql.connect(
host="meta.web.db.svc.wikimedia.cloud",
user=os.environ["TOOL_REPLICA_USER"],
password=os.environ["TOOL_REPLICA_PASSWORD"],
database="meta_p",
cursorclass=pymysql.cursors.DictCursor,
)
def get_db_names():
connection = get_db_connection()
try:
with connection.cursor() as cursor:
cursor.execute("SELECT dbname FROM wiki;")
return cursor.fetchall()
finally:
connection.close()
@app.route("/")
def index():
databases = get_db_names()
rows = "".join(
f"<tr><td>{row['dbname']}</td></tr>"
for row in databases
)
return f"""
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Database names</title>
</head>
<body>
<p>
Sample Python application accessing the
<a href="https://wikitech.wikimedia.org/wiki/Help:Toolforge/Database">
Wiki Replicas
</a>
special <code>meta_p</code> database.
</p>
<table>
<thead>
<tr>
<th>Database name</th>
</tr>
</thead>
<tbody>
{rows}
</tbody>
</table>
</body>
</html>
"""
}}
{{Collapse bottom}}
The application connects to <code>meta.web.db.svc.wikimedia.cloud</code> using the <code>TOOL_REPLICA_USER</code> and <code>TOOL_REPLICA_PASSWORD</code> environment variables provided by Toolforge.
The query:
{{Codesample|lang=sql|scheme=light|code=
SELECT dbname FROM wiki;
}}
retrieves the database names from the special <code>meta_p</code> database.
'''Commit, push, and redeploy'''
Commit and push your changes:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ git add .
laptop:~/sample-python-ptd-app$ git commit -m "Query meta_p database"
laptop:~/sample-python-ptd-app$ git push origin main
}}
Then create a new deployment:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ ssh login.toolforge.org
user@tools-sgebastion-XX:~$ become sample-python-ptd-app
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment create
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment show
}}
Wait for the deployment to finish and refresh the application in your browser.
You should now see a list of Wiki Replica database names.
== Configure Push-to-Deploy ==
To enable Push-to-Deploy, configure your Git repository's CI system to trigger a Components deployment whenever changes are pushed to the repository.
The following is a minimal example for Wikimedia GitLab. For additional options and details, see [[Help:Toolforge/Deploy your tool#Triggering a deployment from your CI runner|Triggering a deployment from your CI runner]].
=== Create a deploy token ===
While logged in as your tool account, create a deploy token:
{{Codesample|lang=shell-session|scheme=light|code=
$ toolforge components deploy-token create
}}
The command displays a token. Treat this token as a secret. Do not commit it to your repository.
=== Add the deploy token to GitLab ===
In your GitLab repository, go to:
<code>Settings → CI/CD → Variables</code>
Create a variable named:
{{Codesample|lang=text|scheme=light|code=
TOOLS_DEPLOY_TOKEN
}}
Set its value to the deploy token created in the previous step.
For security, make the variable hidden, protected, and masked where appropriate.
=== Add a GitLab CI configuration ===
Create a <code>.gitlab-ci.yml</code> file in the repository containing:
{{Codesample|lang=yaml|scheme=light|name=.gitlab-ci.yml|code=
include:
- project: "repos/cloud/cicd/gitlab-ci"
file: "toolforge-cd/deploy-to-toolforge.yaml"
}}
The included Toolforge CI configuration handles triggering the Components deployment.
This minimal configuration assumes that the GitLab project name and Toolforge tool name are the same. If they are different, or if you need to customize the deployment process, see [[Help:Toolforge/Deploy your tool#Triggering a deployment from your CI runner|Triggering a deployment from your CI runner]].
Commit and push <code>.gitlab-ci.yml</code> to the repository.
When changes are pushed to the repository, GitLab CI will use the deploy token to trigger a Components deployment.
At this point, Push-to-Deploy is configured.
=== Test Push-to-Deploy ===
After configuring your CI runner, make a small change to <code>app.py</code>.
For example, change the title from `Database names` to `All Database Names:
{{Codesample|lang=yaml|scheme=light|name=app.py|code=
<title>All Database Names</title>
}}
Commit and push the change:
{{Codesample|lang=shell-session|scheme=light|code=
$ git add app.py
$ git commit -m "Expand database name"
$ git push
}}
Do not manually create a deployment.
The push should trigger your CI runner, which creates a Components Service deployment automatically.
Check your repository's CI pipeline and verify that it completes successfully.
You can then inspect the deployment from Toolforge:
{{Codesample|lang=shell-session|scheme=light|code=
$ toolforge components deployment list
}}
If the deployment was triggered automatically and the new change was applied, Push-to-Deploy is working.
==== Notes ====
You can see the code used in this example in the <code>sample-python-ptd-app</code> repository.
== Troubleshooting ==
See [[Help:Toolforge/Build Service#Troubleshooting|Toolforge Build Service troubleshooting]].
You can also inspect the status of your Push-to-Deploy deployments with the following:
{{Codesample|lang=shell-session|scheme=light|code=
toolforge components deployment list
toolforge components deployment show
toolforge jobs logs webservice #view logs
}}
== See also ==
* [[Help:Toolforge/Deploy your tool|Deploy your tool with Push-to-Deploy]]
* [[Help:Toolforge/Build Service|Toolforge Build Service]]
* [[Help:Toolforge/Database|Toolforge databases]]
* [[Help:Toolforge/Quickstart|Toolforge quickstart]]
* [[Help:Toolforge/My first PHP tool|My first PHP tool]]
== Communication and support ==
Support and administration of the WMCS resources is provided by Wikimedia Foundation staff and Wikimedia movement volunteers. Please reach out with questions and join the conversation:
'''Discuss and receive general support'''
* Chat in real time in the [[Help:IRC|IRC channel]] <code>#wikimedia-cloud</code> or the bridged Telegram group.
* Discuss via email after you have subscribed to the [[mail:cloud|cloud@]] mailing list.
'''Stay aware of critical changes and plans'''
* Subscribe to the [[mail:cloud-announce|cloud-announce@]] mailing list. Messages are also mirrored to the [[mail:cloud|cloud@]] list.
'''Track work tasks and report bugs'''
Use a subproject of the [[phab:tag/cloud-services/|Cloud-Services]] Phabricator project to track confirmed bug reports and feature requests about the Cloud Services infrastructure itself.
{{:Help:Cloud Services communication}}
[[Category:Toolforge]]
[[Category:Tutorials|Python]]
[[Category:How-to-guide|Python]]
[[Category:Python]]
ee1hc5k2ul8rogjz4konvhfxjb3zzjj
2471946
2471945
2026-10-22T05:23:25Z
SSapaty (WMF)
28955
/* How to create a basic Python Flask webservice */
2471946
wikitext
text/x-wiki
= My first Python tool =
== Overview ==
Python webservices are used by many existing tools on Toolforge. [[w:Python (programming language)|Python]] is a general-purpose programming language commonly used for web development, automation, data processing, and many other tasks.
This tutorial is designed to get a sample Python application deployed to Toolforge using [[Help:Toolforge/Deploy your tool|Push-to-Deploy]] as quickly as possible. The application uses [[w:Flask (web framework)|Flask]] and runs on Toolforge using the Build Service.
Then we'll use the database credentials provided by Toolforge to extract the list of available databases from the Wiki Replicas.
The guide will teach you how to:
* Create a new tool
* Run a Python Flask webservice on [[w:Kubernetes|Kubernetes]]
* Deploy the application using [[Help:Toolforge/Deploy your tool|Push-to-Deploy]]
* Connect to the Wiki Replicas from Python
* Run a query and extract information
== Getting started ==
=== Prerequisites ===
==== Skills ====
* Basic knowledge of [[w:Python (programming language)|Python]]
* Basic knowledge of [[w:Secure Shell|SSH]]
* Basic knowledge of the [[w:Unix shell|Unix command line]]
* Basic knowledge of [[w:Git|Git]]
==== Accounts ====
* [[Help:Toolforge/Quickstart|A Toolforge account]]
== Step-by-step guide ==
=== Step 1: Create a new tool account ===
# Follow the [[Help:Toolforge/Quickstart|Toolforge quickstart]] guide to create a Toolforge tool and SSH into Toolforge.
#* For the examples in this tutorial, <code>sample-python-ptd-app</code> is used to indicate places where your unique tool name is used in another command.
# Make sure to create a Git repository for the tool. You can get one like this:
## Log into the [https://toolsadmin.wikimedia.org/ Toolforge admin page].
## Select your tool.
## On the left side panel, under <code>Git repositories</code>, click <code>create repository</code>.
## Copy the URL in the <code>Clone</code> section.
### There is a private URL that we will use to clone the repository locally, starting with <code>git</code>: <code>git@gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app.git</code>
### There is also a public URL that Toolforge will use to build the application, starting with <code>https</code>: <code>https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app.git</code>
=== Step 2: Create a basic Python Flask webservice ===
What is Flask?
[[w:Flask (web framework)|Flask]] is a lightweight Python web framework that can be used to create web applications and APIs.
==== How to create a basic Python Flask webservice ====
'''Clone your tool Git repository'''
You will have to clone the tool repository to be able to add code to it. On your local computer, with Git installed, run:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~$ git clone git@gitlab.wikimedia.org:toolforge-repos/sample-python-ptd-app.git
laptop:~$ cd sample-python-ptd-app
}}
That will create a folder called <code>sample-python-ptd-app</code>. We are going to put the code in that folder.
'''Add the Python dependencies'''
{{Note|Use a file named <code>requirements.txt</code> to keep track of the Python dependencies required by the application.}}
Create <code>requirements.txt</code>:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ cat > requirements.txt << EOF
Flask
gunicorn
PyMySQL
EOF
}}
'''Create a "Hello World!" Python application'''
Create a file named <code>app.py</code>:
{{Codesample|lang=python|scheme=light|name=app.py|code=
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "<p>Hello World!</p>"
}}
{{Note|Code on Toolforge must always be licensed under an [[w:Open-source license|Open Source Initiative (OSI) approved license]]. See [[Help:Toolforge/Right to fork policy|Right to fork policy]] for more information on this Toolforge policy.}}
'''Create the Procfile'''
The <code>Procfile</code> defines the command that the Build Service should use to start the web application.
Create it with:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ cat > Procfile << EOF
web: gunicorn --bind 0.0.0.0:\$PORT app:app
EOF
}}
The <code>web</code> entry defines the command used to start the Flask application. Gunicorn runs the application and listens on the port provided by Toolforge through the <code>PORT</code> environment variable.
'''Create the Toolforge configuration file'''
Create <code>toolforge.yaml</code>:
The <code>source_url</code> specifies the source from which the tool configuration should be fetched.
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ cat > toolforge.yaml << EOF
# yaml-language-server: \$schema=https://gitlab.wikimedia.org/repos/cloud/toolforge/components-api/-/raw/main/openapi/tool-config-schema.json
source_url: https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app/-/raw/main/toolforge.yaml?ref_type=heads
components:
webservice:
build:
repository: https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app
ref: main
run:
command: web
publish: /
port: 8000
EOF
}}
If you don't want your webservice to be reachable from the internet, remove the <code>publish</code> setting. If you are deploying a process without a port, you can remove <code>port</code> too. See [[Help:Toolforge/Deploy your tool|Deploy your tool]] for more information.
'''Commit your changes and push'''
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ git add .
laptop:~/sample-python-ptd-app$ git commit -m "First commit"
laptop:~/sample-python-ptd-app$ git push origin main
}}
'''Initialize the tool configuration'''
Now SSH to <code>login.toolforge.org</code> and become your tool:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ ssh login.toolforge.org
user@tools-sgebastion-XX:~$ become sample-python-ptd-app
}}
Create the tool configuration using the public copy of <code>toolforge.yaml</code>:
{{Codesample|lang=shell-session|scheme=light|code=
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ curl 'https://gitlab.wikimedia.org/toolforge-repos/sample-python-ptd-app/-/raw/main/toolforge.yaml?ref_type=heads' {{!}} toolforge components config create
}}
You should see a message indicating that the configuration was updated successfully.
{{Note|Push-to-Deploy is currently a beta feature of Toolforge, so the command may also display a warning indicating that you are using a beta feature.}}
'''Create the first deployment'''
Create a deployment:
{{Codesample|lang=shell-session|scheme=light|code=
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment create
}}
Components API will build the application from your Git repository and deploy the webservice.
{{Note|The repository in <code>toolforge.yaml</code> must be publicly accessible so that Toolforge can clone and build it.}}
'''Wait for the deployment to finish'''
Check the deployment status:
{{Codesample|lang=shell-session|scheme=light|code=
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment show
}}
Wait for the deployment status to be <code>ok(Succeeded)</code>.
Once the deployment has finished, navigate to:
{{Codesample|lang=shell-session|scheme=light|code=
https://sample-python-ptd-app.toolforge.org
}}
You should see:
<syntaxhighlight lang="text">
Hello World!
</syntaxhighlight>
It might take a couple of minutes for the application to become reachable.
'''Automate deployment on push'''
You can follow [[Help:Toolforge/Deploy your tool#Automatically deploy on git push|this guide]] to configure and automate deployment of your tool whenever you push or merge changes to the main branch.
==== Connecting to the replicas ====
Toolforge provides database credentials to your application through environment variables. We will use these credentials to connect to the special <code>meta_p</code> database and retrieve the names of the available Wiki Replica databases.
First, update <code>requirements.txt</code> if <code>PyMySQL</code> is not already present:
<syntaxhighlight lang="text">
Flask
gunicorn
PyMySQL
</syntaxhighlight>
Now update <code>app.py</code>:
{{Collapse top|Sample flask code}}
{{Codesample|lang=python|scheme=light|name=app.py|code=
from flask import Flask
import os
import pymysql
app = Flask(__name__)
def get_db_connection():
return pymysql.connect(
host="meta.web.db.svc.wikimedia.cloud",
user=os.environ["TOOL_REPLICA_USER"],
password=os.environ["TOOL_REPLICA_PASSWORD"],
database="meta_p",
cursorclass=pymysql.cursors.DictCursor,
)
def get_db_names():
connection = get_db_connection()
try:
with connection.cursor() as cursor:
cursor.execute("SELECT dbname FROM wiki;")
return cursor.fetchall()
finally:
connection.close()
@app.route("/")
def index():
databases = get_db_names()
rows = "".join(
f"<tr><td>{row['dbname']}</td></tr>"
for row in databases
)
return f"""
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Database names</title>
</head>
<body>
<p>
Sample Python application accessing the
<a href="https://wikitech.wikimedia.org/wiki/Help:Toolforge/Database">
Wiki Replicas
</a>
special <code>meta_p</code> database.
</p>
<table>
<thead>
<tr>
<th>Database name</th>
</tr>
</thead>
<tbody>
{rows}
</tbody>
</table>
</body>
</html>
"""
}}
{{Collapse bottom}}
The application connects to <code>meta.web.db.svc.wikimedia.cloud</code> using the <code>TOOL_REPLICA_USER</code> and <code>TOOL_REPLICA_PASSWORD</code> environment variables provided by Toolforge.
The query:
{{Codesample|lang=sql|scheme=light|code=
SELECT dbname FROM wiki;
}}
retrieves the database names from the special <code>meta_p</code> database.
'''Commit, push, and redeploy'''
Commit and push your changes:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ git add .
laptop:~/sample-python-ptd-app$ git commit -m "Query meta_p database"
laptop:~/sample-python-ptd-app$ git push origin main
}}
Then create a new deployment:
{{Codesample|lang=shell-session|scheme=light|code=
laptop:~/sample-python-ptd-app$ ssh login.toolforge.org
user@tools-sgebastion-XX:~$ become sample-python-ptd-app
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment create
tools.sample-python-ptd-app@tools-sgebastion-XX:~$ toolforge components deployment show
}}
Wait for the deployment to finish and refresh the application in your browser.
You should now see a list of Wiki Replica database names.
== Configure Push-to-Deploy ==
To enable Push-to-Deploy, configure your Git repository's CI system to trigger a Components deployment whenever changes are pushed to the repository.
The following is a minimal example for Wikimedia GitLab. For additional options and details, see [[Help:Toolforge/Deploy your tool#Triggering a deployment from your CI runner|Triggering a deployment from your CI runner]].
=== Create a deploy token ===
While logged in as your tool account, create a deploy token:
{{Codesample|lang=shell-session|scheme=light|code=
$ toolforge components deploy-token create
}}
The command displays a token. Treat this token as a secret. Do not commit it to your repository.
=== Add the deploy token to GitLab ===
In your GitLab repository, go to:
<code>Settings → CI/CD → Variables</code>
Create a variable named:
{{Codesample|lang=text|scheme=light|code=
TOOLS_DEPLOY_TOKEN
}}
Set its value to the deploy token created in the previous step.
For security, make the variable hidden, protected, and masked where appropriate.
=== Add a GitLab CI configuration ===
Create a <code>.gitlab-ci.yml</code> file in the repository containing:
{{Codesample|lang=yaml|scheme=light|name=.gitlab-ci.yml|code=
include:
- project: "repos/cloud/cicd/gitlab-ci"
file: "toolforge-cd/deploy-to-toolforge.yaml"
}}
The included Toolforge CI configuration handles triggering the Components deployment.
This minimal configuration assumes that the GitLab project name and Toolforge tool name are the same. If they are different, or if you need to customize the deployment process, see [[Help:Toolforge/Deploy your tool#Triggering a deployment from your CI runner|Triggering a deployment from your CI runner]].
Commit and push <code>.gitlab-ci.yml</code> to the repository.
When changes are pushed to the repository, GitLab CI will use the deploy token to trigger a Components deployment.
At this point, Push-to-Deploy is configured.
=== Test Push-to-Deploy ===
After configuring your CI runner, make a small change to <code>app.py</code>.
For example, change the title from `Database names` to `All Database Names:
{{Codesample|lang=yaml|scheme=light|name=app.py|code=
<title>All Database Names</title>
}}
Commit and push the change:
{{Codesample|lang=shell-session|scheme=light|code=
$ git add app.py
$ git commit -m "Expand database name"
$ git push
}}
Do not manually create a deployment.
The push should trigger your CI runner, which creates a Components Service deployment automatically.
Check your repository's CI pipeline and verify that it completes successfully.
You can then inspect the deployment from Toolforge:
{{Codesample|lang=shell-session|scheme=light|code=
$ toolforge components deployment list
}}
If the deployment was triggered automatically and the new change was applied, Push-to-Deploy is working.
==== Notes ====
You can see the code used in this example in the <code>sample-python-ptd-app</code> repository.
== Troubleshooting ==
See [[Help:Toolforge/Build Service#Troubleshooting|Toolforge Build Service troubleshooting]].
You can also inspect the status of your Push-to-Deploy deployments with the following:
{{Codesample|lang=shell-session|scheme=light|code=
toolforge components deployment list
toolforge components deployment show
toolforge jobs logs webservice #view logs
}}
== See also ==
* [[Help:Toolforge/Deploy your tool|Deploy your tool with Push-to-Deploy]]
* [[Help:Toolforge/Build Service|Toolforge Build Service]]
* [[Help:Toolforge/Database|Toolforge databases]]
* [[Help:Toolforge/Quickstart|Toolforge quickstart]]
* [[Help:Toolforge/My first PHP tool|My first PHP tool]]
== Communication and support ==
Support and administration of the WMCS resources is provided by Wikimedia Foundation staff and Wikimedia movement volunteers. Please reach out with questions and join the conversation:
'''Discuss and receive general support'''
* Chat in real time in the [[Help:IRC|IRC channel]] <code>#wikimedia-cloud</code> or the bridged Telegram group.
* Discuss via email after you have subscribed to the [[mail:cloud|cloud@]] mailing list.
'''Stay aware of critical changes and plans'''
* Subscribe to the [[mail:cloud-announce|cloud-announce@]] mailing list. Messages are also mirrored to the [[mail:cloud|cloud@]] list.
'''Track work tasks and report bugs'''
Use a subproject of the [[phab:tag/cloud-services/|Cloud-Services]] Phabricator project to track confirmed bug reports and feature requests about the Cloud Services infrastructure itself.
{{:Help:Cloud Services communication}}
[[Category:Toolforge]]
[[Category:Tutorials|Python]]
[[Category:How-to-guide|Python]]
[[Category:Python]]
5bxfegsa8ji6m9jyato588m3sjj9krd
SLO/LiftWing LLM
0
460789
2471841
2471828
2026-10-21T14:26:00Z
GKyziridis-WMF
39160
Service and Teams section updated
2471841
wikitext
text/x-wiki
{{Draft}}
''This SLO is a draft. Targets are based on the load tests on the 96GB GPU partitions ({{phab|T440307}}).''
== Organizational ==
=== Service ===
'''LiftWing LLM''' provides inference services for large language models hosted on [[Machine Learning/LiftWing|Lift Wing]] deployed in the llm namespace of the ml-serve Kubernetes cluster. Models are served using [https://docs.vllm.ai vLLM] through KServeLLMInferenceService and exposed publicly via the REST Gateway at <code>api.wikimedia.org</code>.
Services covered by this SLO:
* <code>llm-qwen3-14b</code>
* <code>llm-qwen38-27b</code>
See [[Machine Learning/LiftWing/Large Language Models]] for platform documentation.
=== Teams ===
* The Machine Learning (ML) team is responsible for the deployment, configuration, and maintenance of the LLM inference services.
* Clients include public API users (via the REST Gateway), Hummingbird Chat (previously LiftWing Studio), and internal services.
* The SRE team maintains the underlying ml-serve Kubernetes infrastructure, while the API Platform team is responsible for the REST Gateway.
== Architectural ==
=== Environmental dependencies ===
The service runs in the ml-serve-eqiad Kubernetes cluster on AMD MI300X GPUs. All the models run on 96GB partitions (ml-serve1013/1014).
* [[Kubernetes/Clusters#ml-serve]]: This is a ''hard dependency'' as these Kubernetes nodes are the backbone of [[Machine Learning/LiftWing|LiftWing]], the platform where this service is deployed on.
* Thanos [[Swift]] for the storage of model binaries: This is a soft dependency. We use swift as the [[Machine Learning/LiftWing#Model Storage|model-storage]] in LiftWing with an s3 compatible API to fetch a model to the pod during the initialization of a model service, so if Swift is not available the current services will not be affected but we may end up having issues with new releases in the case where a new version of the model needs to be deployed.
=== Service dependencies ===
'''Hard dependencies:'''
* ml-serve Kubernetes clusters (Knative, Istio, KServe)
* GPU nodes with available partitions
'''Soft dependencies:'''
* Thanos Swift — model weights
* WMF Docker Registry — container images
'''External traffic:'''
* REST Gateway (<code>api.wikimedia.org</code>). If unavailable, internal clients can still reach the services via the internal endpoint (<code>inference.svc.eqiad.wmnet</code>).
== Client-facing ==
=== Who are the service’s clients? ===
Public API users through <code>api.wikimedia.org</code> (LiftWingLLM rate limit), LiftWing Studio and internal services.
=== Request classes ===
All requests use the OpenAI-compatible endpoints exposed by vLLM (<code>/v1/chat/completions</code>, <code>/v1/completions</code>). Requests are treated as a single class. Streaming and non-streaming requests are both counted for availability. Latency SLIs are token-based (see below), so output length does not affect them.
== Service Level Indicators (SLIs) ==
A fixed end-to-end latency threshold doesn't work for generative models, because response time grows with the number of generated tokens. Latency is therefore split into two length-independent indicators:
* '''Availability SLI:''' the percentage of all requests that receive a non-error (non-5xx) response. This is measured server-side at the Istio ingress gateway (<code>istio_requests_total</code>).
* '''Queue time SLI:''' the percentage of requests that wait '''1 s''' or less in the vLLM queue before processing starts (<code>vllm:request_queue_time_seconds</code>). This measures if we have enough capacity.
* '''Time per output token (TPOT) SLI:''' the percentage of successful requests whose mean time per output token is within '''100 ms''' (<code>vllm:request_time_per_output_token_seconds</code>). This measures generation (streaming) speed.
TTFT is not used as an SLI because it depends on the prompt length, which is controlled by the client.
== Operational ==
=== Monitoring ===
LiftWing LLMs are monitored through several dashboards and alerts.
'''Dashboards'''
* Sloth SLO dashboards in Grafana (once the manifests are merged)
* [https://grafana.wikimedia.org/d/dpzzsnh/ml-infra ML infra dashboard] with the vLLM metrics (requests running/waiting, queue time, TTFT, TPOT)
'''Alerts'''
* [[Machine Learning/LiftWing/Alerts#LiftWingServiceErrorRate|LiftWing Service Error Rate]]: fires when the rate of 5xx responses of a service goes above the threshold.
* KubernetesDeploymentUnavailableReplicas: fires when a pod can't be scheduled or is not ready (e.g. no free GPU partition).
=== Troubleshooting ===
The ML team will be solely responsible for troubleshooting this service and no additional support from SREs is needed. Since most ML team engineers work similar hours, incidents occurring outside working hours may affect response times.
ML inference services are manually deployed rather than automatically deployed. New LLM configs are usually tested first on a copy of the isvc in the experimental namespace, which means most deployment issues are caught before reaching production.
Typical incidents involve pod crashes, pods stuck in Pending (no free GPU partition), GPU memory problems, or 5xx errors. When an isvc incident occurs, we examine relevant dashboards and logs to identify the root cause and determine whether it's a GPU/node issue, a networking issue or a model/inference service issue. See [[Machine Learning/LiftWing/Large Language Models]] for more details.
The time needed for troubleshooting varies from hours to days, primarily based on our familiarity with the issue. However, we typically decide on our response (such as a quick fix, restarting the service or moving it to another partition) within a few hours to immediately mitigate the issue and minimize error budget burn.
=== Deployment ===
LiftWing LLMs are deployed on Kubernetes with helmfile (<code>helmfile.d/ml-services/llm</code> in <code>operations/deployment-charts</code>). Changes to the inference services involve two steps: 1) CI builds a new production image, and 2) the deployment chart is updated with the new image and synced to update the isvc.
For service-level configuration changes (vLLM settings like <code>MAX_NUM_SEQS</code>, resource allocation, etc.), only a helmfile change and sync are needed to update the isvc.
The time needed for deployment includes code review, patch merging, helmfile updates, and syncing, typically takes less than 1 hour. A new pod needs a few minutes to load the model.
== Service level objectives ==
=== Realistic targets ===
We ran vllm-bench against a copy of each model in the experimental namespace (1 replica, 96GB partition, 1024 input / 128 output tokens). Results are in {{phab|T440307}}.
{| class="wikitable"
! Model !! MAX_NUM_SEQS / MAX_NUM_BATCHED_TOKENS !! Concurrent requests per replica !! TPOT p90 !! Queue time ≤ 1 s !! req/s
|-
| llm-qwen3-14b || 32 / 8192 || 32 || 32 ms || 100% || 7.3
|-
| llm-qwen38-27b || 16 / 8192 || 16 || 67 ms || 100% || 2.2
|}
Above these limits the extra requests wait in the queue, so the queue time target holds only while the load stays within capacity. For qwen38-27b, <code>MAX_NUM_SEQS=32</code> did not meet the TPOT target, so we lowered it to 16 (not in production yet).
* Availability: 95%
* TPOT: 90% of requests within 100 ms
* Queue time: 90% of requests within 1 s
=== Ideal targets ===
* Availability: 99%
* TPOT: 99% of requests within 100 ms
* Queue time: 99% of requests within 1 s
=== Reconciliation ===
* '''Service Availability (95%)''' matches the other Lift Wing SLOs. Client errors should return 4xx instead of 5xx first ({{phab|T439967}}).
* '''TPOT (90% within 100 ms)''' and '''Queue time (90% within 1 s)''' per model, based on the tests above.
d9yc2luyqnp3c97nfztqrrw4xlw0c8u
2471958
2471841
2026-10-22T09:26:53Z
GKyziridis-WMF
39160
Remove Knative from hard dependencies
2471958
wikitext
text/x-wiki
{{Draft}}
''This SLO is a draft. Targets are based on the load tests on the 96GB GPU partitions ({{phab|T440307}}).''
== Organizational ==
=== Service ===
'''LiftWing LLM''' provides inference services for large language models hosted on [[Machine Learning/LiftWing|Lift Wing]] deployed in the llm namespace of the ml-serve Kubernetes cluster. Models are served using [https://docs.vllm.ai vLLM] through KServeLLMInferenceService and exposed publicly via the REST Gateway at <code>api.wikimedia.org</code>.
Services covered by this SLO:
* <code>llm-qwen3-14b</code>
* <code>llm-qwen38-27b</code>
See [[Machine Learning/LiftWing/Large Language Models]] for platform documentation.
=== Teams ===
* The Machine Learning (ML) team is responsible for the deployment, configuration, and maintenance of the LLM inference services.
* Clients include public API users (via the REST Gateway), Hummingbird Chat (previously LiftWing Studio), and internal services.
* The SRE team maintains the underlying ml-serve Kubernetes infrastructure, while the API Platform team is responsible for the REST Gateway.
== Architectural ==
=== Environmental dependencies ===
The service runs in the ml-serve-eqiad Kubernetes cluster on AMD MI300X GPUs. All the models run on 96GB partitions (ml-serve1013/1014).
* [[Kubernetes/Clusters#ml-serve]]: This is a ''hard dependency'' as these Kubernetes nodes are the backbone of [[Machine Learning/LiftWing|LiftWing]], the platform where this service is deployed on.
* Thanos [[Swift]] for the storage of model binaries: This is a soft dependency. We use swift as the [[Machine Learning/LiftWing#Model Storage|model-storage]] in LiftWing with an s3 compatible API to fetch a model to the pod during the initialization of a model service, so if Swift is not available the current services will not be affected but we may end up having issues with new releases in the case where a new version of the model needs to be deployed.
=== Service dependencies ===
'''Hard dependencies:'''
* ml-serve Kubernetes clusters (KServe, Istio ingress gateway)
* GPU nodes with available partitions
'''Soft dependencies:'''
* Thanos Swift — model weights
* WMF Docker Registry — container images
'''External traffic:'''
* REST Gateway (<code>api.wikimedia.org</code>). If unavailable, internal clients can still reach the services via the internal endpoint (<code>inference.svc.eqiad.wmnet</code>).
== Client-facing ==
=== Who are the service’s clients? ===
Public API users through <code>api.wikimedia.org</code> (LiftWingLLM rate limit), LiftWing Studio and internal services.
=== Request classes ===
All requests use the OpenAI-compatible endpoints exposed by vLLM (<code>/v1/chat/completions</code>, <code>/v1/completions</code>). Requests are treated as a single class. Streaming and non-streaming requests are both counted for availability. Latency SLIs are token-based (see below), so output length does not affect them.
== Service Level Indicators (SLIs) ==
A fixed end-to-end latency threshold doesn't work for generative models, because response time grows with the number of generated tokens. Latency is therefore split into two length-independent indicators:
* '''Availability SLI:''' the percentage of all requests that receive a non-error (non-5xx) response. This is measured server-side at the Istio ingress gateway (<code>istio_requests_total</code>).
* '''Queue time SLI:''' the percentage of requests that wait '''1 s''' or less in the vLLM queue before processing starts (<code>vllm:request_queue_time_seconds</code>). This measures if we have enough capacity.
* '''Time per output token (TPOT) SLI:''' the percentage of successful requests whose mean time per output token is within '''100 ms''' (<code>vllm:request_time_per_output_token_seconds</code>). This measures generation (streaming) speed.
TTFT is not used as an SLI because it depends on the prompt length, which is controlled by the client.
== Operational ==
=== Monitoring ===
LiftWing LLMs are monitored through several dashboards and alerts.
'''Dashboards'''
* Sloth SLO dashboards in Grafana (once the manifests are merged)
* [https://grafana.wikimedia.org/d/dpzzsnh/ml-infra ML infra dashboard] with the vLLM metrics (requests running/waiting, queue time, TTFT, TPOT)
'''Alerts'''
* [[Machine Learning/LiftWing/Alerts#LiftWingServiceErrorRate|LiftWing Service Error Rate]]: fires when the rate of 5xx responses of a service goes above the threshold.
* KubernetesDeploymentUnavailableReplicas: fires when a pod can't be scheduled or is not ready (e.g. no free GPU partition).
=== Troubleshooting ===
The ML team will be solely responsible for troubleshooting this service and no additional support from SREs is needed. Since most ML team engineers work similar hours, incidents occurring outside working hours may affect response times.
ML inference services are manually deployed rather than automatically deployed. New LLM configs are usually tested first on a copy of the isvc in the experimental namespace, which means most deployment issues are caught before reaching production.
Typical incidents involve pod crashes, pods stuck in Pending (no free GPU partition), GPU memory problems, or 5xx errors. When an isvc incident occurs, we examine relevant dashboards and logs to identify the root cause and determine whether it's a GPU/node issue, a networking issue or a model/inference service issue. See [[Machine Learning/LiftWing/Large Language Models]] for more details.
The time needed for troubleshooting varies from hours to days, primarily based on our familiarity with the issue. However, we typically decide on our response (such as a quick fix, restarting the service or moving it to another partition) within a few hours to immediately mitigate the issue and minimize error budget burn.
=== Deployment ===
LiftWing LLMs are deployed on Kubernetes with helmfile (<code>helmfile.d/ml-services/llm</code> in <code>operations/deployment-charts</code>). Changes to the inference services involve two steps: 1) CI builds a new production image, and 2) the deployment chart is updated with the new image and synced to update the isvc.
For service-level configuration changes (vLLM settings like <code>MAX_NUM_SEQS</code>, resource allocation, etc.), only a helmfile change and sync are needed to update the isvc.
The time needed for deployment includes code review, patch merging, helmfile updates, and syncing, typically takes less than 1 hour. A new pod needs a few minutes to load the model.
== Service level objectives ==
=== Realistic targets ===
We ran vllm-bench against a copy of each model in the experimental namespace (1 replica, 96GB partition, 1024 input / 128 output tokens). Results are in {{phab|T440307}}.
{| class="wikitable"
! Model !! MAX_NUM_SEQS / MAX_NUM_BATCHED_TOKENS !! Concurrent requests per replica !! TPOT p90 !! Queue time ≤ 1 s !! req/s
|-
| llm-qwen3-14b || 32 / 8192 || 32 || 32 ms || 100% || 7.3
|-
| llm-qwen38-27b || 16 / 8192 || 16 || 67 ms || 100% || 2.2
|}
Above these limits the extra requests wait in the queue, so the queue time target holds only while the load stays within capacity. For qwen38-27b, <code>MAX_NUM_SEQS=32</code> did not meet the TPOT target, so we lowered it to 16 (not in production yet).
* Availability: 95%
* TPOT: 90% of requests within 100 ms
* Queue time: 90% of requests within 1 s
=== Ideal targets ===
* Availability: 99%
* TPOT: 99% of requests within 100 ms
* Queue time: 99% of requests within 1 s
=== Reconciliation ===
* '''Service Availability (95%)''' matches the other Lift Wing SLOs. Client errors should return 4xx instead of 5xx first ({{phab|T439967}}).
* '''TPOT (90% within 100 ms)''' and '''Queue time (90% within 1 s)''' per model, based on the tests above.
1xnry2v5hmv5v9fcqzary4vb2i9u11h
2471960
2471958
2026-10-22T09:35:48Z
GKyziridis-WMF
39160
Fix troobleshooting
2471960
wikitext
text/x-wiki
{{Draft}}
''This SLO is a draft. Targets are based on the load tests on the 96GB GPU partitions ({{phab|T440307}}).''
== Organizational ==
=== Service ===
'''LiftWing LLM''' provides inference services for large language models hosted on [[Machine Learning/LiftWing|Lift Wing]] deployed in the llm namespace of the ml-serve Kubernetes cluster. Models are served using [https://docs.vllm.ai vLLM] through KServeLLMInferenceService and exposed publicly via the REST Gateway at <code>api.wikimedia.org</code>.
Services covered by this SLO:
* <code>llm-qwen3-14b</code>
* <code>llm-qwen38-27b</code>
See [[Machine Learning/LiftWing/Large Language Models]] for platform documentation.
=== Teams ===
* The Machine Learning (ML) team is responsible for the deployment, configuration, and maintenance of the LLM inference services.
* Clients include public API users (via the REST Gateway), Hummingbird Chat (previously LiftWing Studio), and internal services.
* The SRE team maintains the underlying ml-serve Kubernetes infrastructure, while the API Platform team is responsible for the REST Gateway.
== Architectural ==
=== Environmental dependencies ===
The service runs in the ml-serve-eqiad Kubernetes cluster on AMD MI300X GPUs. All the models run on 96GB partitions (ml-serve1013/1014).
* [[Kubernetes/Clusters#ml-serve]]: This is a ''hard dependency'' as these Kubernetes nodes are the backbone of [[Machine Learning/LiftWing|LiftWing]], the platform where this service is deployed on.
* Thanos [[Swift]] for the storage of model binaries: This is a soft dependency. We use swift as the [[Machine Learning/LiftWing#Model Storage|model-storage]] in LiftWing with an s3 compatible API to fetch a model to the pod during the initialization of a model service, so if Swift is not available the current services will not be affected but we may end up having issues with new releases in the case where a new version of the model needs to be deployed.
=== Service dependencies ===
'''Hard dependencies:'''
* ml-serve Kubernetes clusters (KServe, Istio ingress gateway)
* GPU nodes with available partitions
'''Soft dependencies:'''
* Thanos Swift — model weights
* WMF Docker Registry — container images
'''External traffic:'''
* REST Gateway (<code>api.wikimedia.org</code>). If unavailable, internal clients can still reach the services via the internal endpoint (<code>inference.svc.eqiad.wmnet</code>).
== Client-facing ==
=== Who are the service’s clients? ===
Public API users through <code>api.wikimedia.org</code> (LiftWingLLM rate limit), LiftWing Studio and internal services.
=== Request classes ===
All requests use the OpenAI-compatible endpoints exposed by vLLM (<code>/v1/chat/completions</code>, <code>/v1/completions</code>). Requests are treated as a single class. Streaming and non-streaming requests are both counted for availability. Latency SLIs are token-based (see below), so output length does not affect them.
== Service Level Indicators (SLIs) ==
A fixed end-to-end latency threshold doesn't work for generative models, because response time grows with the number of generated tokens. Latency is therefore split into two length-independent indicators:
* '''Availability SLI:''' the percentage of all requests that receive a non-error (non-5xx) response. This is measured server-side at the Istio ingress gateway (<code>istio_requests_total</code>).
* '''Queue time SLI:''' the percentage of requests that wait '''1 s''' or less in the vLLM queue before processing starts (<code>vllm:request_queue_time_seconds</code>). This measures if we have enough capacity.
* '''Time per output token (TPOT) SLI:''' the percentage of successful requests whose mean time per output token is within '''100 ms''' (<code>vllm:request_time_per_output_token_seconds</code>). This measures generation (streaming) speed.
TTFT is not used as an SLI because it depends on the prompt length, which is controlled by the client.
== Operational ==
=== Monitoring ===
LiftWing LLMs are monitored through several dashboards and alerts.
'''Dashboards'''
* Sloth SLO dashboards in Grafana (once the manifests are merged)
* [https://grafana.wikimedia.org/d/dpzzsnh/ml-infra ML infra dashboard] with the vLLM metrics (requests running/waiting, queue time, TTFT, TPOT)
'''Alerts'''
* [[Machine Learning/LiftWing/Alerts#LiftWingServiceErrorRate|LiftWing Service Error Rate]]: fires when the rate of 5xx responses of a service goes above the threshold.
* KubernetesDeploymentUnavailableReplicas: fires when a pod can't be scheduled or is not ready (e.g. no free GPU partition).
=== Troubleshooting ===
The ML team will be solely responsible for troubleshooting this service. Since most ML team engineers work similar hours, incidents occurring outside working hours may affect response times.
ML inference services are manually deployed rather than automatically deployed. New LLM configs are usually tested first on a copy of the isvc in the experimental namespace, which means most deployment issues are caught before reaching production.
Typical incidents involve pod crashes, pods stuck in Pending (no free GPU partition), GPU memory problems, or 5xx errors. When an isvc incident occurs, we examine relevant dashboards and logs to identify the root cause and determine whether it's a GPU/node issue, a networking issue or a model/inference service issue. See [[Machine Learning/LiftWing/Large Language Models]] for more details.
The time needed for troubleshooting varies from hours to days, primarily based on our familiarity with the issue. However, we typically decide on our response (such as a quick fix, restarting the service or moving it to another partition) within a few hours to immediately mitigate the issue and minimize error budget burn.
=== Deployment ===
LiftWing LLM inference services are deployed using Helmfile. Configuration changes (e.g. vLLM settings or resource allocation) only require updating and syncing the deployment chart.
Updating the vLLM version requires building a new vLLM image in production-images and updating the image version in the chart.
== Service level objectives ==
=== Realistic targets ===
We ran vllm-bench against a copy of each model in the experimental namespace (1 replica, 96GB partition, 1024 input / 128 output tokens). Results are in {{phab|T440307}}.
{| class="wikitable"
! Model !! MAX_NUM_SEQS / MAX_NUM_BATCHED_TOKENS !! Concurrent requests per replica !! TPOT p90 !! Queue time ≤ 1 s !! req/s
|-
| llm-qwen3-14b || 32 / 8192 || 32 || 32 ms || 100% || 7.3
|-
| llm-qwen38-27b || 16 / 8192 || 16 || 67 ms || 100% || 2.2
|}
Above these limits the extra requests wait in the queue, so the queue time target holds only while the load stays within capacity. For qwen38-27b, <code>MAX_NUM_SEQS=32</code> did not meet the TPOT target, so we lowered it to 16 (not in production yet).
* Availability: 95%
* TPOT: 90% of requests within 100 ms
* Queue time: 90% of requests within 1 s
=== Ideal targets ===
* Availability: 99%
* TPOT: 99% of requests within 100 ms
* Queue time: 99% of requests within 1 s
=== Reconciliation ===
* '''Service Availability (95%)''' matches the other Lift Wing SLOs. Client errors should return 4xx instead of 5xx first ({{phab|T439967}}).
* '''TPOT (90% within 100 ms)''' and '''Queue time (90% within 1 s)''' per model, based on the tests above.
jvlfosyg25vqtip7op0i5je6ckk06x2
2471961
2471960
2026-10-22T09:47:02Z
GKyziridis-WMF
39160
Incorporate all comments from reviewer from Deployment to reconciliation.
2471961
wikitext
text/x-wiki
{{Draft}}
''This SLO is a draft. Targets are based on the load tests on the 96GB GPU partitions ({{phab|T440307}}).''
== Organizational ==
=== Service ===
'''LiftWing LLM''' provides inference services for large language models hosted on [[Machine Learning/LiftWing|Lift Wing]] deployed in the llm namespace of the ml-serve Kubernetes cluster. Models are served using [https://docs.vllm.ai vLLM] through KServe LLM Inference-Service and exposed publicly via the REST Gateway at <code>api.wikimedia.org</code>.
Services covered by this SLO:
* <code>llm-qwen3-14b</code>
* <code>llm-qwen38-27b</code>
See [[Machine Learning/LiftWing/Large Language Models]] for platform documentation.
=== Teams ===
* The Machine Learning (ML) team is responsible for the deployment, configuration, and maintenance of the LLM inference services.
* Clients include public API users (via the REST Gateway), Hummingbird Chat (previously LiftWing Studio), and internal services.
* The SRE team maintains the underlying ml-serve Kubernetes infrastructure, while the API Platform team is responsible for the REST Gateway.
== Architectural ==
=== Environmental dependencies ===
The service runs in the ml-serve-eqiad Kubernetes cluster on AMD MI300X GPUs. All the models run on 96GB partitions (ml-serve1013/1014).
* [[Kubernetes/Clusters#ml-serve]]: This is a ''hard dependency'' as these Kubernetes nodes are the backbone of [[Machine Learning/LiftWing|LiftWing]], the platform where this service is deployed on.
* Thanos [[Swift]] for the storage of model binaries: This is a soft dependency. We use swift as the [[Machine Learning/LiftWing#Model Storage|model-storage]] in LiftWing with an s3 compatible API to fetch a model to the pod during the initialization of a model service, so if Swift is not available the current services will not be affected but we may end up having issues with new releases in the case where a new version of the model needs to be deployed.
=== Service dependencies ===
'''Hard dependencies:'''
* ml-serve Kubernetes clusters (KServe, Istio ingress gateway)
* GPU nodes with available partitions
'''Soft dependencies:'''
* Thanos Swift — model weights
* WMF Docker Registry — container images
'''External traffic:'''
* REST Gateway (<code>api.wikimedia.org</code>). If unavailable, internal clients can still reach the services via the internal endpoint (<code>inference.svc.eqiad.wmnet</code>).
== Client-facing ==
=== Who are the service’s clients? ===
Public API users through <code>api.wikimedia.org</code> (LiftWingLLM rate limit), LiftWing Studio and internal services.
=== Request classes ===
All requests use the OpenAI-compatible endpoints exposed by vLLM (<code>/v1/chat/completions</code>, <code>/v1/completions</code>). Requests are treated as a single class. Streaming and non-streaming requests are both counted for availability.
== Service Level Indicators (SLIs) ==
A fixed end-to-end latency threshold is challenging for generative models, as response time depends on the number of generated tokens.
We use two latency SLIs: '''queue time''' to measure request waiting time and '''TPOT''' to measure token generation speed.
* '''Availability SLI:''' the percentage of all requests that receive a non-error (non-5xx) response. This is measured server-side at the Istio ingress gateway (<code>istio_requests_total</code>).
* '''Queue time SLI:''' the percentage of requests that wait '''1 s''' or less in the vLLM queue before processing starts (<code>vllm:request_queue_time_seconds</code>). This measures if we have enough capacity.
* '''Time per output token (TPOT) SLI:''' the percentage of successful requests whose mean time per output token is within '''100 ms''' (<code>vllm:request_time_per_output_token_seconds</code>). This measures generation (streaming) speed.
'''Queue time''' is used instead of '''TTFT''' as the initial latency SLI because it more directly reflects serving capacity and overload. TTFT also includes prefill time, which depends heavily on client-controlled prompt length. We will continue monitoring TTFT as a user-facing latency metric.
== Operational ==
=== Monitoring ===
LiftWing LLMs are monitored through several dashboards and alerts.
'''Dashboards'''
* Sloth SLO dashboards in Grafana (once the manifests are merged)
* [https://grafana.wikimedia.org/d/dpzzsnh/ml-infra ML infra dashboard] with the vLLM metrics (requests running/waiting, queue time, TTFT, TPOT)
'''Alerts'''
* [[Machine Learning/LiftWing/Alerts#LiftWingServiceErrorRate|LiftWing Service Error Rate]]: fires when the rate of 5xx responses of a service goes above the threshold.
* KubernetesDeploymentUnavailableReplicas: fires when a pod can't be scheduled or is not ready (e.g. no free GPU partition).
=== Troubleshooting ===
The ML team will be solely responsible for troubleshooting this service. Since most ML team engineers work similar hours, incidents occurring outside working hours may affect response times.
ML inference services are manually deployed rather than automatically deployed. New LLM configs are usually tested first on a copy of the isvc in the experimental namespace, which means most deployment issues are caught before reaching production.
Typical incidents involve pod crashes, pods stuck in Pending (no free GPU partition), GPU memory problems, or 5xx errors. When an isvc incident occurs, we examine relevant dashboards and logs to identify the root cause and determine whether it's a GPU/node issue, a networking issue or a model/inference service issue. See [[Machine Learning/LiftWing/Large Language Models]] for more details.
The time needed for troubleshooting varies from hours to days, primarily based on our familiarity with the issue. However, we typically decide on our response (such as a quick fix, restarting the service or moving it to another partition) within a few hours to immediately mitigate the issue and minimize error budget burn.
=== Deployment ===
LiftWing LLM inference services are deployed using Helmfile. Configuration changes (e.g. vLLM settings or resource allocation) only require updating and syncing the deployment chart.
Updating the vLLM version requires building a new vLLM image in production-images and updating the image version in the chart.
== Service level objectives ==
=== Realistic targets ===
We ran vllm-bench against a copy of each model in the experimental namespace (1 replica, 96GB partition, 1024 input / 128 output tokens). Results are in {{phab|T440307}}.
{| class="wikitable"
! Model !! MAX_NUM_SEQS / MAX_NUM_BATCHED_TOKENS !! Concurrent requests per replica !! TPOT p90 !! Queue time ≤ 1 s !! req/s
|-
| llm-qwen3-14b || 32 / 8192 || 32 || 32 ms || 100% || 7.3
|-
| llm-qwen38-27b || 16 / 8192 || 16 || 67 ms || 100% || 2.2
|}
Above these limits the extra requests wait in the queue, so the queue time target holds only while the load stays within capacity. For qwen38-27b, <code>MAX_NUM_SEQS=32</code> did not meet the TPOT target, so we lowered it to 16 (not in production yet).
* Availability: 95%
* TPOT: 90% of requests within 100 ms
* Queue time: 90% of requests within 1 s
=== Ideal targets ===
These are initial estimates of the service quality we'd ideally like to provide to clients, subject to further discussion and validation.
* Availability: 99%
* TPOT: 99% of requests within 100 ms
* Queue time: 99% of requests within 1 s
=== Reconciliation ===
Given our current serving capacity and limited production traffic data, we propose starting with the realistic targets and revisiting them as we gather more operational experience.
Proposed initial SLOs:
* '''Availability:''' ≥ 95% of requests receive non-5xx responses. Client errors should return 4xx instead of 5xx first ({{phab|T439967}}).
* '''TPOT:''' ≥ 90% of successful requests have mean TPOT ≤100ms.
* '''Queue time:''' ≥ 90% of requests spend ≤1s in the queue.
7bajf79xn8k28az5bsczr19o6o5tfnr
2471963
2471961
2026-10-22T09:52:29Z
GKyziridis-WMF
39160
Remove the phab-task from reconciliation
2471963
wikitext
text/x-wiki
{{Draft}}
''This SLO is a draft. Targets are based on the load tests on the 96GB GPU partitions ({{phab|T440307}}).''
== Organizational ==
=== Service ===
'''LiftWing LLM''' provides inference services for large language models hosted on [[Machine Learning/LiftWing|Lift Wing]] deployed in the llm namespace of the ml-serve Kubernetes cluster. Models are served using [https://docs.vllm.ai vLLM] through KServe LLM Inference-Service and exposed publicly via the REST Gateway at <code>api.wikimedia.org</code>.
Services covered by this SLO:
* <code>llm-qwen3-14b</code>
* <code>llm-qwen38-27b</code>
See [[Machine Learning/LiftWing/Large Language Models]] for platform documentation.
=== Teams ===
* The Machine Learning (ML) team is responsible for the deployment, configuration, and maintenance of the LLM inference services.
* Clients include public API users (via the REST Gateway), Hummingbird Chat (previously LiftWing Studio), and internal services.
* The SRE team maintains the underlying ml-serve Kubernetes infrastructure, while the API Platform team is responsible for the REST Gateway.
== Architectural ==
=== Environmental dependencies ===
The service runs in the ml-serve-eqiad Kubernetes cluster on AMD MI300X GPUs. All the models run on 96GB partitions (ml-serve1013/1014).
* [[Kubernetes/Clusters#ml-serve]]: This is a ''hard dependency'' as these Kubernetes nodes are the backbone of [[Machine Learning/LiftWing|LiftWing]], the platform where this service is deployed on.
* Thanos [[Swift]] for the storage of model binaries: This is a soft dependency. We use swift as the [[Machine Learning/LiftWing#Model Storage|model-storage]] in LiftWing with an s3 compatible API to fetch a model to the pod during the initialization of a model service, so if Swift is not available the current services will not be affected but we may end up having issues with new releases in the case where a new version of the model needs to be deployed.
=== Service dependencies ===
'''Hard dependencies:'''
* ml-serve Kubernetes clusters (KServe, Istio ingress gateway)
* GPU nodes with available partitions
'''Soft dependencies:'''
* Thanos Swift — model weights
* WMF Docker Registry — container images
'''External traffic:'''
* REST Gateway (<code>api.wikimedia.org</code>). If unavailable, internal clients can still reach the services via the internal endpoint (<code>inference.svc.eqiad.wmnet</code>).
== Client-facing ==
=== Who are the service’s clients? ===
Public API users through <code>api.wikimedia.org</code> (LiftWingLLM rate limit), LiftWing Studio and internal services.
=== Request classes ===
All requests use the OpenAI-compatible endpoints exposed by vLLM (<code>/v1/chat/completions</code>, <code>/v1/completions</code>). Requests are treated as a single class. Streaming and non-streaming requests are both counted for availability.
== Service Level Indicators (SLIs) ==
A fixed end-to-end latency threshold is challenging for generative models, as response time depends on the number of generated tokens.
We use two latency SLIs: '''queue time''' to measure request waiting time and '''TPOT''' to measure token generation speed.
* '''Availability SLI:''' the percentage of all requests that receive a non-error (non-5xx) response. This is measured server-side at the Istio ingress gateway (<code>istio_requests_total</code>).
* '''Queue time SLI:''' the percentage of requests that wait '''1 s''' or less in the vLLM queue before processing starts (<code>vllm:request_queue_time_seconds</code>). This measures if we have enough capacity.
* '''Time per output token (TPOT) SLI:''' the percentage of successful requests whose mean time per output token is within '''100 ms''' (<code>vllm:request_time_per_output_token_seconds</code>). This measures generation (streaming) speed.
'''Queue time''' is used instead of '''TTFT''' as the initial latency SLI because it more directly reflects serving capacity and overload. TTFT also includes prefill time, which depends heavily on client-controlled prompt length. We will continue monitoring TTFT as a user-facing latency metric.
== Operational ==
=== Monitoring ===
LiftWing LLMs are monitored through several dashboards and alerts.
'''Dashboards'''
* Sloth SLO dashboards in Grafana (once the manifests are merged)
* [https://grafana.wikimedia.org/d/dpzzsnh/ml-infra ML infra dashboard] with the vLLM metrics (requests running/waiting, queue time, TTFT, TPOT)
'''Alerts'''
* [[Machine Learning/LiftWing/Alerts#LiftWingServiceErrorRate|LiftWing Service Error Rate]]: fires when the rate of 5xx responses of a service goes above the threshold.
* KubernetesDeploymentUnavailableReplicas: fires when a pod can't be scheduled or is not ready (e.g. no free GPU partition).
=== Troubleshooting ===
The ML team will be solely responsible for troubleshooting this service. Since most ML team engineers work similar hours, incidents occurring outside working hours may affect response times.
ML inference services are manually deployed rather than automatically deployed. New LLM configs are usually tested first on a copy of the isvc in the experimental namespace, which means most deployment issues are caught before reaching production.
Typical incidents involve pod crashes, pods stuck in Pending (no free GPU partition), GPU memory problems, or 5xx errors. When an isvc incident occurs, we examine relevant dashboards and logs to identify the root cause and determine whether it's a GPU/node issue, a networking issue or a model/inference service issue. See [[Machine Learning/LiftWing/Large Language Models]] for more details.
The time needed for troubleshooting varies from hours to days, primarily based on our familiarity with the issue. However, we typically decide on our response (such as a quick fix, restarting the service or moving it to another partition) within a few hours to immediately mitigate the issue and minimize error budget burn.
=== Deployment ===
LiftWing LLM inference services are deployed using Helmfile. Configuration changes (e.g. vLLM settings or resource allocation) only require updating and syncing the deployment chart.
Updating the vLLM version requires building a new vLLM image in production-images and updating the image version in the chart.
== Service level objectives ==
=== Realistic targets ===
We ran vllm-bench against a copy of each model in the experimental namespace (1 replica, 96GB partition, 1024 input / 128 output tokens). Results are in {{phab|T440307}}.
{| class="wikitable"
! Model !! MAX_NUM_SEQS / MAX_NUM_BATCHED_TOKENS !! Concurrent requests per replica !! TPOT p90 !! Queue time ≤ 1 s !! req/s
|-
| llm-qwen3-14b || 32 / 8192 || 32 || 32 ms || 100% || 7.3
|-
| llm-qwen38-27b || 16 / 8192 || 16 || 67 ms || 100% || 2.2
|}
Above these limits the extra requests wait in the queue, so the queue time target holds only while the load stays within capacity. For qwen38-27b, <code>MAX_NUM_SEQS=32</code> did not meet the TPOT target, so we lowered it to 16 (not in production yet).
* Availability: 95%
* TPOT: 90% of requests within 100 ms
* Queue time: 90% of requests within 1 s
=== Ideal targets ===
These are initial estimates of the service quality we'd ideally like to provide to clients, subject to further discussion and validation.
* Availability: 99%
* TPOT: 99% of requests within 100 ms
* Queue time: 99% of requests within 1 s
=== Reconciliation ===
Given our current serving capacity and limited production traffic data, we propose starting with the realistic targets and revisiting them as we gather more operational experience.
Proposed initial SLOs:
* '''Availability:''' ≥ 95% of requests receive non-5xx responses. Client errors should return 4xx instead of 5xx first.
* '''TPOT:''' ≥ 90% of successful requests have mean TPOT ≤100ms.
* '''Queue time:''' ≥ 90% of requests spend ≤1s in the queue.
ka94ua8uiome8lubnszsrjct4feit6q
2471966
2471963
2026-10-22T09:56:53Z
GKyziridis-WMF
39160
2471966
wikitext
text/x-wiki
{{Draft}}
''This SLO is a draft. Targets are based on the load tests on the 96GB GPU partitions ({{phab|T440307}}).''
== Organizational ==
=== Service ===
'''LiftWing LLM''' provides inference services for large language models hosted on [[Machine Learning/LiftWing|Lift Wing]] deployed in the llm namespace of the ml-serve Kubernetes cluster. Models are served using [https://docs.vllm.ai vLLM] through KServe LLM Inference-Service and exposed publicly via the REST Gateway at <code>api.wikimedia.org</code>.
Services covered by this SLO:
* <code>llm-qwen3-14b</code>
* <code>llm-qwen38-27b</code>
See [[Machine Learning/LiftWing/Large Language Models]] for platform documentation.
=== Teams ===
* The Machine Learning (ML) team is responsible for the deployment, configuration, and maintenance of the LLM inference services.
* Clients include public API users (via the REST Gateway), Hummingbird Chat (previously LiftWing Studio), and internal services.
* The SRE team maintains the underlying ml-serve Kubernetes infrastructure, while the API Platform team is responsible for the REST Gateway.
== Architectural ==
=== Environmental dependencies ===
The service runs in the ml-serve-eqiad Kubernetes cluster on AMD MI300X GPUs. All the models run on 96GB partitions (ml-serve1013/1014).
* [[Kubernetes/Clusters#ml-serve]]: This is a ''hard dependency'' as these Kubernetes nodes are the backbone of [[Machine Learning/LiftWing|LiftWing]], the platform where this service is deployed on.
* Thanos [[Swift]] for the storage of model binaries: This is a soft dependency. We use swift as the [[Machine Learning/LiftWing#Model Storage|model-storage]] in LiftWing with an s3 compatible API to fetch a model to the pod during the initialization of a model service, so if Swift is not available the current services will not be affected but we may end up having issues with new releases in the case where a new version of the model needs to be deployed.
=== Service dependencies ===
'''Hard dependencies:'''
* ml-serve Kubernetes clusters (KServe, Istio ingress gateway)
* GPU nodes with available partitions
'''Soft dependencies:'''
* Thanos Swift — model weights
* WMF Docker Registry — container images
'''External traffic:'''
* REST Gateway (<code>api.wikimedia.org</code>). If unavailable, internal clients can still reach the services via the internal endpoint (<code>inference.svc.eqiad.wmnet</code>).
== Client-facing ==
=== Who are the service’s clients? ===
Public API users through <code>api.wikimedia.org</code> (LiftWingLLM rate limit), LiftWing Studio and internal services.
=== Request classes ===
All requests use the OpenAI-compatible endpoints exposed by vLLM (<code>/v1/chat/completions</code>, <code>/v1/completions</code>). Requests are treated as a single class. Streaming and non-streaming requests are both counted for availability.
== Service Level Indicators (SLIs) ==
A fixed end-to-end latency threshold is challenging for generative models, as response time depends on the number of generated tokens.
We use two latency SLIs: '''queue time''' to measure request waiting time and '''TPOT''' to measure token generation speed.
* '''Availability SLI:''' the percentage of all requests that receive a non-error (non-5xx) response. This is measured server-side at the Istio ingress gateway (<code>istio_requests_total</code>).
* '''Queue time SLI:''' the percentage of requests that wait '''1 s''' or less in the vLLM queue before processing starts (<code>vllm:request_queue_time_seconds</code>). This measures if we have enough capacity.
* '''Time per output token (TPOT) SLI:''' the percentage of successful requests whose mean time per output token is within '''100 ms''' (<code>vllm:request_time_per_output_token_seconds</code>). This measures generation (streaming) speed.
'''Queue time''' is used instead of '''TTFT''' as the initial latency SLI because it more directly reflects serving capacity and overload. TTFT also includes prefill time, which depends heavily on client-controlled prompt length. We will continue monitoring TTFT as a user-facing latency metric.
== Operational ==
=== Monitoring ===
LiftWing LLMs are monitored through several dashboards and alerts.
'''Dashboards'''
* Sloth SLO dashboards in Grafana (once the manifests are merged)
* [https://grafana.wikimedia.org/d/dpzzsnh/ml-infra ML infra dashboard] with the vLLM metrics (requests running/waiting, queue time, TTFT, TPOT)
'''Alerts'''
* [[Machine Learning/LiftWing/Alerts#LiftWingServiceErrorRate|LiftWing Service Error Rate]]: fires when the rate of 5xx responses of a service goes above the threshold.
* KubernetesDeploymentUnavailableReplicas: fires when a pod can't be scheduled or is not ready (e.g. no free GPU partition).
=== Troubleshooting ===
The ML team will be solely responsible for troubleshooting this service. Since most ML team engineers work similar hours, incidents occurring outside working hours may affect response times.
ML inference services are manually deployed rather than automatically deployed. New LLM configs are usually tested first on a copy of the isvc in the experimental namespace, which means most deployment issues are caught before reaching production.
Typical incidents involve pod crashes, pods stuck in Pending (no free GPU partition), GPU memory problems, or 5xx errors. When an isvc incident occurs, we examine relevant dashboards and logs to identify the root cause and determine whether it's a GPU/node issue, a networking issue or a model/inference service issue. See [[Machine Learning/LiftWing/Large Language Models]] for more details.
The time needed for troubleshooting varies from hours to days, primarily based on our familiarity with the issue. However, we typically decide on our response (such as a quick fix, restarting the service or moving it to another partition) within a few hours to immediately mitigate the issue and minimize error budget burn.
=== Deployment ===
LiftWing LLM inference services are deployed using Helmfile. Configuration changes (e.g. vLLM settings or resource allocation) only require updating and syncing the deployment chart.
Updating the vLLM version requires building a new vLLM image in production-images and updating the image version in the chart.
== Service level objectives ==
=== Realistic targets ===
We ran vllm-bench against a copy of each model in the experimental namespace (1 replica, 96GB partition, 1024 input / 128 output tokens). Results are in {{phab|T440307}}.
{| class="wikitable"
! Model !! MAX_NUM_SEQS / MAX_NUM_BATCHED_TOKENS !! Concurrent requests per replica !! TPOT p90 !! Queue time ≤ 1 s !! req/s
|-
| llm-qwen3-14b || 32 / 8192 || 32 || 32 ms || 100% || 7.3
|-
| llm-qwen38-27b || 16 / 8192 || 16 || 67 ms || 100% || 2.2
|}
Above these limits the extra requests wait in the queue, so the queue time target holds only while the load stays within capacity. For qwen38-27b, <code>MAX_NUM_SEQS=32</code> did not meet the TPOT target, so we lowered it to 16 (not in production yet).
* Availability: 95%
* TPOT: 90% of requests within 100 ms
* Queue time: 90% of requests within 1 s
=== Ideal targets ===
These are initial estimates of the service quality we'd ideally like to provide to clients, subject to further discussion and validation.
* Availability: 99%
* TPOT: 99% of requests within 100 ms
* Queue time: 99% of requests within 1 s
=== Reconciliation ===
Given our current serving capacity and limited production traffic data, we propose starting with the realistic targets and revisiting them as we gather more operational experience.
Proposed initial SLOs:
* '''Availability:''' ≥ 95% of requests receive non-5xx responses.
* '''TPOT:''' ≥ 90% of successful requests have mean TPOT ≤100ms.
* '''Queue time:''' ≥ 90% of requests spend ≤1s in the queue.
hrt48x43fvrjb9h5k4dyos163baljvo
SLO/JinaEmbeddings Model
0
460814
2471964
2467701
2026-10-22T09:54:42Z
OKarakaya-WMF
40765
slo link
2471964
wikitext
text/x-wiki
Status: '''[[SLO/Runbook#Drafting|draft]]'''
== Organizational ==
=== Service ===
* JinaEmbeddings is a microservice hosted in [[Machine Learning/LiftWing|Lift Wing]] running in the ML-Serve Kubernetes clusters. Like most Machine Learning models in Lift Wing, it is hosted as an [[Machine Learning/LiftWing/Inference Services|Inference Service]] (isvc), named <code>jina-embeddings</code> in the <code>llm</code> namespace.
* The service serves the [https://huggingface.co/jinaai/jina-embeddings-v5-text-nano-retrieval jina-embeddings-v5-text-nano-retrieval] model. It is a small (239M parameters) multilingual text embedding model based on EuroBERT. Given one or more pieces of text, it returns one 768-dimensional embedding vector per text. Texts with similar meaning get vectors that are close to each other, which makes it possible to search by meaning rather than by exact words.
* The service is available through the internal endpoint <code><nowiki>https://inference.svc.eqiad.wmnet:30443/v1/models/jina-embeddings:predict</nowiki></code> with the <code>Host: jina-embeddings.llm.wikimedia.org</code> header. The service is internal only; it is not exposed through the [[API Gateway]].
* Example request:
<syntaxhighlight lang="bash">
curl "https://inference.svc.eqiad.wmnet:30443/v1/models/jina-embeddings:predict" \
-X POST \
-d '{"input": ["hello world"]}' \
-H "Host: jina-embeddings.llm.wikimedia.org" \
-H "Content-Type: application/json"
</syntaxhighlight>
* vLLM has no native support for this model architecture, so the service runs with the Hugging Face transformers / sentence-transformers backend (SDPA attention, bf16), not vLLM. This is a scoped exception to the vLLM consolidation ([[phab:T418976|T418976]]); the reasons are in [[phab:T432717|T432717]].
* It replaced the earlier <code>qwen3-embedding</code> service as the embedding model for semantic search ([[phab:T432717|T432717]], [[phab:T436527|T436527]]).
=== Teams ===
* The Machine Learning (ML) team is solely responsible for the development, deployment, and maintenance of the JinaEmbeddings Inference Service.
* The Search Platform team is the primary client of the service. They use it for semantic search on Wikipedia (see [[phab:T436527|T436527]]).
== Architectural ==
=== Environmental dependencies ===
* [[Kubernetes/Clusters#ml-serve|ml-serve-eqiad]]: this is a ''hard dependency''. These Kubernetes nodes are the backbone of [[Machine Learning/LiftWing|Lift Wing]], the platform where this service is deployed.
** The service runs '''only in eqiad''', because the Lift Wing GPUs are only in ml-serve-eqiad (see [[Machine Learning/LiftWing/Large Language Models]]).
** The service needs a GPU. It runs on one 24GB AMD MI300X GPU partition, pinned to the GPU node ml-serve1015 (see [[Machine Learning/AMD GPU]]). We are able to scale to more GPUs.
* Thanos [[Swift]] for the storage of model binaries: this is a ''soft dependency''. Lift Wing uses Swift as [[Machine Learning/LiftWing#Model Storage|model storage]], with an S3-compatible API, to fetch the model into the pod when the service starts (<code>s3://wmf-ml-models/jina-embeddings/</code>).
* WMF Docker Registry ([[SLO/Docker-registry|SLO]]) to store and fetch the Docker images of the services on the cluster. This is also a ''soft dependency'': running services operate normally if the registry is not available, and restarts can use images cached on the node.
So Swift and the WMF Docker Registry are only needed when the service (re)starts.
=== Service dependencies ===
* The service has no runtime dependencies on other services. It does not call any other service to answer a request.
== Client-facing ==
=== Clients ===
The main client is '''semantic search''', run by the Search Platform team:
* The OpenSearch semantic-search clusters (in eqiad and codfw) call the service through an ml-commons remote connector (<code>liftwing_jina</code>). At search time, OpenSearch sends the user's query text to the service, gets its embedding vector, and uses it in search.
* The service is therefore on the request path of user searches: if it is slow or down, semantic search results are slow or fail.
The service can also be used by other internal developers who need text embeddings.
=== Request Classes ===
There is one request class: <code>POST /v1/models/jina-embeddings:predict</code> with a JSON body <code>{"input": [<list of strings>]}</code>. Semantic search sends a single short query text per request.
== Service Level Indicators (SLIs) ==
* '''Latency SLI, acceptable fraction:''' The percentage of all successful requests (2xx) that complete within 250 milliseconds, measured at the server side (Istio ingress gateway).
* '''Service availability SLI:''' The percentage of all requests receiving a non-error response (non 5xx), measured at the server side (Istio ingress gateway).
== Operational ==
=== Monitoring ===
JinaEmbeddings is monitored through several dashboards and alerts.
'''Dashboards'''
* Inference Services (kserve container resources, preprocess latency, predict latency): [https://grafana.wikimedia.org/goto/s5mm2g?orgId=default dashboard]
* Istio-sidecar (top 20 service calls, traffic, response codes, latency/bytes): [https://grafana.wikimedia.org/goto/sbrv8f?orgId=default dashboard] Pick jina-embeddings as the backend.
* ML infrastructure (GPU use and memory per node, including ml-serve1015): [https://grafana.wikimedia.org/d/dpzzsnh/ml-infra?orgId=1&dtab=Resource-Usage&var-cluster=000000006&from=now-24h&to=now&timezone=utc dashboard]
* Sloth SLO: [https://grafana.wikimedia.org/goto/ss6tck?orgId=default dashboard]
'''Alerts'''
* [[Machine Learning/LiftWing/Alerts#Inference Services High Memory Usage - InfServiceHighMemoryUsage alert|Inference Services High Memory Usage]] – Triggers when memory use of the kserve-container exceeds 90% of the container limit for more than 5 minutes.
* [[Machine Learning/LiftWing/Alerts#LiftWingServiceErrorRate|LiftWing Service Error Rate]] – Triggers when the percentage of error status codes (5xx and 0) from an Istio service exceeds the defined threshold.
* Sloth SLO burn-rate alerts (<code>SLOBudgetBurn</code>) for both SLOs, see [[#Service Level Objectives|below]].
=== Troubleshooting ===
The ML team is solely responsible for troubleshooting this service, and no additional support from SREs is needed. Incidents are triaged by the ML team member on ops rotation during EU working hours. Incidents that occur outside working hours (nights, weekends) will be handled on the next working day, which can mean several hours of downtime.
ML inference services are deployed manually, not automatically. Most deployment issues are caught on the staging isvc (<code>jina-embeddings-staging</code>) before they reach production.
Typical incidents are service crashes, unresponsive pods, GPU memory problems or 5xx errors. When an incident occurs, we look at the dashboards and logs to find the root cause, and decide whether it is a networking issue, a GPU/node issue or a model server issue.
The time needed for troubleshooting varies from hours to days, depending on how familiar the issue is. We typically decide on a response (a quick fix, a restart, a rollback) within a few hours to mitigate the issue and limit error budget burn.
=== Deployment ===
JinaEmbeddings is deployed on Kubernetes with helmfile (<code>helmfile.d/ml-services/llm</code> in [[gitiles:operations/deployment-charts|deployment-charts]]). Changes to the [[gitiles:machinelearning/liftwing/inference-services|inference services]] code involve two steps: 1) CI builds a new production image, and 2) the deployment chart is updated with the new image and synced to update the isvc.
For service-level configuration changes (environment variables, resources, etc.), only a helmfile change and sync are needed.
A deployment, including code review, patch merge, helmfile update and sync, typically takes less than 1 hour. Since there is a single replica, a deployment causes a short interruption while the new pod starts and loads the model.
== Service Level Objectives ==
=== Realistic targets ===
'''Latency:''' We load-tested the service in [[phab:T439245|T439245]] (2026-10-12) with locust from stat1010. The test isvc had the same image, configuration and resources as production (4 CPU, 16Gi, one GPU partition) and ran on ml-serve1015 (24GB MI300X partitions), the same node as production. Inputs were short, query-like texts (~78 characters on average), without the query prefix. Each run lasted 5 minutes.
{| class="wikitable"
|+ 1 replica
! Req/s !! p50 (ms) !! p95 (ms) !! p99 (ms) !! p99.9 (ms) !! Failures
|-
| 30 || 12 || 18 || 22 || 230 || 0
|-
| 74 || 13 || 25 || 33 || 240 || 0
|-
| 120 || 30 || 50 || 82 || 290 || 0
|-
| 123 || 110 || 130 || 150 || 390 || 2 (502)
|}
{| class="wikitable"
|+ 2 replicas
! Req/s !! p50 (ms) !! p95 (ms) !! p99 (ms) !! p99.9 (ms) !! Failures
|-
| 30 || 13 || 17 || 22 || 230 || 0
|-
| 76 || 13 || 21 || 27 || 230 || 0
|-
| 145 || 14 || 28 || 42 || 250 || 0
|-
| 233 || 32 || 60 || 77 || 280 || 1 (502)
|}
Plots of latency percentiles against throughput for both setups: [[phab:T439245#12422056|T439245#12422056]].
Key results:
* One replica saturates at about '''120 req/s'''. Above that, throughput stops growing and latency rises quickly (p50 goes from 30 ms to 110 ms).
* Two replicas handle at least '''233 req/s''' (about 1.9× one replica) with p99 under 80 ms, and had not saturated at the highest load tested.
* Up to saturation, p95 and p99 stay far below 250 ms.
* p99.9 is about 230–290 ms at every load level, also at 30 req/s. This is a small, constant tail (about 1 request in 1,000), not an effect of load. It does not affect a 95% target.
* The results on the 24GB partition match the earlier production test on a larger partition during the initial deployment ([[phab:T432717|T432717]]: p95 50 ms at 120 req/s). The smaller partition does not make the service slower.
* On a 24GB partition the service needs <code>TORCH_BLAS_PREFER_HIPBLASLT=0</code>. Without it, requests took ~5 s ([[phab:T432717|T432717]]).
Based on this, a realistic target for the latency SLI is '''95% of successful requests within 250 ms'''. At up to 120 req/s on one replica, p95 is 50 ms or less, so 250 ms leaves a large margin for load peaks.
'''Availability:''' A realistic target for service availability is '''95%''', the same as for [[SLO/ToneCheck_Model|ToneCheck]] and other Lift Wing services. The service is only troubleshot during EU working hours, so an outage can last for hours. 95% allows up to 5% downtime over a 90-day window: about 108 hours, or roughly 36 hours per month.
=== Ideal targets ===
Since semantic search is on the request path of user searches, the ideal targets would be higher:
* Availability: 99.9%, which would mean most problems are fixed in under 2 hours. This would need around-the-clock support and more than one replica, ideally in both datacenters.
* Latency: 99% of successful requests within 250 ms.
=== Reconciliation ===
* '''Latency SLO, acceptable fraction:''' 95% of all successful requests (2xx) complete within 250 milliseconds, measured at the server side.
* '''Service Availability SLO:''' 95% of all requests receive a non-error response (non 5xx).
iomvkuub9idvzims50o423fjhrro6yw
SLO/CoPE-B Model
0
460832
2471965
2471822
2026-10-22T09:56:08Z
OKarakaya-WMF
40765
add model
2471965
wikitext
text/x-wiki
Status: '''[[SLO/Runbook#Drafting|draft]]'''
== Organizational ==
=== Service ===
* CoPE-B is a [[Machine Learning/LiftWing|Lift Wing]] [[Machine Learning/LiftWing/Inference Services|Inference Service]] named <code>cope-b-a4b</code> in the <code>llm</code> namespace ([[phab:T427497|T427497]]).
* The service serves the [https://huggingface.co/zentropi-ai/cope-b-a4b cope-b-a4b] model.
* Given a piece of content and a policy, it returns whether the content violates the policy.
* It runs on [https://docs.vllm.ai/ vLLM] in bf16, with a maximum context length of 16,384 tokens.
* Internal endpoint: <code><nowiki>https://inference.svc.eqiad.wmnet:30443/v1/models/cope-b-a4b:predict</nowiki></code> with the <code>Host: cope-b-a4b.llm.wikimedia.org</code> header.
* Example request (placeholder policy, not a real PSI policy):
<syntaxhighlight lang="bash">
curl "https://inference.svc.eqiad.wmnet:30443/v1/models/cope-b-a4b:predict" \
-X POST \
-d '{"content": "Buy cheap watches at example.com!!!", "policy": "Content violates this policy if it promotes a commercial product or service."}' \
-H "Host: cope-b-a4b.llm.wikimedia.org" \
-H "Content-Type: application/json"
</syntaxhighlight>
* Response: <code>{"violation": 0|1, "p_violation": float, "p_safe": float}</code>.
* The policies are owned by the Product Safety and Integrity (PSI) team and are not public.
=== Teams ===
* The Machine Learning (ML) team is solely responsible for the development, deployment, and maintenance of the CoPE-B Inference Service.
* The Product Safety and Integrity (PSI) team is the primary client of the service.
== Architectural ==
=== Environmental dependencies ===
* [[Kubernetes/Clusters#ml-serve|ml-serve-eqiad]]: this is a ''hard dependency''. These Kubernetes nodes are the backbone of [[Machine Learning/LiftWing|Lift Wing]], the platform where this service is deployed.
** The service runs '''only in eqiad''', because the Lift Wing GPUs are only in ml-serve-eqiad (see [[Machine Learning/LiftWing/Large Language Models]]).
** The service needs a GPU. It runs on one 96GB AMD MI300X GPU partition, pinned to the GPU nodes ml-serve1013 and ml-serve1014 ([[phab:T439555|T439555]], see [[Machine Learning/AMD GPU]]). It runs as a single replica. We are able to scale to more GPUs.
* Thanos [[Swift]] for the storage of model binaries: this is a ''soft dependency''. Lift Wing uses Swift as [[Machine Learning/LiftWing#Model Storage|model storage]], with an S3-compatible API, to fetch the model into the pod when the service starts (<code>s3://wmf-ml-models/llm/cope-b-a4b/</code>).
* WMF Docker Registry ([[SLO/Docker-registry|SLO]]) to store and fetch the Docker images of the services on the cluster. This is also a ''soft dependency'': running services operate normally if the registry is not available, and restarts can use images cached on the node.
So Swift and the WMF Docker Registry are only needed when the service (re)starts.
=== Service dependencies ===
* The service has no runtime dependencies on other services. It does not call any other service to answer a request.
== Client-facing ==
=== Clients ===
The main client is the PSI team's policy-violation detection.
The service can also be used by other internal developers who need policy-violation detection.
=== Request Classes ===
There is one request class: <code>POST /v1/models/cope-b-a4b:predict</code> with the content and the policy in the JSON body.
== Service Level Indicators (SLIs) ==
* '''Latency SLI, acceptable fraction:''' The percentage of all successful requests (2xx) that complete within 2500 milliseconds, measured at the server side (Istio ingress gateway).
* '''Service availability SLI:''' The percentage of all requests receiving a non-error response (non 5xx), measured at the server side (Istio ingress gateway).
== Operational ==
=== Monitoring ===
CoPE-B is monitored through several dashboards and alerts.
'''Dashboards'''
* Inference Services (kserve container resources, preprocess latency, predict latency): [https://grafana.wikimedia.org/goto/s2wgsn?orgId=default dashboard]
* Istio-sidecar (top 20 service calls, traffic, response codes, latency/bytes): [https://grafana.wikimedia.org/goto/szsrnt?orgId=default dashboard] Pick cope-b as the backend.
* ML infrastructure (GPU use and memory per node, including ml-serve1013 and ml-serve1014): [https://grafana.wikimedia.org/d/dpzzsnh/ml-infra?orgId=1&dtab=Resource-Usage&var-cluster=000000006&from=now-24h&to=now&timezone=utc dashboard]
'''Alerts'''
* [[Machine Learning/LiftWing/Alerts#Inference Services High Memory Usage - InfServiceHighMemoryUsage alert|Inference Services High Memory Usage]] – Triggers when memory use of the kserve-container exceeds 90% of the container limit for more than 5 minutes.
* [[Machine Learning/LiftWing/Alerts#LiftWingServiceErrorRate|LiftWing Service Error Rate]] – Triggers when the percentage of error status codes (5xx and 0) from an Istio service exceeds the defined threshold.
* Sloth SLO burn-rate alerts (<code>SLOBudgetBurn</code>) for both SLOs, see [[#Service Level Objectives|below]].
=== Troubleshooting ===
The ML team is solely responsible for troubleshooting this service, and no additional support from SREs is needed. Incidents are triaged by the ML team member on ops rotation during EU working hours. Incidents that occur outside working hours (nights, weekends) will be handled on the next working day, which can mean several hours of downtime.
ML inference services are deployed manually, not automatically. Most deployment issues are caught in staging before they reach production.
Typical incidents are service crashes, unresponsive pods, GPU memory problems, vLLM engine errors or 5xx errors. When an incident occurs, we look at the dashboards and logs to find the root cause, and decide whether it is a networking issue, a GPU/node issue or a model server issue.
The time needed for troubleshooting varies from hours to days, depending on how familiar the issue is. We typically decide on a response (a quick fix, a restart, a rollback) within a few hours to mitigate the issue and limit error budget burn.
=== Deployment ===
CoPE-B is deployed on Kubernetes with helmfile (<code>helmfile.d/ml-services/llm</code> in [[gitiles:operations/deployment-charts|deployment-charts]]). Changes to the [[gitiles:machinelearning/liftwing/inference-services|inference services]] code involve two steps: 1) CI builds a new production image, and 2) the deployment chart is updated with the new image and synced to update the isvc.
For service-level configuration changes (environment variables, resources, etc.), only a helmfile change and sync are needed.
A deployment, including code review, patch merge, helmfile update and sync, typically takes less than 1 hour. Since there is a single replica, a deployment causes a short interruption while the new pod starts and loads the model.
== Service Level Objectives ==
=== Realistic targets ===
'''Latency:''' We load-tested the service in [[phab:T440311|T440311]] (2026-10-16 and 2026-10-19) with locust from stat1010, using the [[gerrit:1357220|locust test for cope-b-a4b]]. The test isvc had the same image, configuration and resources as production, and ran on the 96GB MI300X partitions. Inputs had the same mean prompt length as production (about 2,500 tokens). Each run lasted 5 minutes.
Latency columns are in milliseconds. The "Within 2 s" column counts requests that completed within 2000 ms. This is stricter than the 2500 ms SLO threshold.
{| class="wikitable"
|+ 1 replica (production setup)
! Users !! Req/s !! Avg !! p50 !! p95 !! p99 !! Max !! Within 2 s !! Failures
|-
| 2 || 6.80 || 293 || 300 || 320 || 430 || 522 || 100% || 0
|-
| 5 || 6.78 || 735 || 740 || 780 || 800 || 976 || 100% || 0
|-
| 10 || 6.79 || 1466 || 1500 || 1500 || 1700 || 1983 || 100% || 0
|}
{| class="wikitable"
|+ 2 replicas
! Users !! Req/s !! Avg !! p50 !! p95 !! p99 !! Max !! Within 2 s !! Failures
|-
| 2 || 10.07 || 198 || 160 || 300 || 340 || 3096 || 99.87% || 0
|-
| 5 || 12.75 || 391 || 400 || 710 || 750 || 1111 || 100% || 0
|-
| 10 || 13.72 || 727 || 720 || 1200 || 1400 || 2954 || 99.90% || 0
|}
Based on this, a realistic target for the latency SLI is '''90% of successful requests within 2500 ms'''. This matches [[SLO/ToneCheck_Model|ToneCheck]] and leaves a large margin for load peaks.
'''Availability:''' A realistic target for service availability is '''95%''', the same as for [[SLO/ToneCheck_Model|ToneCheck]], [[SLO/JinaEmbeddings_Model|JinaEmbeddings]] and other Lift Wing services. The service is only troubleshot during EU working hours, so an outage can last for hours. 95% allows up to 5% downtime over a 90-day window: about 108 hours, or roughly 36 hours per month.
=== Ideal targets ===
* Availability: 99.9%, which would mean most problems are fixed in under 2 hours. This would need around-the-clock support and more than one replica.
* Latency: 99% of successful requests within 2500 ms. The load tests show this is reachable at current traffic.
=== Reconciliation ===
The targets below were agreed with the PSI team ([[phab:T440311#12430574|T440311#12430574]]).
* '''Latency SLO, acceptable fraction:''' 90% of all successful requests (2xx) complete within 2500 milliseconds, measured at the server side.
* '''Service Availability SLO:''' 95% of all requests receive a non-error response (non 5xx).
bdo7gjphr4x3u4zvetdty45l1ic29m8
Incidents/2026-10-21 PHP security update
0
460839
2471860
2471806
2026-10-21T17:06:26Z
Saper
135
where the real action is
2471860
wikitext
text/x-wiki
{{See also|Incidents/2026-10-21_PHP_security_update/Community}}
{{irdoc|status=draft}}
== Summary ==
{{Incident scorecard
| task =
| paged-num =
| responders-num =
| coordinators =
| start =
| end =
}}
…
<!-- Reminder: No private information on this page! --><mark>Summary of what happened, in one or two paragraphs. Avoid assuming deep knowledge of the systems here, and try to differentiate between proximate causes and root causes.</mark>
{{TOC|align=right}}
==Timeline==
<mark>Write a step by step outline of what happened to cause the incident, and how it was remedied. Include the lead-up to the incident, and any epilogue.</mark>
<mark>Consider including a graphs of the error rate or other surrogate.</mark>
<mark>Link to a specific offset in SAL using the SAL tool at https://sal.toolforge.org/ ([https://sal.toolforge.org/production?q=synchronized&d=2012-01-01 example])</mark>
''All times in UTC.''
*00:00 (TODO) '''OUTAGE BEGINS'''
*00:04 (Something something)
*00:06 (Voila) '''OUTAGE ENDS'''
*00:15 (post-outage cleanup finished)
<!-- Reminder: No private information on this page! -->
<mark>TODO: Clearly indicate when the user-visible outage began and ended.</mark>
==Detection==
<mark>Write how the issue was first detected. Was automated monitoring first to detect it? Or a human reporting an error?</mark>
<mark>Copy the relevant alerts that fired in this section.</mark>
<mark>Did the appropriate alert(s) fire? Was the alert volume manageable? Did they point to the problem with as much accuracy as possible?</mark>
<mark>TODO: If human only, an actionable should probably be to "add alerting".</mark>
==Conclusions ==
<mark>OPTIONAL: General conclusions (bullet points or narrative)</mark>
===What went well?===
* …
<mark>OPTIONAL: (Use bullet points) for example: automated monitoring detected the incident, outage was root-caused quickly, etc</mark>
===What went poorly?===
* …
<mark>OPTIONAL: (Use bullet points) for example: documentation on the affected service was unhelpful, communication difficulties, etc</mark>
===Where did we get lucky?===
* …
<mark>OPTIONAL: (Use bullet points) for example: user's error report was exceptionally detailed, incident occurred when the most people were online to assist, etc</mark>
==Links to relevant documentation==
* …
<mark>Add links to information that someone responding to this alert should have (runbook, plus supporting docs). If that documentation does not exist, add an action item to create it.</mark>
==Actionables==
* …
<mark>Create a list of action items that will help prevent this from happening again as much as possible. Link to or create a Phabricator task for every step.</mark>
<mark>Add the [[phab:project/view/4758/|#Sustainability (Incident Followup)]] and the [[phab:project/profile/4626/|#SRE-OnFire]] Phabricator tag to these tasks.</mark>
==Scorecard==
{| class="wikitable"
|+[[Incident Scorecard|Incident Engagement ScoreCard]]
!
!Question
!Answer
(yes/no)
!Notes
|-
! rowspan="5" |People
|Were the people responding to this incident sufficiently different than the previous five incidents?
|
|
|-
|Were the people who responded prepared enough to respond effectively
|
|
|-
|Were fewer than five people paged?
|
|
|-
|Were pages routed to the correct sub-team(s)?
|
|
|-
|Were pages routed to online (business hours) engineers? ''Answer “no” if engineers were paged after business hours.''
|
|
|-
! rowspan="5" |Process
|Was the "Incident status" section atop the Google Doc kept up-to-date during the incident?
|
|
|-
| Was a public wikimediastatus.net entry created?
|
|
|-
|Is there a phabricator task for the incident?
|
|
|-
|Are the documented action items assigned?
|
|
|-
|Is this incident sufficiently different from earlier incidents so as not to be a repeat occurrence?
|
|
|-
! rowspan="5" |Tooling
|To the best of your knowledge was the open task queue free of any tasks that would have prevented this incident? ''Answer “no” if there are open tasks that would prevent this incident or make mitigation easier if implemented.''
|
|
|-
| Were the people responding able to communicate effectively during the incident with the existing tooling?
|
|
|-
|Did existing monitoring notify the initial responders?
|
|
|-
|Were the engineering tools that were to be used during the incident, available and in service?
|
|
|-
|Were the steps taken to mitigate guided by an existing runbook?
|
|
|-
! colspan="2" align="right" |Total score (count of all “yes” answers above)
|
|
|}
63r1sxos1vmqkbgoq1l5drqk8x7ksw4
Incidents/2026-10-21 PHP security update/Community
0
460840
2471831
2471826
2026-10-21T12:47:05Z
Novem Linguae
23682
doc.wikimedia.org
2471831
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php#2026-10-20-1 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
If you are operating MediaWiki or other PHP deployments, consider what you can tolerate taking offline until the patch is released. We are taking certain services down as a precautionary measure. Either way, we recommend you immediately patch your PHP deployments with the security update once available.
Currently, the following services are offline:
* Phabricator
* Gerrit CI runners
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
* translatewiki.net
* all [https://www.mediawiki.org/wiki/Wikibase/Wikibase.cloud/de wikibase cloud] instances. This includes all *.wikibase.cloud as well as any instances with a custom domain.
* [https://doc.wikimedia.org doc.wikimedia.org]
Thank you for your understanding.
oj1cdryffesx60c80v3fxw9vj3m5vs0
2471832
2471831
2026-10-21T12:53:41Z
BPiovesan-WMF
56466
updating list of offline services
2471832
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php#2026-10-20-1 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
If you are operating MediaWiki or other PHP deployments, consider what you can tolerate taking offline until the patch is released. We are taking certain services down as a precautionary measure. Either way, we recommend you immediately patch your PHP deployments with the security update once available.
Currently, the following services are offline:
* Phabricator
* Gerrit CI runners
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
* translatewiki.net
* all [https://www.mediawiki.org/wiki/Wikibase/Wikibase.cloud/de wikibase cloud] instances. This includes all *.wikibase.cloud as well as any instances with a custom domain.
* [[wmdoc:|doc.wikimedia.org]]
Thank you for your understanding.
7h2p696xlrvnhcza04pdfq7d18e3yns
2471836
2471832
2026-10-21T13:45:08Z
RSilvola-WMF
49112
Updating the recommendation for operators to update
2471836
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
If you are operating MediaWiki or other PHP deployments, we recommend you update immediately.
We have taken certain services down as a precautionary measure while we apply the patches.
Currently, the following services are offline:
* Phabricator
* Gerrit CI runners
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
* translatewiki.net
* all [https://www.mediawiki.org/wiki/Wikibase/Wikibase.cloud/de wikibase cloud] instances. This includes all *.wikibase.cloud as well as any instances with a custom domain.
* [[wmdoc:|doc.wikimedia.org]]
Thank you for your understanding.
4sw4tvpfjthutfzp3lkov0qx7i1b2b3
2471837
2471836
2026-10-21T14:07:30Z
BPiovesan-WMF
56466
Adding services that are back online
2471837
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
If you are operating MediaWiki or other PHP deployments, we recommend you update immediately.
We have taken certain services down as a precautionary measure while we apply the patches.
Currently, the following services are offline:
* Gerrit CI runners
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
* translatewiki.net
* all [https://www.mediawiki.org/wiki/Wikibase/Wikibase.cloud/de wikibase cloud] instances. This includes all *.wikibase.cloud as well as any instances with a custom domain.
* [[wmdoc:|doc.wikimedia.org]]
The following services have been restored:
* Phabricator
Thank you for your understanding.
m4zoiugwgq47158kkzimlnzfyybxer6
2471845
2471837
2026-10-21T14:50:50Z
BPiovesan-WMF
56466
Reworked page to include general updates and guidance
2471845
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
'''Availability of Wikimedia services'''
We have taken certain services down as a precautionary measure while we apply the patches.
Currently, the following services are offline:
* Gerrit CI runners
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
* translatewiki.net
* all [[mw:Wikibase/Wikibase.cloud/de|wikibase cloud instances]]. This includes all *.wikibase.cloud as well as any instances with a custom domain.
* [[wmdoc:|doc.wikimedia.org]]
The following services have been restored:
* Phabricator
'''Updates and guidance'''
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
Thank you for your understanding.
i2adrc32obzbeqrtql8jw3sd2v29ygr
2471846
2471845
2026-10-21T14:51:12Z
BPiovesan-WMF
56466
formatting edit
2471846
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
'''Availability of Wikimedia services'''
We have taken certain services down as a precautionary measure while we apply the patches.
''Currently, the following services are offline'':
* Gerrit CI runners
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
* translatewiki.net
* all [[mw:Wikibase/Wikibase.cloud/de|wikibase cloud instances]]. This includes all *.wikibase.cloud as well as any instances with a custom domain.
* [[wmdoc:|doc.wikimedia.org]]
''The following services have been restored'':
* Phabricator
'''Updates and guidance'''
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
Thank you for your understanding.
6a5i9n9cgrxjz21f9pja6t6sv7mqtvi
2471847
2471846
2026-10-21T14:52:08Z
BPiovesan-WMF
56466
updated link
2471847
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
'''Availability of Wikimedia services'''
We have taken certain services down as a precautionary measure while we apply the patches.
''Currently, the following services are offline'':
* Gerrit CI runners
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
* translatewiki.net
* all [[mw:Wikibase/Wikibase.cloud/de|wikibase cloud]] instances. This includes all *.wikibase.cloud as well as any instances with a custom domain.
* [[wmdoc:|doc.wikimedia.org]]
''The following services have been restored'':
* Phabricator
'''Updates and guidance'''
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
Thank you for your understanding.
dtwr6qljyn04ud7j5m2tz1ldk9960kv
2471849
2471847
2026-10-21T15:25:42Z
BPiovesan-WMF
56466
update to services online (translatewiki)
2471849
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
'''Availability of Wikimedia services'''
We have taken certain services down as a precautionary measure while we apply the patches.
''Currently, the following services are offline'':
* Gerrit CI runners
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
* translatewiki.net
* all [[mw:Wikibase/Wikibase.cloud/de|wikibase cloud]] instances. This includes all *.wikibase.cloud as well as any instances with a custom domain.
* [[wmdoc:|doc.wikimedia.org]]
''The following services have been restored'':
* Phabricator
* [https://translatewiki.net/ translatewiki.net]
'''Updates and guidance'''
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
Thank you for your understanding.
nw3rkiblvhh5woqnw0z4pzmmiqf6kai
2471850
2471849
2026-10-21T15:26:12Z
BPiovesan-WMF
56466
removed translatewiki.net from down services
2471850
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
'''Availability of Wikimedia services'''
We have taken certain services down as a precautionary measure while we apply the patches.
''Currently, the following services are offline'':
* Gerrit CI runners
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
* all [[mw:Wikibase/Wikibase.cloud/de|wikibase cloud]] instances. This includes all *.wikibase.cloud as well as any instances with a custom domain.
* [[wmdoc:|doc.wikimedia.org]]
''The following services have been restored'':
* Phabricator
* [https://translatewiki.net/ translatewiki.net]
'''Updates and guidance'''
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
Thank you for your understanding.
g77wrp8sez9xhvurfw7cnmynxb02kbw
2471852
2471850
2026-10-21T15:42:05Z
Neil Shah-Quinn (WMF)
36601
Added GitLab to list of offline services
2471852
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
'''Availability of Wikimedia services'''
We have taken certain services down as a precautionary measure while we apply the patches.
''Currently, the following services are offline'':
* Gerrit CI runners
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
* all [[mw:Wikibase/Wikibase.cloud/de|wikibase cloud]] instances. This includes all *.wikibase.cloud as well as any instances with a custom domain.
* [[wmdoc:|doc.wikimedia.org]]
* [[GitLab]]
''The following services have been restored'':
* Phabricator
* [https://translatewiki.net/ translatewiki.net]
'''Updates and guidance'''
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
Thank you for your understanding.
98jyfkz2ytos3o7j7pmdiyel816cxnk
2471855
2471852
2026-10-21T16:01:56Z
Juwan
44608
2471855
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
==Availability of Wikimedia services==
We have taken certain services down as a precautionary measure while we apply the patches.
''Currently, the following services are offline'':
* Gerrit CI runners
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
* All [[mw:Wikibase/Wikibase.cloud/de|Wikibase cloud]] instances
** This includes all *.wikibase.cloud as well as any instances with a custom domain.
* [[wmdoc:|doc.wikimedia.org]]
* [[GitLab]]
The following services have been restored:
* Phabricator
* [[mw:translatewiki.net|translatewiki.net]]
==Updates and guidance==
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
Thank you for your understanding.
q3d8sm0n8xmdv6z4zaxwc8fskve2wrn
2471856
2471855
2026-10-21T16:17:33Z
BPiovesan-WMF
56466
update: GitLab online
2471856
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
==Availability of Wikimedia services==
We have taken certain services down as a precautionary measure while we apply the patches.
''Currently, the following services are offline'':
* Gerrit CI runners
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
* All [[mw:Wikibase/Wikibase.cloud/de|Wikibase cloud]] instances
** This includes all *.wikibase.cloud as well as any instances with a custom domain.
* [[wmdoc:|doc.wikimedia.org]]
The following services have been restored:
* Phabricator
* [[mw:translatewiki.net|translatewiki.net]]
* [[GitLab]]
==Updates and guidance==
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
Thank you for your understanding.
hk0v4votrvcedimuckdjekvwbgcvzf3
2471857
2471856
2026-10-21T16:25:29Z
Kuldeepburjbhalaike
37135
/* Availability of Wikimedia services */ Phab Wikilink
2471857
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
==Availability of Wikimedia services==
We have taken certain services down as a precautionary measure while we apply the patches.
''Currently, the following services are offline'':
* Gerrit CI runners
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
* All [[mw:Wikibase/Wikibase.cloud/de|Wikibase cloud]] instances
** This includes all *.wikibase.cloud as well as any instances with a custom domain.
* [[wmdoc:|doc.wikimedia.org]]
The following services have been restored:
* [[mw:Phabricator|Phabricator]]
* [[mw:translatewiki.net|translatewiki.net]]
* [[GitLab]]
==Updates and guidance==
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
Thank you for your understanding.
sjs9rnutvngho5wd26ghe9xk9s3irze
2471858
2471857
2026-10-21T16:38:54Z
ArielGlenn
11
/* Availability of Wikimedia services */ doc.wm.o is back up
2471858
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
==Availability of Wikimedia services==
We have taken certain services down as a precautionary measure while we apply the patches.
''Currently, the following services are offline'':
* Gerrit CI runners
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
* All [[mw:Wikibase/Wikibase.cloud/de|Wikibase cloud]] instances
** This includes all *.wikibase.cloud as well as any instances with a custom domain.
The following services have been restored:
* [[mw:Phabricator|Phabricator]]
* [[mw:translatewiki.net|translatewiki.net]]
* [[GitLab]]
* [[wmdoc:|doc.wikimedia.org]]
==Updates and guidance==
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
Thank you for your understanding.
4ogqjqykzdst1zruub3g7lzmgthl9oo
2471886
2471858
2026-10-21T20:46:48Z
BPiovesan-WMF
56466
Added a Diff post to updates
2471886
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
==Availability of Wikimedia services==
We have taken certain services down as a precautionary measure while we apply the patches.
''Currently, the following services are offline'':
* Gerrit CI runners
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
* All [[mw:Wikibase/Wikibase.cloud/de|Wikibase cloud]] instances
** This includes all *.wikibase.cloud as well as any instances with a custom domain.
The following services have been restored:
* [[mw:Phabricator|Phabricator]]
* [[mw:translatewiki.net|translatewiki.net]]
* [[GitLab]]
* [[wmdoc:|doc.wikimedia.org]]
==Updates and guidance==
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-cloud-services/|Impact of PHP vulnerabilities on Wikimedia Cloud Services]]
Thank you for your understanding.
cxhfpxf81fvm7vwgtes0ynb3umo5roh
2471901
2471886
2026-10-21T22:00:43Z
ArielGlenn
11
/* Availability of Wikimedia services */
2471901
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
==Availability of Wikimedia services==
We have taken certain services down as a precautionary measure while we apply the patches.
''Currently, the following services are offline'':
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
** The Zuul status page remains down for the same reason.
* All [[mw:Wikibase/Wikibase.cloud/de|Wikibase cloud]] instances
** This includes all *.wikibase.cloud as well as any instances with a custom domain.
The following services have been restored:
* [[mw:Phabricator|Phabricator]]
* [[mw:translatewiki.net|translatewiki.net]]
* [[GitLab]]
* [[wmdoc:|doc.wikimedia.org]]
* Gerrit CI runners
==Updates and guidance==
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-cloud-services/|Impact of PHP vulnerabilities on Wikimedia Cloud Services]]
Thank you for your understanding.
6d5zmy9wp6imj7wa9bzdgvl6m08g5xq
2471902
2471901
2026-10-21T22:05:10Z
Hashar
32
/* Availability of Wikimedia services */
2471902
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
==Availability of Wikimedia services==
We have taken certain services down as a precautionary measure while we apply the patches.
''Currently, the following services are offline'':
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
** The Zuul status page ( https://integration.wikimedia.org/zuul/ ) remains down for the same reason.
* All [[mw:Wikibase/Wikibase.cloud/de|Wikibase cloud]] instances
** This includes all *.wikibase.cloud as well as any instances with a custom domain.
The following services have been '''partially''' restored:
* [[mw:Continuous_integration]] Gerrit CI runners
** Puppet Catalogue Compiler has not been restored yet.
The following services have been '''fully''' restored:
* [[mw:Phabricator|Phabricator]]
* [[mw:translatewiki.net|translatewiki.net]]
* [[GitLab]]
* [[wmdoc:|doc.wikimedia.org]]
==Updates and guidance==
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-cloud-services/|Impact of PHP vulnerabilities on Wikimedia Cloud Services]]
Thank you for your understanding.
oh49w0mtxkx4f17xk2x9w710p6yezlt
2471903
2471902
2026-10-21T22:06:25Z
BPiovesan-WMF
56466
formatting update
2471903
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
==Availability of Wikimedia services==
We have taken certain services down as a precautionary measure while we apply the patches.
''The following services are offline'':
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
** The Zuul status page ( https://integration.wikimedia.org/zuul/ ) remains down for the same reason.
* All [[mw:Wikibase/Wikibase.cloud/de|Wikibase cloud]] instances
** This includes all *.wikibase.cloud as well as any instances with a custom domain.
''The following services have been '''partially''' restored:''
* [[mw:Continuous_integration]] Gerrit CI runners
** Puppet Catalogue Compiler has not been restored yet.
''The following services have been '''fully''' restored:''
* [[mw:Phabricator|Phabricator]]
* [[mw:translatewiki.net|translatewiki.net]]
* [[GitLab]]
* [[wmdoc:|doc.wikimedia.org]]
==Updates and guidance==
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-cloud-services/|Impact of PHP vulnerabilities on Wikimedia Cloud Services]]
Thank you for your understanding.
c49cekrsnc51d34kl4g4dh7n6zp9ll2
2471904
2471903
2026-10-21T22:08:36Z
ArielGlenn
11
/* Availability of Wikimedia services */ make the ci runners link nicer
2471904
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
==Availability of Wikimedia services==
We have taken certain services down as a precautionary measure while we apply the patches.
''The following services are offline'':
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
** The Zuul status page ( https://integration.wikimedia.org/zuul/ ) remains down for the same reason.
* All [[mw:Wikibase/Wikibase.cloud/de|Wikibase cloud]] instances
** This includes all *.wikibase.cloud as well as any instances with a custom domain.
''The following services have been '''partially''' restored:''
* [[mw:Continuous_integration|Gerrit CI runners]]
** Puppet Catalogue Compiler has not been restored yet.
''The following services have been '''fully''' restored:''
* [[mw:Phabricator|Phabricator]]
* [[mw:translatewiki.net|translatewiki.net]]
* [[GitLab]]
* [[wmdoc:|doc.wikimedia.org]]
==Updates and guidance==
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-cloud-services/|Impact of PHP vulnerabilities on Wikimedia Cloud Services]]
Thank you for your understanding.
6j1nxf3vb6rlt8160zsdnxph0djjxdd
2471912
2471904
2026-10-21T23:31:32Z
TCipriani (WMF)
4895
Update re:GitLab runners
2471912
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
==Availability of Wikimedia services==
We have taken certain services down as a precautionary measure while we apply the patches.
''The following services are offline'':
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
** The Zuul status page ( https://integration.wikimedia.org/zuul/ ) remains down for the same reason.
* All [[mw:Wikibase/Wikibase.cloud/de|Wikibase cloud]] instances
** This includes all *.wikibase.cloud as well as any instances with a custom domain.
''The following services have been '''partially''' restored:''
* [[mw:Continuous_integration|Gerrit CI runners]]
** Puppet Catalogue Compiler has not been restored yet.
* [[GitLab]]
** Image builds for the production registry (Trusted runners) remain offline.
''The following services have been '''fully''' restored:''
* [[mw:Phabricator|Phabricator]]
* [[mw:translatewiki.net|translatewiki.net]]
* [[wmdoc:|doc.wikimedia.org]]
==Updates and guidance==
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-cloud-services/|Impact of PHP vulnerabilities on Wikimedia Cloud Services]]
Thank you for your understanding.
3773qe9rcn0g82oz6cj2c01cbwkpqo5
2471924
2471912
2026-10-22T01:32:03Z
Revi C.
1919
Yes, I had to dig through history if this is really current. Adding last edit timestamp so I can have a better guess how old this page's data is. (Ideally please state which services were restored when?)
2471924
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
* This page was last edited at {{REVISIONYEAR}}-{{REVISIONMONTH}}-{{REVISIONDAY2}}T{{#invoke:string|sub|{{REVISIONTIMESTAMP}}|9|10}}:{{#invoke:string|sub|{{REVISIONTIMESTAMP}}|11|12}}:{{#invoke:string|sub|{{REVISIONTIMESTAMP}}|13|14}} (UTC).
==Availability of Wikimedia services==
We have taken certain services down as a precautionary measure while we apply the patches.
''The following services are offline'':
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
** The Zuul status page ( https://integration.wikimedia.org/zuul/ ) remains down for the same reason.
* All [[mw:Wikibase/Wikibase.cloud/de|Wikibase cloud]] instances
** This includes all *.wikibase.cloud as well as any instances with a custom domain.
''The following services have been '''partially''' restored:''
* [[mw:Continuous_integration|Gerrit CI runners]]
** Puppet Catalogue Compiler has not been restored yet.
* [[GitLab]]
** Image builds for the production registry (Trusted runners) remain offline.
''The following services have been '''fully''' restored:''
* [[mw:Phabricator|Phabricator]]
* [[mw:translatewiki.net|translatewiki.net]]
* [[wmdoc:|doc.wikimedia.org]]
==Updates and guidance==
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-cloud-services/|Impact of PHP vulnerabilities on Wikimedia Cloud Services]]
Thank you for your understanding.
ie2bnsm8txwov98uk5xqczx8gxxijp4
2471952
2471924
2026-10-22T08:22:30Z
Martyn Ranyard (WMDE)
51376
Update status of wikibase cloud
2471952
wikitext
text/x-wiki
We are undertaking critical maintenance work due to an [https://www.php.net/archive/2026.php?x#2026-10-21-5 updated PHP release]. Events are developing rapidly. This page will be updated as appropriate.
* This page was last edited at {{REVISIONYEAR}}-{{REVISIONMONTH}}-{{REVISIONDAY2}}T{{#invoke:string|sub|{{REVISIONTIMESTAMP}}|9|10}}:{{#invoke:string|sub|{{REVISIONTIMESTAMP}}|11|12}}:{{#invoke:string|sub|{{REVISIONTIMESTAMP}}|13|14}} (UTC).
==Availability of Wikimedia services==
We have taken certain services down as a precautionary measure while we apply the patches.
''The following services are offline'':
* All of [[Portal:Cloud VPS|Cloud VPS]] and [[Help:Toolforge|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.
** The Zuul status page ( https://integration.wikimedia.org/zuul/ ) remains down for the same reason.
''The following services have been '''partially''' restored:''
* [[mw:Continuous_integration|Gerrit CI runners]]
** Puppet Catalogue Compiler has not been restored yet.
* [[GitLab]]
** Image builds for the production registry (Trusted runners) remain offline.
* [https://wikibase.cloud Wikibase cloud] instances
** PHP-based tools are not yet available, namely cradle, widar and quickstatements
''The following services have been '''fully''' restored:''
* [[mw:Phabricator|Phabricator]]
* [[mw:translatewiki.net|translatewiki.net]]
* [[wmdoc:|doc.wikimedia.org]]
==Updates and guidance==
* If you are operating MediaWiki or other PHP deployments, we recommend you update immediately. [https://www.php.net/archive/2026.php?x#2026-10-21-5 See this advisory from the PHP Foundation].
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/|Impact of PHP vulnerabilities on Wikimedia tools and services]]
* Diff post: [[diffblog:2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-cloud-services/|Impact of PHP vulnerabilities on Wikimedia Cloud Services]]
Thank you for your understanding.
gi2ejrghx1it2cwe11ouaou9zimhva0
Category:PKI
14
460841
2471834
2026-10-21T13:06:20Z
Fuzheado
1608
add as part of TLS
2471834
wikitext
text/x-wiki
[[Category:TLS]]
oeke0punkinxpxi5lb5tfa4wu44aa0v
Talk:Incidents/2026-10-21 PHP security update/Community
1
460842
2471838
2026-10-21T14:24:33Z
Saper
135
/* Exceptions */ new section
2471838
wikitext
text/x-wiki
== Exceptions ==
==Toolforge==
* ztools
* feather
* pid-bangladesh-uploadbot2
==Cloud VPS==
* maps
saper 14:24, 21 October 2026 (UTC)
s1rqataumfatvgan1i5rk1eyvnpqmxy
2471839
2471838
2026-10-21T14:25:12Z
Saper
135
/* Toolforge */
2471839
wikitext
text/x-wiki
== Exceptions ==
===Toolforge===
* ztools
* feather
* pid-bangladesh-uploadbot2
==Cloud VPS==
* maps
saper 14:24, 21 October 2026 (UTC)
nxrv945k054pk65ozlj31npy3xxubue
2471840
2471839
2026-10-21T14:25:23Z
Saper
135
/* Cloud VPS */
2471840
wikitext
text/x-wiki
== Exceptions ==
===Toolforge===
* ztools
* feather
* pid-bangladesh-uploadbot2
===Cloud VPS===
* maps
saper 14:24, 21 October 2026 (UTC)
fz62j4i669ewuvulsf4aqxqjx3etzag
2471842
2471840
2026-10-21T14:39:31Z
Lucas Werkmeister (WMDE)
10037
/* Exceptions */ nominate wikibugs
2471842
wikitext
text/x-wiki
== Exceptions ==
===Toolforge===
* [[:mw:wikibugs|wikibugs]] – important IRC bot
* ztools
* feather
* pid-bangladesh-uploadbot2
===Cloud VPS===
* maps
saper 14:24, 21 October 2026 (UTC)
qlsaiurhjqkc669juwlftyspaawhamd
2471843
2471842
2026-10-21T14:42:18Z
ZI Jony
13427
/* Cloud VPS */ +thelounge
2471843
wikitext
text/x-wiki
== Exceptions ==
===Toolforge===
* [[:mw:wikibugs|wikibugs]] – important IRC bot
* ztools
* feather
* pid-bangladesh-uploadbot2
===Cloud VPS===
* maps
* thelounge
saper 14:24, 21 October 2026 (UTC)
lubjsfdaj31jxmaa8pz8kchzc5ep3lv
2471844
2471843
2026-10-21T14:43:45Z
ZI Jony
13427
/* Cloud VPS */
2471844
wikitext
text/x-wiki
== Exceptions ==
===Toolforge===
* [[:mw:wikibugs|wikibugs]] – important IRC bot
* ztools
* feather
* pid-bangladesh-uploadbot2
===Cloud VPS===
* maps
* [[m:IRC/WikiLounge|thelounge]]
saper 14:24, 21 October 2026 (UTC)
pjhb80r6xhzi0tdn1osx7jprp3uqoz2
2471861
2471844
2026-10-21T17:36:45Z
Pharos
2789
/* Toolforge */ add wikinewsie, which we're currently trying to work with external partners on, and which has no php
2471861
wikitext
text/x-wiki
== Exceptions ==
===Toolforge===
* [[:mw:wikibugs|wikibugs]] – important IRC bot
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
===Cloud VPS===
* maps
* [[m:IRC/WikiLounge|thelounge]]
saper 14:24, 21 October 2026 (UTC)
2k4owwk7386uyog3zv6jcgltbsb5fp6
2471862
2471861
2026-10-21T17:48:05Z
Lucas Werkmeister
8093
/* Toolforge */ add stashbot, bridgebot, jouncebot per [[User:BryanDavis]] in #wikimedia-cloud-admins
2471862
wikitext
text/x-wiki
== Exceptions ==
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bot
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
===Cloud VPS===
* maps
* [[m:IRC/WikiLounge|thelounge]]
saper 14:24, 21 October 2026 (UTC)
c4jd0o022g7mbmcobcthvoa2l1s16d4
2471863
2471862
2026-10-21T17:48:40Z
Lucas Werkmeister
8093
/* Toolforge */ oops, plural
2471863
wikitext
text/x-wiki
== Exceptions ==
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
===Cloud VPS===
* maps
* [[m:IRC/WikiLounge|thelounge]]
saper 14:24, 21 October 2026 (UTC)
s9nv686drk7ka78bsydsmxzhdtun98h
2471864
2471863
2026-10-21T17:51:30Z
Lucas Werkmeister
8093
/* Cloud VPS */ move saper signature to the project it belongs to (cf. [[Special:Diff/2471838]])
2471864
wikitext
text/x-wiki
== Exceptions ==
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
g5sfmrvsa59ilqvfamiynn6sx0r4ksf
2471865
2471864
2026-10-21T17:52:11Z
Lucas Werkmeister
8093
/* Cloud VPS */ add cyberbot
2471865
wikitext
text/x-wiki
== Exceptions ==
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z
4c7gtyxwvu1ni2ryjlnpo9rm4jj2flb
2471866
2471865
2026-10-21T17:59:27Z
RCoccioli (WMF)
7416
Add suggestion for the info to add
2471866
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z
bbza3mm4ld87j1a5som14s57wjre21l
2471867
2471866
2026-10-21T18:00:31Z
Cyberpower678
1127
/* Cloud VPS */ +
2471867
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
jf0qc6rulvk10y2n3dbltsv9e1b3p0w
2471868
2471867
2026-10-21T18:05:48Z
MacFan4000
7857
2471868
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
2knsapimhnuz49k0whfo9n4qao3pjs6
2471869
2471868
2026-10-21T18:10:39Z
Lucas Werkmeister
8093
/* Toolforge */ note that the IRC bots don’t use PHP
2471869
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
3y2b6a35r7zodfkgmtgyovtmfyob6kt
2471870
2471869
2026-10-21T18:11:06Z
AntiCompositeNumber
14764
/* Toolforge */ + wikiauthbot-ng
2471870
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
do89xfcft2egwylxnir9urzhx9w2aca
2471871
2471870
2026-10-21T18:18:18Z
Chlod
18186
/* Exceptions */
2471871
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
8fpcs45f6cvecb3wgr9tfd4zoa3y17i
2471872
2471871
2026-10-21T18:21:21Z
Legoktm
621
/* Toolforge */ +1
2471872
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
1ux0hk61huj0ok4o3sitnwqo2qydhw4
2471873
2471872
2026-10-21T18:24:07Z
Legoktm
621
/* Toolforge */ +
2471873
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
js37zpbnvhl7n84rht1kz0ta4d6iyak
2471876
2471873
2026-10-21T18:44:02Z
Anomie
268
/* Toolforge */ + anomiebot
2471876
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
289z5eit4dag3bd6r1nwt1j90kcl2ou
2471877
2471876
2026-10-21T18:52:44Z
BryanDavis
1604
/* Toolforge */ +bd808 tools and tools used a lot by bd808 that are non-php
2471877
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
56c9uwwl4a0jb2dz54bccrm9rslc61o
2471878
2471877
2026-10-21T18:56:03Z
AntiCompositeNumber
14764
fix edit conflict by [[User:Chlod]]
2471878
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
gyj6p8lxx75d13qb8dxfcewuap9cvl3
2471879
2471878
2026-10-21T19:07:37Z
AntiCompositeNumber
14764
/* Toolforge */ +2
2471879
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
cvkeu9gvu93byqymu3od9zil2qjpy60
2471880
2471879
2026-10-21T19:09:32Z
NguoiDungKhongDinhDanh
26425
/* Toolforge */ + spamcheck, multiuserinfo, allblocksever
2471880
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): List all links added by a user, and list all edits adding a domain. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
9gv022z4vt6fpn10ny7jno0f088k3k1
2471881
2471880
2026-10-21T19:11:54Z
Shubinator
977
/* Toolforge */ DYKUpdateBot just Python
2471881
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): List all links added by a user, and list all edits adding a domain. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
eezycxzq0fw5hycqyf4680q2zdt6i8o
2471882
2471881
2026-10-21T19:49:37Z
Tenshi Hinanawi
39970
+
2471882
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): List all links added by a user, and list all edits adding a domain. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
f2m1kl64vbfjvefx77apcmkth6hthan
2471883
2471882
2026-10-21T19:54:16Z
Giftpflanze
542
/* Cloud VPS */ in the hope that this doesn't get ignored like the irc one, where do you reach the team anyway? sadly, nothing was specified
2471883
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): List all links added by a user, and list all edits adding a domain. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
a5xv07xt18pv9olf7yjrdgkzphst8hr
2471884
2471883
2026-10-21T19:57:21Z
NguoiDungKhongDinhDanh
26425
/* Toolforge */ ~
2471884
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
fa436wf9khbztf8qxbphsn1cif4hj5s
2471885
2471884
2026-10-21T20:18:08Z
ArthurPSmith
6523
/* Toolforge */
2471885
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
qgq1dgfsogbc0lupaj2mkpas36y5irj
2471887
2471885
2026-10-21T20:55:19Z
FlammablePizza
56871
add my tools
2471887
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
m6htnt9m1uhu1tf86q11vqlhrhwlnwt
2471888
2471887
2026-10-21T21:08:10Z
NicheSports
54509
/* Toolforge */ add nichesportsbot
2471888
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
p72ebotrubtsfu79nnrpqmbwfge93zk
2471890
2471888
2026-10-21T21:21:32Z
Audiodude
3254
/* Cloud VPS */
2471890
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]]
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
oo7jxbqhleq621qlo1nw4yzm2hivyvz
2471891
2471890
2026-10-21T21:22:20Z
Pharos
2789
/* Toolforge */ Clarify Wikinewsie has no php
2471891
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
7i2fppppw20zmee3q1jv260htt3xfxm
2471892
2471891
2026-10-21T21:26:18Z
Mahir256
13837
/* Toolforge */
2471892
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
pob1hpq24gvuwc0n76yoa5cmrj8g0dy
2471893
2471892
2026-10-21T21:27:22Z
Mahir256
13837
2471893
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
tfldm3t0mhsz9tjimhxkp7u7kv9v31f
2471895
2471893
2026-10-21T21:39:33Z
Krinkle
44
/* Cloud VPS */ +cvn
2471895
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
ga6a0o67bskkgbtt0cox9nfs5vithln
2471896
2471895
2026-10-21T21:43:24Z
Krinkle
44
/* Toolforge */
2471896
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
4o9r0lklmktyo32s73aowrm7tyeopk1
2471897
2471896
2026-10-21T21:50:44Z
Ahecht
5894
add
2471897
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and "afdstats2" (python). These tools use the <code>python3.13</code> pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and <code>globalusagecountmirror</code> (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* <code>ahechtbot</code> (python and nodejs). No webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
0c9nyh9ups6f33uzsb2fytoyx7cxgic
2471898
2471897
2026-10-21T21:51:35Z
Ahecht
5894
/* Toolforge */ c/e
2471898
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and <code>afdstats2</code> (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and <code>globalusagecountmirror</code> (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* <code>ahechtbot</code> (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
5qzpwx20oeer892gpmqta5obcptxoyq
2471899
2471898
2026-10-21T21:52:23Z
Ahecht
5894
/* Toolforge */ link
2471899
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* <code>ahechtbot</code> (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
osxzooerjbomdfxae6yfb5h8idf9tof
2471905
2471899
2026-10-21T22:11:33Z
Nicereddy
59679
/* Exceptions */ Add my two tools
2471905
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* <code>ahechtbot</code> (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
cea0m6ufgmh6gb47eb4oozxql3sgrfx
2471906
2471905
2026-10-21T22:18:19Z
R'n'B
297
/* Toolforge */ added Russbot
2471906
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* <code>ahechtbot</code> (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
861sci2oz3qgg1l0s2ogiragxk84j6i
2471907
2471906
2026-10-21T23:00:38Z
Krinkle
44
2471907
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* <code>ahechtbot</code> (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
9qtlenpyjyxam1zmc5njrnzmnu3719t
2471908
2471907
2026-10-21T23:08:34Z
Ahecht
5894
/* Toolforge (no PHP) */ add
2471908
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|ahechtbot]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
f3h2papl2dxi519bk6nei5jlrkip8wd
2471910
2471908
2026-10-21T23:10:19Z
Ahecht
5894
/* Toolforge (no PHP) */ add
2471910
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
5s4cp515a956qxa1rayk2tbeoqrvyxh
2471911
2471910
2026-10-21T23:11:31Z
Ahecht
5894
Move
2471911
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
6a3r59emvmgcmqvazmpb274scyb1f6w
2471913
2471911
2026-10-21T23:31:54Z
Don-vip
14260
/* Toolforge (no PHP) */ spacemedia
2471913
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP upsage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
pe07bomm0a4s1xekhxd9skk97bnl1bd
2471914
2471913
2026-10-21T23:33:02Z
Don-vip
14260
/* Toolforge (no PHP) */ video2commons
2471914
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
n3sge4ci0pszy73jsrcp1xg7ohdxcwz
2471915
2471914
2026-10-21T23:34:34Z
Don-vip
14260
/* Cloud VPS */ spacemedia + video2commons
2471915
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
08whi47tggn72c1omadort964xrdgl9
2471916
2471915
2026-10-21T23:54:54Z
PPenloglou-WMF
34869
/* Toolforge (no PHP) */ fr-toolkit
2471916
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
e4n67md0fk9kvo8mipza7898yt57mns
2471918
2471916
2026-10-22T00:04:14Z
Bb010g
49723
/* Toolforge (no PHP) */ add [[toolforge:hub]]
2471918
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
8b23iu7jwc00tc8suncgdhjkfgypkva
2471919
2471918
2026-10-22T00:15:33Z
Sohom Datta
15330
+ for stuff that I remember
2471919
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
feosgrigdc08isdqh9r77t6ggey7vxy
2471920
2471919
2026-10-22T00:17:41Z
Nanona15dobato
37684
+[[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]]
2471920
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
e4ar8l18bwmccoivua2gybexbh4eyr4
2471921
2471920
2026-10-22T00:58:11Z
Sage (Wiki Ed)
39641
/* Cloud VPS */ outreachdahboard
2471921
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
aqvxha09byt16lnwtiq9tpsga16fib0
2471922
2471921
2026-10-22T01:17:38Z
Superzerocool
1046
/* Toolforge (no PHP) */ +1
2471922
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
28ewq9szooeljfz5fqywi9lp7722q94
2471925
2471922
2026-10-22T01:37:31Z
Revi C.
1919
/* Toolforge (no PHP) */ +3
2471925
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
2ib3lalisu6mnqzql4kcg593vcd7653
2471926
2471925
2026-10-22T01:56:51Z
Hakimi97
37633
/* Toolforge (no PHP) */ Add jawi tool
2471926
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
ik61g5huh97trmn1wo08wd1985kgjw6
2471927
2471926
2026-10-22T02:13:26Z
Le Loy
41823
/* Toolforge (no PHP) */ +2
2471927
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
4ctdtpp8vsfrqt5iatv8dgizki2mww5
2471928
2471927
2026-10-22T02:22:41Z
Bodhisattwa
11878
/* Toolforge (no PHP) */
2471928
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
bfg9cwtqugtkr92jx95bhi8c9phqc13
2471930
2471928
2026-10-22T02:35:40Z
Legoktm
621
/* Toolforge (no PHP) */ +krinklebot
2471930
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
1fzpcemmgk9zml0vdt0voofdbsoz0e9
2471931
2471930
2026-10-22T04:15:00Z
Physikerwelt
244
/* Cloud VPS */
2471931
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
a3mlafz7b9mqjyq0jqiowdipgrzvkiy
2471932
2471931
2026-10-22T04:28:06Z
GPSLeo
38467
/* Toolforge (no PHP) */
2471932
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
av9jk3ut9nev3w6ebh5klnat2obwf39
2471933
2471932
2026-10-22T04:32:10Z
GreenC
3809
/* Exceptions */
2471933
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
1g6fqn2mh3ybon6edqi7a40yzxc066v
2471934
2471933
2026-10-22T04:36:37Z
MusikAnimal
4367
/* Cloud VPS */ some Python projects my team maintains
2471934
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
alo0xorrrbqfmecnkgahjcvvi3qvdmx
2471935
2471934
2026-10-22T04:38:25Z
Effeietsanders
9986
/* Cloud VPS */
2471935
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
8z867yxcfbsj65htlp2ef59az2a8e6d
2471936
2471935
2026-10-22T04:41:56Z
GreenC
3809
/* Toolforge (PHP) */
2471936
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
jrjyijyfaxglhlb1adthfhydotrqqbe
2471937
2471936
2026-10-22T04:47:27Z
Chlod
18186
/* Cloud VPS */ re
2471937
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
===Cloud VPS===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
mrifh20fqpoe0z1u7x8rxxfe1a51wez
2471938
2471937
2026-10-22T05:02:06Z
Chlod
18186
/* Cloud VPS */ also breaking apart Cloud VPS into PHP/no-PHP categories
2471938
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
===Cloud VPS (no PHP)===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
===Cloud VPS (PHP)===
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
gqtmbo0tnue7wueuhghs54h95zvrhf3
2471939
2471938
2026-10-22T05:02:51Z
Chlod
18186
resort
2471939
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
===Cloud VPS (no PHP)===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
===Cloud VPS (PHP)===
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
7q1mce3mwax94oa2b7zjs6k0b15z7jv
2471940
2471939
2026-10-22T05:03:37Z
MusikAnimal
4367
/* Cloud VPS */ my PHP tools
2471940
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
===Cloud VPS (no PHP)===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
===Cloud VPS (PHP)===
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
* <code>xtools</code>, <code>commtech</code> (and soon to moved to <code>pageviews</code>), and <code>copypatrol</code> are all PHP, but myself and/or Moderator Tools are able to patch them as soon as we are able to SSH in again. <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 05:03, 22 October 2026 (UTC)
ocip346itn4kclwdv9b8gxwqzanrhm3
2471941
2471940
2026-10-22T05:03:47Z
Chlod
18186
+ google-api-proy
2471941
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
===Cloud VPS (no PHP)===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
* [[Nova Resource:Google-api-proxy|google-api-proxy]] uses no PHP per @[[User:MusikAnimal|MusikAnimal]], and is a dependency of [[toolforge:copyvios]]. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 05:03, 22 October 2026 (UTC)
===Cloud VPS (PHP)===
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
* <code>xtools</code>, <code>commtech</code> (and soon to moved to <code>pageviews</code>), and <code>copypatrol</code> are all PHP, but myself and/or Moderator Tools are able to patch them as soon as we are able to SSH in again. <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 05:03, 22 October 2026 (UTC)
iexer3im8otjmeqa32uv68fl6kwzl70
2471947
2471941
2026-10-22T06:43:21Z
Count Count
11194
/* Toolforge (no PHP) */ add
2471947
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:namehistory]], [[:toolforge:checkusertools]], [[:toolforge:rangetree]], [[:toolforge:wiki-mail-verify]], [[:toolforge:flaggedrevspromotioncheck]], [[:toolforge:dewiki-votecheck]], [[:toolforge:spamcheck]]: web services, no PHP. xlinks, dewiki-voterightsnotifier, dewikisignbot, dewiki-rangeblock: bots, no PHP. [[:toolforge:globallinksearch]], globalspeedies: only registered, no code yet and will not be PHP. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]])
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
===Cloud VPS (no PHP)===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
* [[Nova Resource:Google-api-proxy|google-api-proxy]] uses no PHP per @[[User:MusikAnimal|MusikAnimal]], and is a dependency of [[toolforge:copyvios]]. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 05:03, 22 October 2026 (UTC)
===Cloud VPS (PHP)===
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
* <code>xtools</code>, <code>commtech</code> (and soon to moved to <code>pageviews</code>), and <code>copypatrol</code> are all PHP, but myself and/or Moderator Tools are able to patch them as soon as we are able to SSH in again. <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 05:03, 22 October 2026 (UTC)
n0kr2p6i79fxmw2a6y9ve6fy5uw7gmp
2471948
2471947
2026-10-22T06:44:40Z
Count Count
11194
/* Toolforge (PHP) */ +1
2471948
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:namehistory]], [[:toolforge:checkusertools]], [[:toolforge:rangetree]], [[:toolforge:wiki-mail-verify]], [[:toolforge:flaggedrevspromotioncheck]], [[:toolforge:dewiki-votecheck]], [[:toolforge:spamcheck]]: web services, no PHP. xlinks, dewiki-voterightsnotifier, dewikisignbot, dewiki-rangeblock: bots, no PHP. [[:toolforge:globallinksearch]], globalspeedies: only registered, no code yet and will not be PHP. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]])
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:stimmberechtigung]]: PHP tool for voting rights check on German Wikipedia. I will be available for update. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]]) 06:44, 22 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
===Cloud VPS (no PHP)===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
* [[Nova Resource:Google-api-proxy|google-api-proxy]] uses no PHP per @[[User:MusikAnimal|MusikAnimal]], and is a dependency of [[toolforge:copyvios]]. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 05:03, 22 October 2026 (UTC)
===Cloud VPS (PHP)===
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
* <code>xtools</code>, <code>commtech</code> (and soon to moved to <code>pageviews</code>), and <code>copypatrol</code> are all PHP, but myself and/or Moderator Tools are able to patch them as soon as we are able to SSH in again. <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 05:03, 22 October 2026 (UTC)
hrm5fdr5icw94kgl8rytcduu9hmb9k5
2471949
2471948
2026-10-22T07:27:04Z
Redmin
23906
/* Toolforge (no PHP) */ Reply
2471949
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
*:I would like to add that due to wikidata-externalid-url not being available, some links to other dictionaries (often used as references) on Bengali Wiktionary are currently broken. [[User:Redmin|Redmin]] ([[User talk:Redmin|talk]]) 07:27, 22 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:namehistory]], [[:toolforge:checkusertools]], [[:toolforge:rangetree]], [[:toolforge:wiki-mail-verify]], [[:toolforge:flaggedrevspromotioncheck]], [[:toolforge:dewiki-votecheck]], [[:toolforge:spamcheck]]: web services, no PHP. xlinks, dewiki-voterightsnotifier, dewikisignbot, dewiki-rangeblock: bots, no PHP. [[:toolforge:globallinksearch]], globalspeedies: only registered, no code yet and will not be PHP. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]])
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:stimmberechtigung]]: PHP tool for voting rights check on German Wikipedia. I will be available for update. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]]) 06:44, 22 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
===Cloud VPS (no PHP)===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
* [[Nova Resource:Google-api-proxy|google-api-proxy]] uses no PHP per @[[User:MusikAnimal|MusikAnimal]], and is a dependency of [[toolforge:copyvios]]. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 05:03, 22 October 2026 (UTC)
===Cloud VPS (PHP)===
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
* <code>xtools</code>, <code>commtech</code> (and soon to moved to <code>pageviews</code>), and <code>copypatrol</code> are all PHP, but myself and/or Moderator Tools are able to patch them as soon as we are able to SSH in again. <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 05:03, 22 October 2026 (UTC)
gpt312ipu4x8s511z8xukr4hzx2w868
2471950
2471949
2026-10-22T08:18:32Z
Nux
3077
/* Toolforge (PHP) */ dna, authors, wiwosm
2471950
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
*:I would like to add that due to wikidata-externalid-url not being available, some links to other dictionaries (often used as references) on Bengali Wiktionary are currently broken. [[User:Redmin|Redmin]] ([[User talk:Redmin|talk]]) 07:27, 22 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:namehistory]], [[:toolforge:checkusertools]], [[:toolforge:rangetree]], [[:toolforge:wiki-mail-verify]], [[:toolforge:flaggedrevspromotioncheck]], [[:toolforge:dewiki-votecheck]], [[:toolforge:spamcheck]]: web services, no PHP. xlinks, dewiki-voterightsnotifier, dewikisignbot, dewiki-rangeblock: bots, no PHP. [[:toolforge:globallinksearch]], globalspeedies: only registered, no code yet and will not be PHP. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]])
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:stimmberechtigung]]: PHP tool for voting rights check on German Wikipedia. I will be available for update. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]]) 06:44, 22 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
* [[:toolforge:dna]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:authors]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:wiwosm]] not sure; I can try to up the image setting and work on resolving bugs if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
===Cloud VPS (no PHP)===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
* [[Nova Resource:Google-api-proxy|google-api-proxy]] uses no PHP per @[[User:MusikAnimal|MusikAnimal]], and is a dependency of [[toolforge:copyvios]]. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 05:03, 22 October 2026 (UTC)
===Cloud VPS (PHP)===
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
* <code>xtools</code>, <code>commtech</code> (and soon to moved to <code>pageviews</code>), and <code>copypatrol</code> are all PHP, but myself and/or Moderator Tools are able to patch them as soon as we are able to SSH in again. <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 05:03, 22 October 2026 (UTC)
dmie7jz0hs5ahskxnnve0q1sxhaynow
2471951
2471950
2026-10-22T08:20:51Z
Nux
3077
/* Toolforge (no PHP) */ zabytki JS
2471951
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
*:I would like to add that due to wikidata-externalid-url not being available, some links to other dictionaries (often used as references) on Bengali Wiktionary are currently broken. [[User:Redmin|Redmin]] ([[User talk:Redmin|talk]]) 07:27, 22 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:namehistory]], [[:toolforge:checkusertools]], [[:toolforge:rangetree]], [[:toolforge:wiki-mail-verify]], [[:toolforge:flaggedrevspromotioncheck]], [[:toolforge:dewiki-votecheck]], [[:toolforge:spamcheck]]: web services, no PHP. xlinks, dewiki-voterightsnotifier, dewikisignbot, dewiki-rangeblock: bots, no PHP. [[:toolforge:globallinksearch]], globalspeedies: only registered, no code yet and will not be PHP. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]])
* [[:toolforge:zabytki]] – JS only; no server-side dynamic stuff. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:20, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:stimmberechtigung]]: PHP tool for voting rights check on German Wikipedia. I will be available for update. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]]) 06:44, 22 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
* [[:toolforge:dna]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:authors]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:wiwosm]] not sure; I can try to up the image setting and work on resolving bugs if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
===Cloud VPS (no PHP)===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
* [[Nova Resource:Google-api-proxy|google-api-proxy]] uses no PHP per @[[User:MusikAnimal|MusikAnimal]], and is a dependency of [[toolforge:copyvios]]. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 05:03, 22 October 2026 (UTC)
===Cloud VPS (PHP)===
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
* <code>xtools</code>, <code>commtech</code> (and soon to moved to <code>pageviews</code>), and <code>copypatrol</code> are all PHP, but myself and/or Moderator Tools are able to patch them as soon as we are able to SSH in again. <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 05:03, 22 October 2026 (UTC)
0fnujg1qg3d40w94lbjed0iwf91w93m
2471955
2471951
2026-10-22T08:33:45Z
Nux
3077
/* Why not just enable Toolforge without PHP images */ new section
2471955
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
*:I would like to add that due to wikidata-externalid-url not being available, some links to other dictionaries (often used as references) on Bengali Wiktionary are currently broken. [[User:Redmin|Redmin]] ([[User talk:Redmin|talk]]) 07:27, 22 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:namehistory]], [[:toolforge:checkusertools]], [[:toolforge:rangetree]], [[:toolforge:wiki-mail-verify]], [[:toolforge:flaggedrevspromotioncheck]], [[:toolforge:dewiki-votecheck]], [[:toolforge:spamcheck]]: web services, no PHP. xlinks, dewiki-voterightsnotifier, dewikisignbot, dewiki-rangeblock: bots, no PHP. [[:toolforge:globallinksearch]], globalspeedies: only registered, no code yet and will not be PHP. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]])
* [[:toolforge:zabytki]] – JS only; no server-side dynamic stuff. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:20, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:stimmberechtigung]]: PHP tool for voting rights check on German Wikipedia. I will be available for update. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]]) 06:44, 22 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
* [[:toolforge:dna]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:authors]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:wiwosm]] not sure; I can try to up the image setting and work on resolving bugs if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
===Cloud VPS (no PHP)===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
* [[Nova Resource:Google-api-proxy|google-api-proxy]] uses no PHP per @[[User:MusikAnimal|MusikAnimal]], and is a dependency of [[toolforge:copyvios]]. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 05:03, 22 October 2026 (UTC)
===Cloud VPS (PHP)===
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
* <code>xtools</code>, <code>commtech</code> (and soon to moved to <code>pageviews</code>), and <code>copypatrol</code> are all PHP, but myself and/or Moderator Tools are able to patch them as soon as we are able to SSH in again. <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 05:03, 22 October 2026 (UTC)
== Why not just enable Toolforge without PHP images ==
From what I recall, TF works with the images enabled in the web configuration. You could try disabling, removing, or renaming those images, then running TF again. Afterward, you can work on restoring the PHP services by upgrading images.
I believe the information about what image is available in the configuration files, so admins may be able to find it using [[w:Grep|grep]]. There should be no need for people manually writing which service doesn't use PHP (unless they enable PHP, but not actually using it). Personally I don't even remember what my setup is. Would be easier if some TF admin would post a list. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:33, 22 October 2026 (UTC)
2edozhbctgpcongt2ydlzpati6wffn4
2471956
2471955
2026-10-22T08:49:22Z
TheDJ
95
/* Toolforge (PHP) */ objectium
2471956
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
*:I would like to add that due to wikidata-externalid-url not being available, some links to other dictionaries (often used as references) on Bengali Wiktionary are currently broken. [[User:Redmin|Redmin]] ([[User talk:Redmin|talk]]) 07:27, 22 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:namehistory]], [[:toolforge:checkusertools]], [[:toolforge:rangetree]], [[:toolforge:wiki-mail-verify]], [[:toolforge:flaggedrevspromotioncheck]], [[:toolforge:dewiki-votecheck]], [[:toolforge:spamcheck]]: web services, no PHP. xlinks, dewiki-voterightsnotifier, dewikisignbot, dewiki-rangeblock: bots, no PHP. [[:toolforge:globallinksearch]], globalspeedies: only registered, no code yet and will not be PHP. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]])
* [[:toolforge:zabytki]] – JS only; no server-side dynamic stuff. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:20, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:stimmberechtigung]]: PHP tool for voting rights check on German Wikipedia. I will be available for update. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]]) 06:44, 22 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
* [[:toolforge:dna]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:authors]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:wiwosm]] not sure; I can try to up the image setting and work on resolving bugs if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:objectium]] PHP, build packs. Low prio [[User:TheDJ|TheDJ]] ([[User talk:TheDJ|talk]]) 08:49, 22 October 2026 (UTC)
===Cloud VPS (no PHP)===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
* [[Nova Resource:Google-api-proxy|google-api-proxy]] uses no PHP per @[[User:MusikAnimal|MusikAnimal]], and is a dependency of [[toolforge:copyvios]]. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 05:03, 22 October 2026 (UTC)
===Cloud VPS (PHP)===
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
* <code>xtools</code>, <code>commtech</code> (and soon to moved to <code>pageviews</code>), and <code>copypatrol</code> are all PHP, but myself and/or Moderator Tools are able to patch them as soon as we are able to SSH in again. <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 05:03, 22 October 2026 (UTC)
== Why not just enable Toolforge without PHP images ==
From what I recall, TF works with the images enabled in the web configuration. You could try disabling, removing, or renaming those images, then running TF again. Afterward, you can work on restoring the PHP services by upgrading images.
I believe the information about what image is available in the configuration files, so admins may be able to find it using [[w:Grep|grep]]. There should be no need for people manually writing which service doesn't use PHP (unless they enable PHP, but not actually using it). Personally I don't even remember what my setup is. Would be easier if some TF admin would post a list. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:33, 22 October 2026 (UTC)
1r25ug5qt5bw7s2sfnrryq6pzt6hazp
2471957
2471956
2026-10-22T08:50:44Z
TheDJ
95
/* Toolforge (no PHP) */ zonestamp
2471957
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
*:I would like to add that due to wikidata-externalid-url not being available, some links to other dictionaries (often used as references) on Bengali Wiktionary are currently broken. [[User:Redmin|Redmin]] ([[User talk:Redmin|talk]]) 07:27, 22 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:namehistory]], [[:toolforge:checkusertools]], [[:toolforge:rangetree]], [[:toolforge:wiki-mail-verify]], [[:toolforge:flaggedrevspromotioncheck]], [[:toolforge:dewiki-votecheck]], [[:toolforge:spamcheck]]: web services, no PHP. xlinks, dewiki-voterightsnotifier, dewikisignbot, dewiki-rangeblock: bots, no PHP. [[:toolforge:globallinksearch]], globalspeedies: only registered, no code yet and will not be PHP. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]])
* [[:toolforge:zabytki]] – JS only; no server-side dynamic stuff. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:20, 22 October 2026 (UTC)
* [[:toolforge:zonestamp]] nodeJS - used to share event and meeting dates [[User:TheDJ|TheDJ]] ([[User talk:TheDJ|talk]]) 08:50, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:stimmberechtigung]]: PHP tool for voting rights check on German Wikipedia. I will be available for update. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]]) 06:44, 22 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
* [[:toolforge:dna]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:authors]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:wiwosm]] not sure; I can try to up the image setting and work on resolving bugs if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:objectium]] PHP, build packs. Low prio [[User:TheDJ|TheDJ]] ([[User talk:TheDJ|talk]]) 08:49, 22 October 2026 (UTC)
===Cloud VPS (no PHP)===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
* [[Nova Resource:Google-api-proxy|google-api-proxy]] uses no PHP per @[[User:MusikAnimal|MusikAnimal]], and is a dependency of [[toolforge:copyvios]]. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 05:03, 22 October 2026 (UTC)
===Cloud VPS (PHP)===
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
* <code>xtools</code>, <code>commtech</code> (and soon to moved to <code>pageviews</code>), and <code>copypatrol</code> are all PHP, but myself and/or Moderator Tools are able to patch them as soon as we are able to SSH in again. <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 05:03, 22 October 2026 (UTC)
== Why not just enable Toolforge without PHP images ==
From what I recall, TF works with the images enabled in the web configuration. You could try disabling, removing, or renaming those images, then running TF again. Afterward, you can work on restoring the PHP services by upgrading images.
I believe the information about what image is available in the configuration files, so admins may be able to find it using [[w:Grep|grep]]. There should be no need for people manually writing which service doesn't use PHP (unless they enable PHP, but not actually using it). Personally I don't even remember what my setup is. Would be easier if some TF admin would post a list. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:33, 22 October 2026 (UTC)
l8v6k8d87hwuvzyx7u1zo6ojkq362b9
2471968
2471957
2026-10-22T10:42:27Z
Pepe piton
37027
/* Exceptions */ Added Paulina tool to exceptions
2471968
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
*:I would like to add that due to wikidata-externalid-url not being available, some links to other dictionaries (often used as references) on Bengali Wiktionary are currently broken. [[User:Redmin|Redmin]] ([[User talk:Redmin|talk]]) 07:27, 22 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:namehistory]], [[:toolforge:checkusertools]], [[:toolforge:rangetree]], [[:toolforge:wiki-mail-verify]], [[:toolforge:flaggedrevspromotioncheck]], [[:toolforge:dewiki-votecheck]], [[:toolforge:spamcheck]]: web services, no PHP. xlinks, dewiki-voterightsnotifier, dewikisignbot, dewiki-rangeblock: bots, no PHP. [[:toolforge:globallinksearch]], globalspeedies: only registered, no code yet and will not be PHP. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]])
* [[:toolforge:zabytki]] – JS only; no server-side dynamic stuff. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:20, 22 October 2026 (UTC)
* [[:toolforge:zonestamp]] nodeJS - used to share event and meeting dates [[User:TheDJ|TheDJ]] ([[User talk:TheDJ|talk]]) 08:50, 22 October 2026 (UTC)
* [[:toolforge:paulina]] Python/Flask tool. No PHP at all. [[User:Pepe piton|Pepe piton]] ([[User talk:Pepe piton|talk]]) 10:42, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:stimmberechtigung]]: PHP tool for voting rights check on German Wikipedia. I will be available for update. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]]) 06:44, 22 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
* [[:toolforge:dna]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:authors]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:wiwosm]] not sure; I can try to up the image setting and work on resolving bugs if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:objectium]] PHP, build packs. Low prio [[User:TheDJ|TheDJ]] ([[User talk:TheDJ|talk]]) 08:49, 22 October 2026 (UTC)
===Cloud VPS (no PHP)===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
* [[Nova Resource:Google-api-proxy|google-api-proxy]] uses no PHP per @[[User:MusikAnimal|MusikAnimal]], and is a dependency of [[toolforge:copyvios]]. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 05:03, 22 October 2026 (UTC)
===Cloud VPS (PHP)===
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
* <code>xtools</code>, <code>commtech</code> (and soon to moved to <code>pageviews</code>), and <code>copypatrol</code> are all PHP, but myself and/or Moderator Tools are able to patch them as soon as we are able to SSH in again. <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 05:03, 22 October 2026 (UTC)
== Why not just enable Toolforge without PHP images ==
From what I recall, TF works with the images enabled in the web configuration. You could try disabling, removing, or renaming those images, then running TF again. Afterward, you can work on restoring the PHP services by upgrading images.
I believe the information about what image is available in the configuration files, so admins may be able to find it using [[w:Grep|grep]]. There should be no need for people manually writing which service doesn't use PHP (unless they enable PHP, but not actually using it). Personally I don't even remember what my setup is. Would be easier if some TF admin would post a list. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:33, 22 October 2026 (UTC)
d9ow2dkxu5xc687qg53r362k1ewel7m
2471969
2471968
2026-10-22T11:14:47Z
DamianZaremba
54
Add core cluebot related tools
2471969
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
*:I would like to add that due to wikidata-externalid-url not being available, some links to other dictionaries (often used as references) on Bengali Wiktionary are currently broken. [[User:Redmin|Redmin]] ([[User talk:Redmin|talk]]) 07:27, 22 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:namehistory]], [[:toolforge:checkusertools]], [[:toolforge:rangetree]], [[:toolforge:wiki-mail-verify]], [[:toolforge:flaggedrevspromotioncheck]], [[:toolforge:dewiki-votecheck]], [[:toolforge:spamcheck]]: web services, no PHP. xlinks, dewiki-voterightsnotifier, dewikisignbot, dewiki-rangeblock: bots, no PHP. [[:toolforge:globallinksearch]], globalspeedies: only registered, no code yet and will not be PHP. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]])
* [[:toolforge:zabytki]] – JS only; no server-side dynamic stuff. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:20, 22 October 2026 (UTC)
* [[:toolforge:zonestamp]] nodeJS - used to share event and meeting dates [[User:TheDJ|TheDJ]] ([[User talk:TheDJ|talk]]) 08:50, 22 October 2026 (UTC)
* [[:toolforge:paulina]] Python/Flask tool. No PHP at all. [[User:Pepe piton|Pepe piton]] ([[User talk:Pepe piton|talk]]) 10:42, 22 October 2026 (UTC)
* [[:toolforge:cluebotng-monitoring]] Prometheus/Grafana stack - used by other tools. [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
* [[:toolforge:cluebotng-review]] Python based (Django/Celery). Uses trove. [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
* [[:toolforge:cluebot-syncer]] Python based. [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:stimmberechtigung]]: PHP tool for voting rights check on German Wikipedia. I will be available for update. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]]) 06:44, 22 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
* [[:toolforge:dna]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:authors]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:wiwosm]] not sure; I can try to up the image setting and work on resolving bugs if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:objectium]] PHP, build packs. Low prio [[User:TheDJ|TheDJ]] ([[User talk:TheDJ|talk]]) 08:49, 22 October 2026 (UTC)
* [[:toolforge:cluebotng]] Command line process. Web interface can be disabled/replaced (otherwise blocked on T441917). [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
* [[:toolforge:cluebot3]] Command line process only (otherwise blocked on T441917). [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
===Cloud VPS (no PHP)===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
* [[Nova Resource:Google-api-proxy|google-api-proxy]] uses no PHP per @[[User:MusikAnimal|MusikAnimal]], and is a dependency of [[toolforge:copyvios]]. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 05:03, 22 October 2026 (UTC)
===Cloud VPS (PHP)===
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
* <code>xtools</code>, <code>commtech</code> (and soon to moved to <code>pageviews</code>), and <code>copypatrol</code> are all PHP, but myself and/or Moderator Tools are able to patch them as soon as we are able to SSH in again. <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 05:03, 22 October 2026 (UTC)
== Why not just enable Toolforge without PHP images ==
From what I recall, TF works with the images enabled in the web configuration. You could try disabling, removing, or renaming those images, then running TF again. Afterward, you can work on restoring the PHP services by upgrading images.
I believe the information about what image is available in the configuration files, so admins may be able to find it using [[w:Grep|grep]]. There should be no need for people manually writing which service doesn't use PHP (unless they enable PHP, but not actually using it). Personally I don't even remember what my setup is. Would be easier if some TF admin would post a list. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:33, 22 October 2026 (UTC)
hoqxm29xhyoi750qjxzvoiuyz895jg8
2471970
2471969
2026-10-22T11:17:40Z
DamianZaremba
54
/* Why not just enable Toolforge without PHP images */ Reply
2471970
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
*:I would like to add that due to wikidata-externalid-url not being available, some links to other dictionaries (often used as references) on Bengali Wiktionary are currently broken. [[User:Redmin|Redmin]] ([[User talk:Redmin|talk]]) 07:27, 22 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:namehistory]], [[:toolforge:checkusertools]], [[:toolforge:rangetree]], [[:toolforge:wiki-mail-verify]], [[:toolforge:flaggedrevspromotioncheck]], [[:toolforge:dewiki-votecheck]], [[:toolforge:spamcheck]]: web services, no PHP. xlinks, dewiki-voterightsnotifier, dewikisignbot, dewiki-rangeblock: bots, no PHP. [[:toolforge:globallinksearch]], globalspeedies: only registered, no code yet and will not be PHP. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]])
* [[:toolforge:zabytki]] – JS only; no server-side dynamic stuff. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:20, 22 October 2026 (UTC)
* [[:toolforge:zonestamp]] nodeJS - used to share event and meeting dates [[User:TheDJ|TheDJ]] ([[User talk:TheDJ|talk]]) 08:50, 22 October 2026 (UTC)
* [[:toolforge:paulina]] Python/Flask tool. No PHP at all. [[User:Pepe piton|Pepe piton]] ([[User talk:Pepe piton|talk]]) 10:42, 22 October 2026 (UTC)
* [[:toolforge:cluebotng-monitoring]] Prometheus/Grafana stack - used by other tools. [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
* [[:toolforge:cluebotng-review]] Python based (Django/Celery). Uses trove. [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
* [[:toolforge:cluebot-syncer]] Python based. [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:stimmberechtigung]]: PHP tool for voting rights check on German Wikipedia. I will be available for update. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]]) 06:44, 22 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
* [[:toolforge:dna]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:authors]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:wiwosm]] not sure; I can try to up the image setting and work on resolving bugs if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:objectium]] PHP, build packs. Low prio [[User:TheDJ|TheDJ]] ([[User talk:TheDJ|talk]]) 08:49, 22 October 2026 (UTC)
* [[:toolforge:cluebotng]] Command line process. Web interface can be disabled/replaced (otherwise blocked on T441917). [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
* [[:toolforge:cluebot3]] Command line process only (otherwise blocked on T441917). [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
===Cloud VPS (no PHP)===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
* [[Nova Resource:Google-api-proxy|google-api-proxy]] uses no PHP per @[[User:MusikAnimal|MusikAnimal]], and is a dependency of [[toolforge:copyvios]]. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 05:03, 22 October 2026 (UTC)
===Cloud VPS (PHP)===
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
* <code>xtools</code>, <code>commtech</code> (and soon to moved to <code>pageviews</code>), and <code>copypatrol</code> are all PHP, but myself and/or Moderator Tools are able to patch them as soon as we are able to SSH in again. <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 05:03, 22 October 2026 (UTC)
== Why not just enable Toolforge without PHP images ==
From what I recall, TF works with the images enabled in the web configuration. You could try disabling, removing, or renaming those images, then running TF again. Afterward, you can work on restoring the PHP services by upgrading images.
I believe the information about what image is available in the configuration files, so admins may be able to find it using [[w:Grep|grep]]. There should be no need for people manually writing which service doesn't use PHP (unless they enable PHP, but not actually using it). Personally I don't even remember what my setup is. Would be easier if some TF admin would post a list. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:33, 22 October 2026 (UTC)
:That would only cover a subset of tools (those using web images) - component based tools would require the images analysis (SBOM) to see what software is installed.
:I do agree it would be easier to just block all web traffic, allowing access to check tool users/files and then make a case for un-blocking (would also allow patching), alas that is not the current strategy. [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:17, 22 October 2026 (UTC)
cl0mzkqyzii5885jyoxsstmpxycpwu6
2471971
2471970
2026-10-22T11:57:33Z
Strainu
188
/* Toolforge (no PHP) */ Reply
2471971
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
*:* [[toolforge:patrocle]]
*:* [[toolforge:eventfeedback]]
*:Are both in python [[User:Strainu|strainu]] ([[User talk:Strainu|talk]]) 11:57, 22 October 2026 (UTC)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
*:I would like to add that due to wikidata-externalid-url not being available, some links to other dictionaries (often used as references) on Bengali Wiktionary are currently broken. [[User:Redmin|Redmin]] ([[User talk:Redmin|talk]]) 07:27, 22 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:namehistory]], [[:toolforge:checkusertools]], [[:toolforge:rangetree]], [[:toolforge:wiki-mail-verify]], [[:toolforge:flaggedrevspromotioncheck]], [[:toolforge:dewiki-votecheck]], [[:toolforge:spamcheck]]: web services, no PHP. xlinks, dewiki-voterightsnotifier, dewikisignbot, dewiki-rangeblock: bots, no PHP. [[:toolforge:globallinksearch]], globalspeedies: only registered, no code yet and will not be PHP. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]])
* [[:toolforge:zabytki]] – JS only; no server-side dynamic stuff. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:20, 22 October 2026 (UTC)
* [[:toolforge:zonestamp]] nodeJS - used to share event and meeting dates [[User:TheDJ|TheDJ]] ([[User talk:TheDJ|talk]]) 08:50, 22 October 2026 (UTC)
* [[:toolforge:paulina]] Python/Flask tool. No PHP at all. [[User:Pepe piton|Pepe piton]] ([[User talk:Pepe piton|talk]]) 10:42, 22 October 2026 (UTC)
* [[:toolforge:cluebotng-monitoring]] Prometheus/Grafana stack - used by other tools. [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
* [[:toolforge:cluebotng-review]] Python based (Django/Celery). Uses trove. [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
* [[:toolforge:cluebot-syncer]] Python based. [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:stimmberechtigung]]: PHP tool for voting rights check on German Wikipedia. I will be available for update. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]]) 06:44, 22 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
* [[:toolforge:dna]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:authors]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:wiwosm]] not sure; I can try to up the image setting and work on resolving bugs if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:objectium]] PHP, build packs. Low prio [[User:TheDJ|TheDJ]] ([[User talk:TheDJ|talk]]) 08:49, 22 October 2026 (UTC)
* [[:toolforge:cluebotng]] Command line process. Web interface can be disabled/replaced (otherwise blocked on T441917). [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
* [[:toolforge:cluebot3]] Command line process only (otherwise blocked on T441917). [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
===Cloud VPS (no PHP)===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
* [[Nova Resource:Google-api-proxy|google-api-proxy]] uses no PHP per @[[User:MusikAnimal|MusikAnimal]], and is a dependency of [[toolforge:copyvios]]. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 05:03, 22 October 2026 (UTC)
===Cloud VPS (PHP)===
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
* <code>xtools</code>, <code>commtech</code> (and soon to moved to <code>pageviews</code>), and <code>copypatrol</code> are all PHP, but myself and/or Moderator Tools are able to patch them as soon as we are able to SSH in again. <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 05:03, 22 October 2026 (UTC)
== Why not just enable Toolforge without PHP images ==
From what I recall, TF works with the images enabled in the web configuration. You could try disabling, removing, or renaming those images, then running TF again. Afterward, you can work on restoring the PHP services by upgrading images.
I believe the information about what image is available in the configuration files, so admins may be able to find it using [[w:Grep|grep]]. There should be no need for people manually writing which service doesn't use PHP (unless they enable PHP, but not actually using it). Personally I don't even remember what my setup is. Would be easier if some TF admin would post a list. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:33, 22 October 2026 (UTC)
:That would only cover a subset of tools (those using web images) - component based tools would require the images analysis (SBOM) to see what software is installed.
:I do agree it would be easier to just block all web traffic, allowing access to check tool users/files and then make a case for un-blocking (would also allow patching), alas that is not the current strategy. [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:17, 22 October 2026 (UTC)
l9l9qxd66t7m700izxespxsll7bi5hx
2471972
2471971
2026-10-22T11:58:17Z
Strainu
188
/* Toolforge (no PHP) */ Reorder
2471972
wikitext
text/x-wiki
== Exceptions ==
Please specify if your tool doesn't run PHP and/or if you're available to upgrade it once it will be back up.
===Toolforge (no PHP)===
* [[Tool:Stashbot|stashbot]], [[Tool:Bridgebot|bridgebot]], [[:mw:wikibugs|wikibugs]], [[Tool:Jouncebot|jouncebot]] – important IRC bots; none use PHP as far as [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 18:10, 21 October 2026 (UTC) is aware (Python, Go, Python, Python)
* ztools
* feather
* pid-bangladesh-uploadbot2
* [[m:wikinewsie|wikinewsie]], no PHP
* wikiauthbot-ng - Rust, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 18:11, 21 October 2026 (UTC)
* [[toolforge:techcontribs]], [[toolforge:deputy]], [[toolforge:ultraviolet]] – 100% sure that these don't use PHP. Theoretically, I can upgrade all of my tools to be PHP-safe but I don't have a full list of tools as a reference (because [[toolforge:ldap]] is down. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* [[toolforge:copyvios]] – uses Python (cc @[[User:The Earwig|The Earwig]]) <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 18:18, 21 October 2026 (UTC)
* tfaprotbot (100% Rust, no web UI), adminbot responsible for protecting English Wikipedia's "Today's Featured Article". [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:21, 21 October 2026 (UTC)
* apt-browser, ldap (100% Rust), I think these will be useful for remediation and tracking efforts. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* prosesize (100% Rust), used by a popular gadget on English Wikipedia (and probably elsewhere), used in DYK and other processes. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 18:24, 21 October 2026 (UTC)
* [[toolforge:anomiebot]] has no PHP, unless I'm much misremembering. Web-facing stuff (which is minimal) should be all Perl. [[User:Anomie|Anomie]] ([[User talk:Anomie|talk]]) 18:43, 21 October 2026 (UTC)
* [[en:User:DYKUpdateBot|DYKUpdateBot]], adminbot responsible for updating the Did you know section of Enwiki's Main Page, is pretty much 100% Python on top of Pywikibot, with a minimal amount of bash as the "glue". Toolforge project <code>dykbot</code> I believe. [[User:Shubinator|Shubinator]] ([[User talk:Shubinator|talk]]) 19:11, 21 October 2026 (UTC)
* [[Tool:Ldap]] (rust): browse Developer account/WMCS LDAP directory
* [[gitlab:toolforge-repos/disabled-tools]] (python): Tool shutdown dashboard
* [[Tool:Etherpad-backup]] (python): Archival storage of etherpad data
* [[Tool:Gitlab-account-approval]] (python): New gitlab account approval
* [[GitLab/Webhooks]] (python): link github MRs to Phab, also used by [[:mw:wikibugs]]
* [[Tool:Ircservserv]] (rust): IRC channel configuration management
* [[Tool:Openstack-browser]] (python): OpenStack project inspector
* [[gitlab:toolforge-repos/k8s-status]] (python): Toolforge Kubernetes inspector
* [[Tool:Phab-ban]] (python): Community bans of Phab abusers
* [[Tool:Toolviews]] (python): Toolforge webservice usage reporting
* [[Tool:Wmopbot]] (python): IRC cloaks, IRC ban helper
* [[Tool:Gitlab-content]] (go): gitlab data export, used by popular [[m:Cite Unseen]] user script
* inaturalistreviewer: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* anticompositebot: python bot, no PHP [[User:AntiCompositeNumber|AntiCompositeNumber]] ([[User talk:AntiCompositeNumber|talk]]) 19:07, 21 October 2026 (UTC)
* [[:gitlab:countcount/xlinks]] (Rust, also known as spamcheck): Used a lot at [[:m:Talk:Spam blacklist]]. Maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/multiuserinfo]] (Rust) and [[:gitlab:toolforge-repos/allblocksever]] (Vue): Power [[:m:User:Count Count/userinfo]]. The latter has its own site. Both maintained by [[User:Count Count|Count Count]]. [[User:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[User talk:NguoiDungKhongDinhDanh|talk]]) 19:09, 21 October 2026 (UTC)
* fireflytools, tenshihinanawi-bot (Python+bash scripts, Python) [[User: Tenshi Hinanawi|Tenshi!]] ([[User talk: Tenshi Hinanawi|Talk page]]) 19:49, 21 October 2026 (UTC)
* ptable - python. My other tools (author-disambiguator, wikidata-externalid-url, property-helper) are all php based, I can help update them if needed when things are back up; exteranlid-url might be the most urgent of those. [[User:ArthurPSmith|ArthurPSmith]] ([[User talk:ArthurPSmith|talk]]) 20:18, 21 October 2026 (UTC)
*:I would like to add that due to wikidata-externalid-url not being available, some links to other dictionaries (often used as references) on Bengali Wiktionary are currently broken. [[User:Redmin|Redmin]] ([[User talk:Redmin|talk]]) 07:27, 22 October 2026 (UTC)
* daily-article-l, flammablebot (Python only) [[User:FlammablePizza|FlammablePizza]] ([[User talk:FlammablePizza|talk]]) 20:55, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/nichesportsbot|nichesportsbot]] - python bot, no PHP. Maintains the case tables at [[:en:WP:AI noticeboard]] [[User:NicheSports|NicheSports]] ([[User talk:NicheSports|talk]]) 21:08, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/leximap]] (Codex + Python), [[:gitlab:toolforge-repos/sangkalak]] (Vue + Python), [[:gitlab:toolforge-repos/promanika]] (Vue + Rust), [[:gitlab:toolforge-repos/elemthala]] (and elemwala.toolforge.org and elemwala-backend.toolforge.org, on which Elemthala relies; both Python), talikak.toolforge.org (Python), hangor.toolforge.org (Python), mishramilan.toolforge.org (Vue + Python). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:26, 21 October 2026 (UTC)
* [[Tool:afdstats|afdstats]] and [[:toolforge:afdstats2|afdstats2]] (python). These tools use the "python3.13" pre-built webservice image. They do not use PHP. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-ahechtbot|Ahechtbot]] and [[:toolhub:tools/toolforge-wikiprojectlist|WikiProjectList]] (python and nodejs): no webservice. Needed for updating the database used by the [[:en:Template:High-use]] template and the database of WikiProjects used for [[:en:Wikipedia:WikiProject Articles for creation/Helper script]], [[:en:Wikipedia:WikiProject Articles for creation/Add WikiProject tags]], and other scripts. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[toolforge:mna]] is a Node app (albeit with a Trove database, if that matters), and [[toolforge:wikidata-discographer]] is also a Node app, using ToolsDB. [[User:Nicereddy|Nicereddy]] ([[User talk:Nicereddy|talk]])
* [[toolforge:russbot]] is all Python; no PHP usage. —[[User:R'n'B|russblau]] ([[User talk:R'n'B|talk]]) 22:18, 21 October 2026 (UTC)
* [[toolforge:spacemedia]] is all Java; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:31, 21 October 2026 (UTC)
* [[toolforge:video2commons]] is all Python; no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:32, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/fr-toolkit]] NodeJS/Vue webapp; no PHP usage. --[[User:PPenloglou-WMF|PPenloglou-WMF]] ([[User talk:PPenloglou-WMF|talk]]) 23:55, 21 October 2026 (UTC)
* [[toolforge:hub]] (source: [https://codeberg.org/maxlath/hub codeberg:maxlath/hub]) is all Node.js; no PHP usage. [[User:Bb010g|Bb010g]] ([[User talk:Bb010g|talk]]) 00:04, 22 October 2026 (UTC)
* [[:toolforge:matchandsplit]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:wsstats]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:qpqtool]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:link-dispenser]], all Python and JS (with Redis and Celery) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:sodium-bot]], all Python, no PHP -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:yapping-sodium]], Golang binaries, no web facing instance -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[toolforge:nanonabot01]] and [[toolforge:nanonabot2-01]] is all Node.js; no PHP usage.--[[User:Nanona15dobato|Nanona15dobato]] ([[User talk:Nanona15dobato|talk]]) 00:17, 22 October 2026 (UTC)
* [[:toolforge:SeroBOT]], an anti-vandalism secondary bot in Spanish Wikipedia/Wikibooks [[User:Superzerocool|Superzerocool]] ([[User talk:Superzerocool|talk]]) 01:17, 22 October 2026 (UTC)
* [[:toolforge:revibot]], revibot-i, revibot-ii; all pywikibot. Has php codes in other directory but never accessible from outsider and is just leftover from past testing. — [[User:Revi C.|<span style="color:green">레비</span>]][[User talk:Revi C.|<span style="color:green"><small>Revi</small></span>]] 01:37, 22 October 2026 (UTC)
* [[:toolforge:jawi]], only uses JS, CSS, and HTML for Malay script (ms-Latn to ms-Arab & IPA) conversion [[User:Hakimi97|Hakimi97]] ([[User talk:Hakimi97|talk]]) 01:56, 22 October 2026 (UTC)
* [https://fountain.toolforge.org/ Fountain], no PHP at all. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* chie-bot, no PHP. [[User:Le Loy|Le Loy]] ([[User talk:Le Loy|talk]]) 02:13, 22 October 2026 (UTC)
* [[toolforge:wsindex]], built with Python and Django. -- [[User:Bodhisattwa|Bodhisattwa]] ([[User talk:Bodhisattwa|talk]]) 02:21, 22 October 2026 (UTC)
* krinklebot, Python — cross-wiki file protection on Commons. [[User:Legoktm|Legoktm]] ([[User talk:Legoktm|talk]]) 02:35, 22 October 2026 (UTC)
* [[:toolforge:uploadmap]], only html files --[[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 04:28, 22 October 2026 (UTC)
* [[:toolforge:bup]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:bupc]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:tss]], no PhP -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:31, 22 October 2026 (UTC)
* [[:toolforge:namehistory]], [[:toolforge:checkusertools]], [[:toolforge:rangetree]], [[:toolforge:wiki-mail-verify]], [[:toolforge:flaggedrevspromotioncheck]], [[:toolforge:dewiki-votecheck]], [[:toolforge:spamcheck]]: web services, no PHP. xlinks, dewiki-voterightsnotifier, dewikisignbot, dewiki-rangeblock: bots, no PHP. [[:toolforge:globallinksearch]], globalspeedies: only registered, no code yet and will not be PHP. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]])
* [[:toolforge:zabytki]] – JS only; no server-side dynamic stuff. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:20, 22 October 2026 (UTC)
* [[:toolforge:zonestamp]] nodeJS - used to share event and meeting dates [[User:TheDJ|TheDJ]] ([[User talk:TheDJ|talk]]) 08:50, 22 October 2026 (UTC)
* [[:toolforge:paulina]] Python/Flask tool. No PHP at all. [[User:Pepe piton|Pepe piton]] ([[User talk:Pepe piton|talk]]) 10:42, 22 October 2026 (UTC)
* [[:toolforge:cluebotng-monitoring]] Prometheus/Grafana stack - used by other tools. [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
* [[:toolforge:cluebotng-review]] Python based (Django/Celery). Uses trove. [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
* [[:toolforge:cluebot-syncer]] Python based. [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
*:* [[toolforge:patrocle]]
*:* [[toolforge:eventfeedback]]
*:Are both in python [[User:Strainu|strainu]] ([[User talk:Strainu|talk]]) 11:57, 22 October 2026 (UTC)
===Toolforge (PHP)===
* [https://gerrit.wikimedia.org/g/labs/tools/guc gerrit:labs/tools/guc]: Global user contributions (PHP): Widely used by patrollers and counter vandalism efforts. I'll upgrade PHP as needed. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:43, 21 October 2026 (UTC)
* [[:gitlab:toolforge-repos/globalusagecount|globalusagecount]] and [[:toolforge:globalusagecountmirror|globalusagecountmirror]] (PHP). These tools use the "php8.4" pre-built webservice image. I will be available to upgrade if anything is needed beyond an update of that image. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 21:49, 21 October 2026 (UTC)
* [[:toolhub:tools/toolforge-randomincategory|RandomInCategory]], [[:toolhub:tools/toolforge-ircredirect|IRCRedirect]], [[:toolhub:tools/toolforge-excel2wiki|Excel2Wiki]] (PHP): I will be available to update. [[User:Ahecht|Ahecht]] ([[User talk:Ahecht|talk]]) 23:08, 21 October 2026 (UTC)
* [[:toolforge:stimmberechtigung]]: PHP tool for voting rights check on German Wikipedia. I will be available for update. --[[User:Count Count|Count Count]] ([[User talk:Count Count|talk]]) 06:44, 22 October 2026 (UTC)
* [[:toolforge:phetools]] '''DO NOT ENABLE''', has PHP code, is unmaintained. (It was decommissioned during the Grid Engine migration, unsure of what is running atm) -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:soda-test]] '''DO NOT ENABLE''', testing area, probably has an old version of croptool lying about (I think I took it down, but I am not sure), anything in that space can remain disabled. -- [[User:Sohom Datta|Sohom Datta]] ([[User talk:Sohom Datta|talk]]) 00:15, 22 October 2026 (UTC)
* [[:toolforge:gcapi]] '''DO NOT ENABLE''', tool is abandoned. Delete the single PhP file if you want. I will delete the tool when toolforge is available again. -- [[User:GreenC|GreenC]] ([[User talk:GreenC|talk]]) 04:41, 22 October 2026 (UTC)
* [[:toolforge:dna]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:authors]] should be able to run on php8; I can up the image setting if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:wiwosm]] not sure; I can try to up the image setting and work on resolving bugs if that is needed. --[[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:17, 22 October 2026 (UTC)
* [[:toolforge:objectium]] PHP, build packs. Low prio [[User:TheDJ|TheDJ]] ([[User talk:TheDJ|talk]]) 08:49, 22 October 2026 (UTC)
* [[:toolforge:cluebotng]] Command line process. Web interface can be disabled/replaced (otherwise blocked on T441917). [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
* [[:toolforge:cluebot3]] Command line process only (otherwise blocked on T441917). [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:14, 22 October 2026 (UTC)
===Cloud VPS (no PHP)===
* maps --saper 14:24, 21 October 2026 (UTC)
* [[m:IRC/WikiLounge|thelounge]]
* dwl – [[User:Giftpflanze|gifti]] ([[User talk:Giftpflanze|talk]]) 19:54, 21 October 2026 (UTC)
* mwoffliner uses no PHP. -[[User:Audiodude|Audiodude]] ([[User talk:Audiodude|talk]]) 21:21, 21 October 2026 (UTC)
* spacemedia (cloudvps workers) - All Java, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* video (video2commons encoders) - All Python, no PHP usage. --[[User:Don-vip|Don-vip]] ([[User talk:Don-vip|talk]]) 23:34, 21 October 2026 (UTC)
* outreachdashboard.wmflabs.org (globaleducation project), including `peony-database`, `peony-web`, `peony-sidekiq`, `peony-sidekiq-medium`, `peony-sidekiq-short`, and `p-and-e-dashboard-redis` - No PHP. Another instance in this project does use PHP, though, and I'll be eager to get it upgraded to restore access to Replica, which outreachdashbard relies on.--[[User:Sage (Wiki Ed)|Sage (Wiki Ed)]] ([[User talk:Sage (Wiki Ed)|talk]]) 00:58, 22 October 2026 (UTC)
* <code>wikiwho</code> is only Python, and the longer it stays down, the longer it will take to pick up on everything it missed (all edits across 74 language editions of Wikipedia). Getting that back up and running would be great. In addition, on behalf of the [[mw:Moderator Tools|Moderator Tools]] team, I'm requesting these Python projects be considered for restoration as well: <code>twl</code> and <code>wikilink</code> (The Wikipedia Library), and <code>hashtags</code>. Thank you! <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 04:36, 22 October 2026 (UTC)
* wiki-polis-backend: no Php. It serves as an internal backend for the Toolforge tool wiki-polis (Python/Flask, also no Php) [[User:Effeietsanders|Effeietsanders]] ([[User talk:Effeietsanders|talk]]) 04:38, 22 October 2026 (UTC)
* [[Nova Resource:Google-api-proxy|google-api-proxy]] uses no PHP per @[[User:MusikAnimal|MusikAnimal]], and is a dependency of [[toolforge:copyvios]]. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 05:03, 22 October 2026 (UTC)
===Cloud VPS (PHP)===
* cyberbot, per Skynet in #wikimedia-cloud 2026-10-21T16:49Z: has PHP but only one VM is actually vulnerable to the exploit. I will update PHP in all of the VMs to patch the vulnerability regardless. Ready to work on this immediately.[[User:Cyberpower678|Cyberpower678]] ([[User talk:Cyberpower678|talk]]) 18:00, 21 October 2026 (UTC)
* wm-bot Only the logs browser uses PHP, I can take that down. I also can be available to update for the next hour and then starting a couple hours later. [[User:MacFan4000|MacFan4000]] ([[User talk:MacFan4000|talk]]) 18:05, 21 October 2026 (UTC)
* [[m:Countervandalism_Network/Infrastructure#Wikimedia_Cloud_VPS|cvn]] - cvn-app instances don't have anything web-facing, PHP or otherwise. cvn-apache hosts a PHP webapp that I will update. [[User:Krinkle|Krinkle]] ([[User talk:Krinkle|talk]]) 21:39, 21 October 2026 (UTC)
* math runs PHP. It would be helpful to get ssh but no public HTTP access. Alternatively switch off all instances so I can block HTTP in the firewall before starting the VMs again. --[[User:Physikerwelt|physikerwelt]] ([[User talk:Physikerwelt|talk]]) 04:15, 22 October 2026 (UTC)
* <code>eseap</code> has one machine which uses PHP, <code>eseap-appserver-01</code>. Ready to update as soon as it's unblocked. <span style="font-weight: bold; font-style: italic;">[[User:Chlod Alejandro|Chlod]]</span> <span style="font-size: calc(1em - 2pt);">([[User talk:Chlod Alejandro|say hi!]]) (please ping on reply)</span> 04:47, 22 October 2026 (UTC)
* <code>xtools</code>, <code>commtech</code> (and soon to moved to <code>pageviews</code>), and <code>copypatrol</code> are all PHP, but myself and/or Moderator Tools are able to patch them as soon as we are able to SSH in again. <span style="font-family:sans-serif">— <span style="font-weight:bold">[[User:MusikAnimal|<span style="color:black; font-style:italic">MusikAnimal</span>]] <sup>[[User talk:MusikAnimal|<span style="color:green">talk</span>]]</sup></span></span> 05:03, 22 October 2026 (UTC)
== Why not just enable Toolforge without PHP images ==
From what I recall, TF works with the images enabled in the web configuration. You could try disabling, removing, or renaming those images, then running TF again. Afterward, you can work on restoring the PHP services by upgrading images.
I believe the information about what image is available in the configuration files, so admins may be able to find it using [[w:Grep|grep]]. There should be no need for people manually writing which service doesn't use PHP (unless they enable PHP, but not actually using it). Personally I don't even remember what my setup is. Would be easier if some TF admin would post a list. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 08:33, 22 October 2026 (UTC)
:That would only cover a subset of tools (those using web images) - component based tools would require the images analysis (SBOM) to see what software is installed.
:I do agree it would be easier to just block all web traffic, allowing access to check tool users/files and then make a case for un-blocking (would also allow patching), alas that is not the current strategy. [[User:DamianZaremba|damian]] ([[User talk:DamianZaremba|talk]]) 11:17, 22 October 2026 (UTC)
bps8yuewznnm3d3exogu01w0iac8fut
Talk:Incidents/2026-10-21 PHP security update
1
460843
2471848
2026-10-21T15:23:55Z
GPSLeo
38467
/* Thumbnails vanishing */ new section
2471848
wikitext
text/x-wiki
== Thumbnails vanishing ==
I am writing here as the Phabricator is still down. It seems that something is currently deleting all thumbnails for files. [[User:GPSLeo|GPSLeo]] ([[User talk:GPSLeo|talk]]) 15:23, 21 October 2026 (UTC)
cvkomvut4t98k9z0wxbwknfcdyfd4mo
User:Bafanat89
2
460844
2471967
2026-10-22T10:07:51Z
Bafanat89
39570
Shares and Crypto
2471967
wikitext
text/x-wiki
Milli-Ki
icwnbxjqkiwdya60u2ppi22u1q23vc2