Developer

The changelog: every launcher build we have published, newest first. Your launcher keeps itself up to date — this is the record of what changed and when. Open any build for its full notes, and react to it.

launcher

launcher

active v2026.09.11.1200
  1. Dynasty — sleep words and auto login

    Sleep words are now read for Dynasty. Dynasty draws its sleep words with its own fonts, so the reader that handled other servers never fitted it. It now has a trained reader of its own on BotWith.me: a sleep word is sent up, read, and typed back for you in well under a second. It answers only when it is sure — when it isn't, you're told why and your credit is refunded; ask the game for a different word and it reads that one. Nothing to set up on your side.

    The launcher no longer saves sleep words to disk. The temporary sleeping/ folder is gone.

    Auto login works on Dynasty. Two things were wrong. Auto login is per character, and Dynasty characters had it unset — check the character's card (or Settings → Login → Auto login) to turn it on. And the login click was aimed at Falador's screen layout; on Dynasty it now presses the client's own login button directly, whatever size your window is, and leaves the account hub on its own if it lands there. The console login command now tells you whether auto login is on for that client, where that setting came from, and exactly how the next login will be performed.
  2. Launcher 2026.09.10.2005

    Input
    • Clicks sometimes needed spamming before one registered. Fixed — a click was being cancelled before the game could read it.
    • You no longer have to click the game before you can type. Clicking anything in the launcher was quietly taking the keyboard.
    • Buttons on the rail and in settings no longer steal the keyboard from the game.
    • Coming back from another window gives the keyboard back to the game.


    DragonFire
    • The keyboard now works at all — it was dead on DragonFire clients.
    • Nothing the launcher sent was reaching the server. Shops, spells, banking and logout now work.
    • The bank was reading the pouch. Every bank read was wrong; both are now separate and correct.
    • Shops supported, including the points shop, plus bank tabs, search and loadout lists.
    • Auto-login and walking now supported.


    Per-server
    • Characters, bank search and run history now show only the client you have selected, instead of every server's at once.


    Scripting
    • 43 new commands for the pouch, the points shop and bank tabs. DragonFire only — on other servers they answer safely rather than failing.


    Known
    • DragonFire dialogue options need the old dialogue UI, not the custom one. Toggle it in the game's settings.
  3. Test
  4. Login per account, and clients that update themselves


    Auto login moved onto the character. It was one switch in Settings shared by every client in the window. It is now on the account's card in the Characters tab:

    • Log back in automatically — yes, no, or leave it on the default.
    • Wait first (seconds) — blank follows the default.


    The wait is jittered a second either way, so several clients never come back on the same tick. Nothing to do on upgrade — every character carries on as it was.

    Clients update themselves between scheduled runs. When one run finishes and before the next starts, the launcher checks whether the server has shipped a newer client. If it has, it downloads it, closes the old one, opens the new one on the same account without asking, and the schedule carries on.

    It will not swap onto a build we have no hooks for yet — it waits and tries again — and it only closes the old client once the new one is downloaded and checked, so a failed download leaves you on the client you already have.

    Closing a client now logs its character out, including when you close the launcher. Characters were being left standing in the world.
  5. Accounts, schedules, and a sleep reader that stops guessing


    A big update. Characters now carry their own login, the scheduler has moved onto the character it belongs to, the sleep captcha reader handles both kinds the game throws at it, and scripts can log themselves out.




    Character hub


    The Identity tab is now a character hub. Click an account and its own card opens with everything about it in one place.

    • Save a username and password per character. Passwords are encrypted on your machine with a key that never leaves it. They are never sent to us, never written to a log, never in a crash report, and no script can read them.
    • Every new client asks which account to use. Pick one, or pick "No account" and that client runs completely unspoofed - your own machine, your own connection, no proxy - for the accounts you play yourself.
    • The login boxes stay filled. Once a client is on an account the username and password are put in, and put back. Type over them and they come straight back.
    • "No spoof" hides the uid, machine and proxy fields, because none of them apply to an account you are not spoofing.
    • A hand-typed login that works is saved for you. Log in by hand once and that account is in the hub afterwards.
    • Every client's title bar shows the account it is linked to, and the console is now per client - click a client and you see that client's output and nothing else.





    Scheduler


    The scheduler has left Settings and moved into the character card, because a schedule belongs to a character, not to the launcher. There used to be one schedule and every client in the window obeyed it, so a day written for the account you were looking at also stopped and started the five beside it.

    • The day in quarter-hours. Each column is an hour, top to bottom :00 :15 :30 :45. Left-drag from one quarter-hour to another and everything between them is picked - that is when this character may bot.
    • Right-click a quarter-hour to say what runs from there on. Anything: a script on your computer, a script from the site, or any .jar or .bot file you point it at. It keeps running through every botting hour until you place another script later in the day, and then that one takes over.
    • Hover a quarter-hour and it tells you what runs then.
    • A "Schedule active" switch, off until you turn it on. Draw the day first and switch it on when you mean it.
    • Export, import, and copy from another character. A day worked out over a week is worth keeping - save it to a file, send it to a friend, or put it on a second character without drawing it again.
    • When the day is done it logs out, and it stays out - auto-login will not quietly pull it back in. It keeps asserting it until the character is actually gone rather than sending one packet and hoping.
    • It only takes charge once you have run a script on that client. Opening the launcher outside your botting hours will not log you in and log you straight back out.





    Sleeping words


    Two things, and the second one is the one that has been biting people.

    It reads both kinds now. The classic word, and the newer arithmetic ones - a sum on a black background. The reader works out which kind arrived on its own; there is nothing to choose.

    And it will not type a stale word. An answer is now tied to the exact sleep image it was read from, so a word from a previous picture can never be typed for a new one. If a fresh image arrives while an answer is in flight, the old answer is thrown away, the new picture is read, and that is what gets typed. Duplicate images are recognised as duplicates rather than answered twice, and a word that cannot be read is re-probed instead of guessed at.




    logout, in scripts


    New command in the text engine. It sends the game's own logout packet rather than clicking the button, so it works from anywhere without opening a tab first.

    logout()
    wait until not loggedIn() timeout 10000 else { print("still in - in combat?") }


    The server has the final say. It refuses while you are in combat or have just been, and it says nothing when it refuses - so check loggedIn() afterwards rather than trusting the answer.




    Also in this build


    • Closing a client closes that client. When it was the only one open it used to close the whole launcher.
    • The client now loads while you are choosing an account, rather than after.
    • A client losing its window while shutting down no longer crashes itself on the way out.
  6. - Names on parked clients
    - Toast system to show messages sent when a client is parked
    - Flash on clients not selected when someone is talking to you and nobody else is around.
  7. - Fix to Dynasty client loading
    - Fix voidscape 2 broken hooks
    - Text engine IDE now detects what client you're focused on and runs it on that deck
    - Implemented Rent a bear system where she can bot on her phone
  8. - Fixes to multi client mouse and keyboard
    - Fixed login screen login (There new login screen)

    Rewrote the input handlers to support multi clients better now so client > 2 will not type sleep word on client 1
  9. Shops


    Scripts can now read a shop and trade with it. Everything the shop window knows is readable, and buying and selling go out as the client's own packets rather than by driving the dialog.




    Reading a shop


    Open a shop and a script can see the whole of it: every slot, what is in it, how many the shop has, and what each one is worth in both directions.

    on loop {
        if not shopIsOpen() { return 1000 }
    
        for row in shop() {
            print(row.name, "x" + str(row.stock), "buy", row.buyPrice, "sell", row.sellPrice)
        }
        return 600
    }


    • Every slot, as a handle.
      shop()
      hands back the filled slots in grid order, each with
      .slot .id .stock .buyPrice .sellPrice .priceBasis .name
      . Find one directly with
      shopItem(151)
      ,
      shopItem("Coal")
      or
      shopSlot(2)
      .
    • The shop's own numbers as well:
      shopIsGeneralStore()
      ,
      shopCount()
      ,
      shopBuyPriceMod()
      ,
      shopSellPriceMod()
      ,
      shopPriceMultiplier()
      , and which slot the window has highlighted.
    • A stock of 0 is a real slot the shop has run out of — still sellable to, not buyable until it restocks. In a general store your own bag is listed alongside the stock, which is how selling there works at all, and those slots sit at 0.





    Prices, properly


    Classic shops do not have a price list. The price is worked out fresh from the item's value, the shop's two percentages, and how far that slot's stock has drifted from where the shop thinks it should be — so every one you buy makes the next one dearer, and every one you sell makes the next one cheaper.

    Scripts get that same curve rather than an approximation of it:

    # what one costs, and what ten actually cost - not ten times the first
    print("each:", shopBuyPrice("Coal"))
    print("ten :", shopBuyPrice("Coal", 10))


    So a script can decide whether a stack is worth buying before it buys any of it, and a shop-clearing bot can stop at the point the price stops being worth it. A price of
    -1
    means the trade would not be offered at all — out of stock, or something that shop will not take.




    Buying and selling


    shopBuy("Coal", 10)
    shopSell("Bones", 5)
    shopSellAll("Bones")
    shopClose()


    • They wait for the result. A
      false
      means the trade really did not happen, not "the packet left" — the command sends and then waits for the bag to actually change, and prints why if it does not. No hand-tuned sleeps.
    • The window's own rules are kept. The amount is clamped to the shop's stock when buying and to what you are carrying when selling; a shop that does not list an item will not be asked to take it; and bank notes are refused anywhere but a general store, exactly as the game refuses them.
    • By id or by name, everywhere —
      shopBuy(151, 10)
      and
      shopBuy("Iron ore", 10)
      both work, and so do the price readers.





    For Java scripts


    The same thing lives at
    ctx.shop()
    :
    isOpen
    ,
    all
    ,
    byId
    /
    byName
    /
    bySlot
    ,
    stockOf
    ,
    buyPrice
    /
    sellPrice
    ,
    buy
    ,
    sell
    ,
    close
    , plus
    Shop.price(...)
    if you want to ask what a trade would cost without making it.




    Notes


    • RSCFalador for now.
      shopAvailable()
      says whether this client publishes the shop, and
      shopMissing()
      names anything unbound — so a script can say what is wrong instead of quietly doing nothing.
    • Prices need the item values the client keeps in its own cache. Where those are not published every price reads
      -1
      and
      shopPricesKnown()
      is false; the stock and the trading still work.
    • Every command has its own card in the shop group of the command reference, and the Claude scripting skill has been updated with worked examples: reading a shop, buying a stack at a price limit, and emptying the bag into a general store.
  10. Scripting: menu actions and hotkeys


    Two additions to the .bot language, both documented with worked examples on the docs site.

    • on menu. A new event that runs for every menu action your client sends — attacking, taking, mining, casting — whether the script asked for it or you clicked it yourself. It arrives with the thing it acted on already resolved, so a looter counts pickups from the action rather than from a chat line it might miss, and a script can tell when somebody has taken the mouse. Fifty kinds and twenty-one readers; RSCFalador for now.
    • Keys and buttons, written up properly.
      hotkey("F1", "onBank")
      binds a key in the game window and
      uiButton
      puts the same job on the script tab. Both run your fun on the script thread between passes, so they never interrupt a pass and are safe to share variables with.
  11. Everything since the last update


    It has been a while since the last published build, and rather a lot has gone into this one. The short version: you can run several clients in one window, there are two more servers to run them on, the launcher has its own script editor, you can drive a bot from a browser anywhere, every login can go out through its own proxy and identity, and there is now a real browser tile you can put beside the game.




    Several clients in one window


    The big one. The launcher now holds as many clients as you want to run, tiled inside a single window instead of one window each.

    • Split however you like. Side by side, stacked, or any mix of the two. Drag a divider to resize, drag a client by its title strip to move it somewhere else, and drop it on the half of another tile you want it to take.
    • Layout presets. Grid, columns, rows, or one main client with the rest alongside it. There is a layout button on the rail with thumbnails of each.
    • Choose where new clients go instead of always splitting the same way, and whether a client is stretched to its tile or kept at its true size.
    • Park and solo. Park a client to a strip along the bottom to get it out of the way without closing it, or solo one to give it the whole window for a moment.
    • Keyboard. Ctrl+Tab cycles clients, Ctrl+Shift and an arrow moves the active one to an edge, and Ctrl+Shift+1 to 9 jumps straight to a client. Keys a running script has claimed are left alone.
    • Console commands for all of it, if you would rather type:
      deck preset main-left
      ,
      deck park 2
      ,
      deck solo
      and so on.


    Everything that used to belong to "the client" now belongs to each client separately: its own login identity, its own sleep-word reading, its own overlays and scripts, its own remote stream. Running four at once behaves like running four launchers, in one window.




    Two more servers


    Alongside RSCFalador you can now run DragonFire and Voidscape. The launcher fetches the server list from the site, so new servers appear without you updating anything.




    The window itself


    • Resize it. Grab any edge or corner, or maximise it. The game is never stretched out of shape; it is kept at its proper proportions with the space around it. Your size and position are remembered.
    • A sidebar you can arrange. Drag the buttons into whatever order suits you, and move the whole rail to the other side of the window. It stays where you put it.
    • A better console. Filter it, search it, clear it, scroll back through what you have typed, and complete commands with Tab.
    • Appearance. A theme editor with light and dark, and control over the accent and the overlay colours, so the launcher and the overlays look how you want.





    Write scripts in the launcher


    There is a full editor for .bot scripts built in: syntax highlighting, live error checking as you type, completion, hover help, a problems list and a command palette. Run and stop from the editor, with the output in its own console beside the code. It runs the script on the client you have in front of you, and remembers which one it started on so Stop always stops the right thing.




    Drive a bot from anywhere


    Remote control from a browser: a live view of the client, click and type into it from the page, and start, stop and watch scripts. Each client streams itself, and sessions are labelled so two clients on the same server are easy to tell apart.




    Logging in


    • Auto login. The launcher notices when a character has been logged out and logs it back in, after a delay you set.
    • Mouse movement. Choose how the pointer moves: WindMouse, Bezier or linear.





    Identity and proxies


    Two switches on the Identity tab, and a pool behind them.

    • Use proxies only. No login ever goes out on your real address. If a character has no proxy to use, the login is stopped rather than sent.
    • BotWith proxies. The site keeps a pool of proxies, re-checked every ten minutes, and leases you one. A proxy leased to your account is yours alone for as long as you hold it. Nobody else is given it.
    • A character that is not saved yet is set up for you. Log in with a new name while proxies-only is on and it is given its own uid, its own machine id and a proxy, saved on the spot, so that account presents the same face every time.
    • A dead proxy is replaced. The launcher proves your proxy answers before the client dials it. If it does not, it is reported to the pool so nobody else is handed it, and your character is moved onto a live one automatically.





    A browser inside the launcher


    Open New client and you will see a new option: Browser. It drops a real browser into the deck as another tile, so the docs, a guide, a stream or a video can sit beside the game instead of behind it.

    • It is the browser you already have. Nothing is bundled and nothing is downloaded. The tile borrows the Edge or Chrome already on your machine, so pages behave exactly as they do when you browse normally.
    • Its own profile. Anything you sign into here never touches your everyday browsing, and it stays signed in between sessions.
    • Our own bar with back, forward, reload, home and one box that takes an address or a search, plus a start page for the docs, the forum, the script library and the usual places to watch something.
    • Media controls appear along the bottom of the window when a page starts playing: play and pause, ten seconds each way, next, a scrubbable position line with the running time, mute and volume. They go away on their own when nothing is playing, and fold down to a thin strip that still shows progress. Click the strip to bring them back.
    • Full screen fills the tile rather than escaping it, and Escape brings you back out.
    • Permission popups are declined for you, so no site interrupts you asking for your location or to send notifications.


    Requirements. Windows, and Java 22 or newer. The rest of the launcher still runs on Java 21 exactly as before; on 21 the Browser option simply is not offered. Worth knowing up front: video from the subscription services runs at up to 1080p, downloads for offline viewing are not available, and the browser tile does not appear in the remote stream.




    Scripts tab


    • Open a script and New script are now a pair of buttons at the top, out of the way of the list.
    • Click a script to read it: the full description, version, author and category, with Run on the same page.





    Fixes


    • Fixed being logged out at random on RSCFalador.
    • The New client window can be closed with the X.
    • The game window no longer flashes when clients are moved, resized, parked or soloed.
    • Long pages on the site no longer come up blank once they grow past a few hundred rows.
    • Several problems when closing one client in a multi-client window, including one that could clear the overlays of every other client still running.
  12. sdfhgadfhadfhdfah update quick I got to go work
  13. - Detection of same mouse movement clicking removed. So no longer gets flagged for central clicking.
  14. - Voidscape (Ugly server)
  15. RSCDynasty is now bottable

    You can now bot on RSCDynasty right alongside RSCFalador — just pick it from the server list in the launcher. It's fully wired up: NPCs, players, objects, ground items and world tiles all render and click, walking and pathfinding work, and the inventory, bank, minimap and tabs are mapped.




    SDN — scripts now know their server

    • Scripts can be tagged with the server(s) they run on
    • Uploaders pick one or more servers on upload — and can change it later from Manage
    • Every script shows a server pill, and the browser has a new Server filter so you can find scripts for your game fast





    Stability

    • Hopefully fixed the freezing
  16. - Fix to UI staying up while trying to click objects/npcs and boundaries.
  17. Game Data Browser — https://botwith.me/data
    Every item, NPC, object, spell and prayer in the game, searchable with the ids your scripts use. Items show their real inventory icons, NPCs render exactly as they draw in game (all 8 directions), and there's a full sprite & animation viewer — every frame, every offset, all downloadable. The data updates itself straight from the game's cache, so when the server adds content, we have it within minutes — and you can browse every past version of the cache with full history.

    Live World Map — botwith.me/data/falador/map
    The whole world, rendered tile-for-tile from the game's own map data — every floor, every dungeon, pan and zoom, with all scenery marked.

    Web Walker
    Click a start and end tile on the map and get the exact route the game will walk — doors get opened, gates get passed, ladders and staircases climbed across floors, all handled automatically. Then hit Copy and paste the ready-made path code straight into your script. There's an Area mode too: drag out a zone and get the area(...) code instantly. No more hand-picking waypoints, ever.

    Spells — always current
    Spell casting now reads the spellbook live from the game itself, so custom spells (yes, Edgeville Teleport works) and any future additions just work — this also fixed a bug where some higher spells could resolve to the wrong id.

    Claude Skill v3
    The scripting skill has been rebuilt with the complete current game data — all 2,400+ items, every NPC and object — plus it now knows the web walker and live data APIs. Your Claude can look up anything that exists right now and plan routes anywhere in the world. Grab the new version from the text doc page.
  18. Runs on every machine now. The client was rebuilt from the ground up — it no longer freezes on launch, and it runs on Windows-on-ARM (Surface / Snapdragon) as well as normal PCs. While a client loads you'll see it resolving the hooks live instead of a bar that looks stuck.
    Copy straight from the console. Both the in-game console and the script editor are now fully copyable — drag-select and Ctrl+C, right-click for Copy / Copy all / Select all, or hover an error and click Copy to grab the whole block in one go.
    Magic, from a script (for script writers). You can now cast spells straight from a .bot script — sent as real packets, no spellbook clicking:
    cast("Fire strike", goblin)
    castOnItem("High level alchemy", item)
    cast("Telekinetic grab", drop)
    teleport("Varrock")

    Fixes. The game window's close button always closes now, plus a batch of stability and performance improvements.
  19. - Fixes to the console
    - Fixes to how things are called.
  20. - Complete UI rewrite removing FX completely.. (You know who to blame)
  21. Enabled SSL, So all launchers need updating
  22. - new script APIs check docs.
  23. - Auto logging
    - Fix to options menu
    - More text engine math logic.
  24. Launcher 2026.08.18.1857 — scripts get a UI and a type system


    Scripts can build their own interface

    A running script can now put its own tab on the launcher and fill it with real controls, then read them back live. Build a setup wizard, then watch the bot narrate itself while it runs.
    • Controls:
      uiHeader
      ,
      uiLabel
      ,
      uiProgress
      ,
      uiButton
      ,
      uiToggle
      ,
      uiChoice
      ,
      uiInput
    • Read them back:
      uiToggled
      ,
      uiChosen
      ,
      uiText
    • Housekeeping:
      uiTab
      ,
      uiHas
      ,
      uiRemove
      ,
      uiClear
    • Rows update in place by key, so calling one every pass never grows the tab.
    • A button runs one of your functions between passes, on the script thread — never mid-loop, never a race. The function name is checked when you write it: a typo is a red squiggle, not a dead button.

    Enums — your own set of names as a type

    enum Mode { POWER, BANK, SELL }

    Declare a fixed set of names and use it as a real type. A
    setting
    typed with an enum shows up on the settings panel as a dropdown automatically. The checker refuses comparing an enum to a string or to a different enum, so a whole class of typo can't reach the game.
    .name
    gives the member back as a string.
    New commands

    • itemDefCount()
      — how many item definitions the cache holds, so a script can sweep every id with
      itemDef(id)
    • replace(text, find, with)
      — literal string replace

    The full, always-current command reference is at /textdoc. Relaunch to update.
  25. Launcher 2026.08.18.1534 — precision clicking, a proper script IDE, and a smarter engine


    Pixel-perfect object clicking

    We went into the client's own renderer and pulled out the exact maths it uses to draw models on screen. The launcher now aims with the renderer's true centre, not an approximation.
    • Object, door and wall clicks land exactly on the model — including thin things like fences and ladders.
    • New setting: Script API → Central clicking. On, every interaction aims at the centre of the target instead of a randomised point. Off by default.
    • Stacked ground items fixed — a pile of drops now takes exactly the item you asked for, matched by name, no matter what's on top.
    • Item names resolve everywhere again — looting, dropping and using items by name all line up.

    The script editor grew up

    • F1 — quick actions palette: everything the editor can do in one searchable popup, with every shortcut listed. Click it or press the key, same result.
    • Ctrl+I — cache picker: search Items, Objects and NPCs by name straight from the running client and insert the id at your caret. No more wiki tabs.
    • Ctrl+T inserts your current tile; Ctrl+Shift+T twice records a whole area.
    • Run console docked under the editor — print and trace output live, click a line to jump to it. Problems panel lists every error and warning, double-click to go there.
    • Hover any command for its docs and examples; a hint above the caret tracks which argument you're typing.
    • Type
      {
      and press Enter — the block closes itself, indented.
    • Find & replace (Ctrl+H), comment toggle (Ctrl+/), duplicate line (Ctrl+D), font zoom (Ctrl+wheel).
    • Autosave every 10 seconds with crash recovery — kill the client mid-edit and your work is offered back on reopen.
    • New script templates: loop bot, state machine, message-reactive — all pre-checked against the engine.

    The engine watches your back

    • Scripts that use commands like
      bankIsOpen()
      are now guarded automatically: if the hooks ever aren't available, the script stops at start with a clear message instead of waiting forever. Ask the guard yourself in your script to take over that decision.
    • New:
      bankDepositCape()
      — empties a skill cape's item store into the bank in one call.

    Relaunch to update — the launcher fetches the new version itself.
  26. Fixes to closing and the text engine UI
  27. What's new — launcher 2026.08.17

    The biggest client update yet: stay logged in, stay unlinked, and control your bots from anywhere.




    🔌 Proxy support

    • Route your whole session through a SOCKS5 proxy
    • Separate host and port fields — no more cramming it into one box
    • Optional username / password auth for private proxies
    • Every account can sit behind its own proxy, so nothing shares an IP


    🪪 MAC / identity spoofing

    • Spoof your machine's hardware ID so separate accounts are never linked by device
    • A fresh machine identity per session — the server sees a different box each time
    • Toggle it once in the launcher settings and forget about it


    👁 Live viewer & remote control

    • Watch your bot live from the web — a real-time view of the running client
    • Click and type remotely — take over without touching the machine it runs on
    • Start scripts, open the debugger, and close the client remotely
    • Private by default — only you (and admins) can see your own launchers


    ⬆ Self-updating launcher

    • Checks for a newer build every time you launch
    • One click to update — it grabs a fresh copy and restarts into it, no reinstall
    • The loading screen shows the latest updates, so you always know what changed


    ✨ Polish

    • Cleaner login with proper username / password fields
    • Refined settings UI and fonts
    • Smoother loading screen and overlay visuals




    Auto-update is on — you'll be prompted the next time a newer build ships.