Central Change Rollout: Last Seen

For quite some time, people have been confused about the Last Seen column and that was our fault. ZeroTier uses UDP to communicate and it is peer to peer. As such, there really isn’t a good way to tell if a node is “Online” and connected to the controller as there isn’t a constant TCP connection between a network member and the network controller.

Adding to the confusion was what we showed you in Last Seen column on the network dashboard. It would say “ONLINE” as long as the network member had talked to the network controller in the last 3 minutes.

Sometimes we have to roll out an update to the network controllers. If someone is looking at the page during the rollout, they notice that misleading “ONLINE” in the column go away for a few moments.

I’m sure you’re wondering, “Why was this misleading and causing confusion?” Because of how ZeroTier is designed. When a network controller goes down for an upgrade, or any other reason, all network members that were online & authorized on the network continue to be online & authorized on the network even without the presence of the network controller. They’ll all be able to continue to communicate. Changes made in the UI are queued to roll out when the controller comes back, and new or offline members that come online during the controller downtime. Once it’s back, the changes are applied & distributed to the network.

Today we rolled out a change that we hope will clarify things. Instead of a green “ONLINE” or a red timestamp, we just show how long ago the network member talked to the controller. We’ve also added a new field to the member API object, lastSeen. This new field is the same data as the lastOnline field which is now considered deprecated and will be removed at some point in the future. We hope this helps clarify things for you all!



This also seems to affect the API: all hosts are ‘Offline’ now
(even though over ten say “less than a minute”)

or rather, "online": true is no longer returned, which broke (at least) one of my scripts that expected this.
I can change my script to accommodate this; I assume you will be changing the dashboard as well, because now the ‘Online’ status has no meaning. Being able to sort by time would be useful though.

I don’t see a version, date or changelog for the OpenAPI spec that indicating when/what changed, but that would be nice to have.

The “online” field was never a documented nor externally supported member of the object.

And looks like we forgot about that filter section. That should be handled shortly.

OpenAPI spec change is coming. Had to do a little maintenance on the builder for it.

How can I sort nodes list by connection time? I have 37 nodes and now I need to review the entire list every time to understand who is connected and who is not?
So, very bad idea to delete options, that used by many years. :pensive:


@homza That’s kind of the point of the change. People were using it that way because of the misleading way we presented the data before. As stated in the full post above, saying ONLINE/OFFLINE didn’t necessarily mean a node could or could not communicate on a virtual network. Only whether or not it talked with the network controller recently. The change is a better representation of the data presented by the API.

We can look into adding a sort option by last communication time, but I can’t currently give any estimates of if or when it will be deployed.

1 Like

It looks like the lastSeen timestamp is incorrect. Is it just me or that is going to be fixed?
This is a timestamp decode for ZT endpoint that is online almost all the time:

$ date --date='@1680816219671'
Sat 11 Dec 55232 10:21:11 AM GMT

The time is in milliseconds since epoch. You’ll have to divide by 1000 to use it in the way you’ve shown.

Via https://www.epochconverter.com/

1 Like

Thank you, my search for “lastSeen not older than X minutes from now” works now.

Can you consider adding back the color highlight? Maybe just green on members who was last seen recently and black for others? Now it’s a bit harder to quickly look through the list and determine if a member hasn’t been seen for a while.

  1. I rather have the format “DD - HH:MM:SS” and some kind of threshold you can set yourself when absence of node should be displayed.

  2. OT - Please clarify the “and/or” relationship of the “Display Filter” between the options Authorized, Not Authorized, Bridges and Hidden. I’m getting confused everytime I try to use thoses checkboxes. If I for example I want to list all types by checking all the boxes, nothing at all appears.

1 Like

Seconding this. I was very confused and a little shocked when all my nodes appeared in black. Besides providing an easy way to distinguish “probably good” states from “potentially abnormal” states, retaining the color coding would have really eased the transition.

1 Like

I agree it is, but I used to find the inaccurate Online status very useful for a quick look at which nodes are up and which are not. I am really sad to see it go. :c


Maybe there could be a way to keep the “Online” filter and color coding while maintaining accuracy? That would be cool! :slight_smile:


I wrote, with the help of www.perplexity.ai, a python script that shows the nodes seen on the Zerotier network in the last 48 hours sorted by lastOnline.

It could be even better if the API will [also] return the relative time, e.g. “seconds before now”.
Yes, I know I can calculate this on my side :wink:

1 Like

I’m only using the web UI. Will “Last Seen” be made to filter from most recent to oldest?

It was great to be able to filter by “online” to get a quick look to see who was currently on the network, even if there was a minor delay in accuracy. It’s dizzying time-suck to visually scroll through by the verbos time and then pan to see what user it is.

1 Like

Thanks. We’ll add sorting and filtering.


Hell yeah, I can now see the “Active” filter option. Thank you, kind sir!

1 Like

Thanks. Wanted to get something in quickly. Something better coming soon™️

“Active” is currently: last seen less than 5 minutes ago.

1 Like