User Activity
Biome
Overview
Biome is Apple's next-generation user activity tracking system, introduced in macOS 12 (Monterey) as a successor to aspects of KnowledgeC. Biome records user activity as binary protobuf streams organised by category (app intents, device activity, interactions, etc.). While KnowledgeC uses SQLite, Biome uses a custom binary format based on SEGB (Structured Event Graph Binary) containers with embedded protobuf records.
Biome data coexists with KnowledgeC on modern macOS — some activity is recorded in both systems, while newer activity types are Biome-exclusive.
Forensic Significance
| Evidence Type | Forensic Value |
|---|---|
| App usage | Application focus, launch, and interaction events |
| App intents | Siri Shortcuts and automation activity |
| Safari browsing | Web browsing activity (independent of browser history) |
| Device state | Lock/unlock, display on/off, power state |
| Media playback | Now Playing information |
| Location activity | Significant location visits |
| Widget usage | Dashboard widget interactions |
File Locations
| Artifact | Path | Format |
|---|---|---|
| Biome streams | ~/Library/Biome/streams/ | SEGB + protobuf |
| Biome restricted | ~/Library/Biome/streams/restricted/ | SEGB + protobuf |
| Biome public | ~/Library/Biome/streams/public/ | SEGB + protobuf |
Stream Categories
Each subdirectory under streams/ represents a different activity category:
| Stream | Description |
|---|---|
AppIntent/ | App intent and Shortcuts activity |
DeviceDiscovery/ | Nearby device discovery |
InferredContext/ | System-inferred user context |
Safari/ | Safari browsing activity |
UserActivity/ | User activity state changes |
MediaPlayback/ | Audio/video playback events |
LocationActivity/ | Location-related events |
Data Format
SEGB Container
SEGB files contain a header followed by a series of binary records:
- SEGB header: Magic bytes, version, metadata
- Record entries: Each containing:
- Timestamp (absolute or relative)
- Protobuf payload
- Record type identifier
Protobuf Records
The protobuf schema varies by stream type. Without Apple's schema definitions, field names must be inferred from values. Common patterns include:
- Field 1: Timestamp (double, Core Data epoch)
- Field 2: Bundle identifier (string)
- Field 3: Activity type or state (enum/integer)
Key Fields for Analysis
List Available Streams
# Enumerate all Biome streams
find ~/Library/Biome/streams -type f -name "*.segb" 2>/dev/null
# Check stream sizes (larger = more data)
du -sh ~/Library/Biome/streams/*/
Parse with Python (basic extraction)
# Basic SEGB reader (simplified)
import struct
def read_segb(path):
with open(path, 'rb') as f:
magic = f.read(4)
if magic != b'SEGB':
return
# Skip header
f.seek(32)
while True:
try:
record_size = struct.unpack('<I', f.read(4))[0]
if record_size == 0:
break
data = f.read(record_size)
# data contains protobuf payload
yield data
except:
break
Analysis Notes
- Complementary to KnowledgeC: Biome and KnowledgeC coexist. Always analyse both data sources for a complete activity picture.
- Protobuf challenges: Without official schema definitions, Biome protobuf records require reverse engineering. Tools like
protoc --decode_rawcan help inspect field structures. - Safari independence: Biome Safari streams record browsing activity independently of Safari's History.db, providing corroboration or revealing private browsing activity context.
- SEGB parser requirement: Standard forensic tools may not support the SEGB format. Custom parsing is often necessary.
- Retention: Biome streams appear to have variable retention periods depending on the stream type and available storage.
- macOS 12+ only: Biome does not exist on macOS 11 and earlier. Check the OS version before looking for these artifacts.
Version Differences
| macOS Version | Changes |
|---|---|
| 12 (Monterey) | Biome introduced; initial stream types |
| 13 (Ventura) | Additional stream categories; expanded data |
| 14 (Sonoma) | App Intents expansion; more activity types |
| 15 (Sequoia) | Further expansion of tracked activities |
Tool Support
| Tool | Support |
|---|---|
| macfor | Not yet implemented (planned — MACFOR-POL-3.3) |
| protoc (protobuf) | Decode raw protobuf records |
| mac_apt | Partial Biome support |
| iLEAPP | iOS Biome parser (some streams compatible with macOS) |
References
- Biome Research - Yogesh Khatri
- SEGB Format Research
- Apple Biome / KnowledgeC Evolution
- SANS FOR518: Mac and iOS Forensic Analysis