Hey Guys! 
What the HELL is Hoster? 
Hoster is an open-source way to properly handle stuff like Server Browsers in your experiences… but why..?
Well! Hoster allows you to easily grab all of the data from every server currently running, such as Players in the server, SessionId (JobId), the Server UpTime and much much more!
Hoster also generates a unique 4 letter key which players can use to easily teleport between servers! Think of it like going on Among Us, creating a new server and giving your friends the ID so that they can join it, and that’s not even all!
What are Server Variants? 
Think of server variants as having 2 or more places in your experience with the same game file. Essentially Hoster allows you to differentiate different servers by checking their variants! The use case for this is being able to easily add VC Servers to your game WITHOUT having to add a separate place, allowing you to have stuff like VC, Pro and other server types without having to have more than one place! Pretty cool, right?
Example Usage 
Using Hoster is extremely easy.. Everything you have to do is place the module in ReplicatedStorage or anywhere else and require it. Once Hoster has been required it will initialize itself on it’s own so you don’t have to worry about anything!
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Hoster = require(ReplicatedStorage.Hoster)
Now that we have gotten that out of the way, let’s quickly grab all of the currently active servers and print them out
local Sessions = Hoster:GetAll()
task.wait(2) -- Wait a few seconds to make sure all of our servers have been grabbed since this is our first time using Hoster
print(Sessions)
And in the console we can see a table of all Sessions that Hoster managed to find.
Each Session has two things..
- Server Information
- Updated Signal (Fired every time the Session gets updated)
Now with that in mind, this is how we can get basic Server information easily
for SessionId: string, Session: Hoster.Session in Sessions do
local playersInServer = #Session:Get("Members")
print(`There are currently {playersInServer} player(s) in this session.`)
end
And as expected we can see that there is only one player in our server.. and that’s us!
Now one important thing to know is, what information can you get from each session?
- AccessKey - The ReserveServer Access Code (Is nil for Public Servers)
- SessionId - In other words, just the JobId
- VariantId - Type of the server, if none is provided will default to “None”
- LastChange - Last time the Session Information has been updated / changed
- Members - Players currently in this server, returns a table with UserIDs of each player
- UpTime - How long the server has been running for
- Key - The unique 4-letter key used to identify the server
You don’t have to worry about remembering all of these since they should appear in the auto-complete when trying to grab any information you might need.
Now another thing that you should know is the Methods!
Each Session has two methods you should worry about.
- Join - Teleports players to the given session
- Get - Gives you the information you are looking for, shortcut for Session.Info[“InformationType”]
Now that you know all of this, how do we get a server from a key and teleport a player to that server?
Well first we need to get the session by using the GetByKey method
local Session = Hoster:GetByKey("Your Key Here")
And then, we can simply use the Join method and pass the player we want to teleport
Session:Join(Players.ThtRookie)
and finally.. let’s get to the server creation.
Creating new Servers 
Creating servers is extremely easy, servers created using Hoster will carry the AccessKey Session Information unlike publicly available servers that are created by simply joining the game from the website.
local Session = Hoster:Create("None", { Players.ThtRookie })
print(`Started new session #{Session:Get("Key")}!`)
This will start the new session and give you the newly created session so you can get the basic information you might need.
And i forgot to note that it will also teleport all of the players you passed in the second argument to the newly created session!
Now let’s talk about Server Variants one last time..
Let’s say you wanna have public servers & VoiceChat servers all in one place, well Hoster got you covered!
If you wanna get a list of all public servers & and a list of voicechat servers do this
local Public_Servers = Hoster:GetAll("None")
local VC_Servers = Hoster:GetAll("VoiceChat")
It’s as easy as that! And creating a vc server is the same as creating a regular one.
Hoster:Create("VoiceChat", { Players.ThtRookie })
This will create a new session that will only appear when you get it from the GetAll(“VoiceChat”) method!
Bonus Template 
This is a fully working Server Browser with features like joining from key, creating new servers etc..
Get the place file here
Download Hoster 
Get the file RBXM here..
Hoster.rbxm (5.4 KB)
That’s all.. Please give me feedback on this and report any bugs you can find, it would mean the world to me! ![]()



