> Sooner or later, listing all registered agents will be a necessary feature, though, maybe with filtering for things like number of cpu cores, amount of ram, GPU-rendering available or not, certain kinds of software available or not, busy or idle, busy with certain jobtype...

This actually was what I was going to end up doing since showing everything ended up being so slow.  It's not terribly difficult to implement though so it's worth a shot if you want to try it.  You'll probably want to [handle url arguments](http://stackoverflow.com/a/12871250) and [do some relationship filtering](https://github.com/pyfarm/pyfarm-models/blob/master/pyfarm/models/user.py#L190) for things like software packages or tags on an agent.

> It surprises me a little that this is such a performance hit already. This should be nothing but a simple, single sequential table scan over a not very wide table with maybe 1000 to 10000 entries. That should be less than a megabyte to read from disk.

sqlite from disk can be pretty slow, you might want to set ``PYFARM_DATABASE_URI`` to ``sqlite:///:memory:`` in your environment then launch again.  You might also want to set ``PYFARM_SQL_ECHO`` to ``True`` to log the sql calls being made (maybe it's doing something odd).  It could also be the ORM too because there's a lot of mapping behind the scenes for relationships (echo might help expose some of that).  The relationships are configurable however so if that's part of the problem it's not that hard to fix it.  Either way, it surprises me too and I don't remember it taking that long for me the last time I tried it so I'll do some benchmarks tomorrow and this weekend.