# Embedding Perfetto in your own project *** note **This doc is WIP**, stay tuned <!-- TODO(primiano): write embedder guide doc. --> *** This doc should: - Contain tech details of the Producer(Endpoint), Consumer(Endpoint) and Service interfaces. - Explain how they are supposed to be wired up together, with or without using an IPC transport. - Explain the basic embedder requirements (e.g. [`TaskRunner`](/include/perfetto/base/task_runner.h)) - Point out the relevant GN targets: `//src/tracing`, `//src/tracing:ipc`, `//src/ipc`. - Explain the API surface: - [producer.h](/include/perfetto/tracing/core/producer.h) - [consumer.h](/include/perfetto/tracing/core/consumer.h) - [service.h](/include/perfetto/tracing/core/service.h) - Explain the ABI surface: - [shared_memory_abi.h](/include/perfetto/tracing/core/shared_memory_abi.h) - IPC's [wire protocol](/src/ipc/wire_protocol.proto) (if used) - The input [config protos](/protos/perfetto/config) - The output [trace protos](/protos/perfetto/trace) Other resources --------------- * How we wrap our own IPC transport in Android: [/src/tracing/ipc](/src/tracing/ipc).