# Embedding Perfetto in another 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/tracing_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).
