Confluent local services vs confluent local kafka

What is the difference between confluent local services start and confluent local kafka start. Obviously one starts kafka and one starts everything, but running the later requires docker to be running where the former does not.

Additionally, after running confluent local services start, attempting to create a topic fails.

confluent local services start

Using CONFLUENT_CURRENT: /var/folders/52/mg1tzp295cnd7923cw73ppqc0000gq/T/confluent.117610
ZooKeeper is [UP]
Kafka is [UP]
Schema Registry is [UP]
Kafka REST is [UP]
Connect is [UP]
ksqlDB Server is [UP]

confluent local kafka topic create test.topic

Error: failed to read local ports from config

    Kafka REST connection is not ready. Re-running the command may solve the issue.

Running this works, but spins up a docker container in addition to whatever services start started:

confluent local kafka start

| Kafka REST Port | 59641 |
| Plaintext Ports | 59636 |
Started Confluent Local containers "0c504120db".

confluent local kafka topic create test.topic

Created topic "test.topic".

What’s the difference? When would I want to use one vs the other? Does confluent local kafka start start a whole confluent cluster with the schema registry and kafka rest? I feel like this should be covered better in the documentation (unless I just missed it, in which case please, send it my way)

The confluent local services ... and confluent local kafka ... commands are mutually exclusive. The former covers more components of Confluent Platform and requires a local Confluent Platform installation while the latter is (currently) Kafka only and intended to be easier / lower footprint given that it runs in Docker. In the future the two sets of commands will likely get consolidated into one Docker-based approach to avoid confusion.