What is the current state of the libp2p daemons? As far as I can tell there are only a couple of partially implemented code bases and an (in-progress?) specification that are only really used (or will be used?) for interoperability tests.
Is the daemon part of libp2p still an active part of the project or has it been dropped? This part of libp2p seems really useful - what can be done to get it moving?
go-libp2p-daemon is in a weird space in that js-libp2p uses it to smoke test interop between the go and js implementations which makes it wildly useful but it’s largely unmaintained since it’s not really used on the go-libp2p side.
I’d very much like to see it updated to the latest version of go-libp2p, and also a rust-libp2p version created.
Is there some language agnostic API declared somewhere? I imagine the daemon is meant to just run some services and expose the API like kubo daemon? Or is it supposed to do something else?
Typically the smoke tests @achingbrain is talking about is a dial test (i.e. can we connect) and identify and ping protocol tests to ensure the two peers are exchanging messages. There is documentation on how to include libp2p in your code in a number of languages: https://docs.libp2p.io/
Is there some language agnostic API declared somewhere?
Yes, there’s a spec available but it’s incomplete and unlikely to get updated as the effort has been largely abandoned in favour of the newer test suite.
I imagine the daemon is meant to just run some services and expose the API like kubo daemon?
It’s not really intended for use outside of interop testing, typically you’d embed libp2p inside your own application and expose an RPC API if it needed a daemon, much like Kubo does.
@achingbrain thanks for the information, that’s helpful. Maybe the community should focus on adding those old areas to the new interop test suite this year. That sounds like a good initiative to take up.