adapters
Working with LimaCharlie adapters — cloud sensors (SaaS integrations), external adapters (cloud-managed), and on-prem/USP adapters. Covers configuration, credential setup, parsing rules, validation, deployment, and troubleshooting. Use when setting up data sources, configuring adapters, or troubleshooting ingestion.
What this skill does
# Adapters
How to work with LimaCharlie adapters — the telemetry ingestion layer for third-party data sources.
## Adapter Categories
| Category | Description | Management |
|----------|-------------|-----------|
| **Cloud Sensor** | Cloud-to-cloud SaaS integrations (Okta, O365, AWS S3, Azure Event Hub) | `limacharlie cloud-adapter` |
| **External Adapter** | Cloud-managed syslog, webhook, or API receivers | `limacharlie external-adapter` |
| **On-prem/USP** | Binary deployed locally with config file or CLI args | `lc_adapter` binary or Docker |
## CLI Commands
### Cloud Sensors
```bash
# List
limacharlie cloud-adapter list --oid <oid> --output yaml
# Get configuration
limacharlie cloud-adapter get --key <name> --oid <oid> --output yaml
# Create/Update
cat > /tmp/config.yaml << 'EOF'
<configuration>
EOF
limacharlie cloud-adapter set --key <name> --input-file /tmp/config.yaml --oid <oid> --output yaml
# Delete
limacharlie cloud-adapter delete --key <name> --confirm --oid <oid>
```
### External Adapters
```bash
# List
limacharlie external-adapter list --oid <oid> --output yaml
# Get configuration
limacharlie external-adapter get --key <name> --oid <oid> --output yaml
# Create/Update
limacharlie external-adapter set --key <name> --input-file /tmp/config.yaml --oid <oid> --output yaml
# Delete
limacharlie external-adapter delete --key <name> --confirm --oid <oid>
```
## Configuration Structure
All adapters share a common `client_options` structure:
```yaml
client_options:
identity:
oid: "<organization-id>"
installation_key: "<iid>" # UUID format, or hive://secret/...
platform: "text|json|gcp|aws|..."
sensor_seed_key: "<unique-identifier>"
hostname: "<adapter-hostname>"
mapping:
parsing_grok:
message: '%{PATTERN:field} ...'
event_type_path: "field/path"
event_time_path: "timestamp/path"
sensor_hostname_path: "host/path"
```
### Key Config Fields
| Field | Description |
|-------|-------------|
| `identity.oid` | Organization ID |
| `identity.installation_key` | Installation key IID (UUID), or `hive://secret/...` |
| `platform` | Data format: `text` (syslog/logs), `json` (structured), or specific platforms |
| `sensor_seed_key` | Unique identifier for this adapter's sensor (determines SID) |
| `hostname` | Display name in sensor list |
| `mapping.parsing_grok` | Grok pattern for text parsing |
| `mapping.event_type_path` | JSON path to event type field |
| `mapping.event_time_path` | JSON path to timestamp field |
| `mapping.sensor_hostname_path` | JSON path to source hostname |
### Credential References
Use Hive secrets for sensitive values:
```yaml
apikey: "hive://secret/okta-api-key"
client_secret: "hive://secret/azure-client-secret"
```
### Indexing Configuration
Enable IOC searching on adapter data:
```yaml
indexing:
- events_included: ["*"]
path: "src_ip"
index_type: "ip"
- events_included: ["*"]
path: "user/email"
index_type: "user"
```
Supported index types: `file_hash`, `file_path`, `file_name`, `domain`, `ip`, `user`, `service_name`, `package_name`.
## Parsing Validation
Validate parsing rules before deployment:
```bash
cat > /tmp/usp-test.yaml << 'EOF'
parsing_grok:
message: "%{TIMESTAMP_ISO8601:timestamp} %{WORD:action} ..."
event_type_path: action
event_time_path: timestamp
sample_data:
- "2025-01-15T10:30:00Z LOGIN [email protected]"
EOF
limacharlie usp validate --platform text --input-file /tmp/usp-test.yaml --oid <oid> --output yaml
```
## Common Adapter Types
| Type | Platform | Config Key |
|------|----------|-----------|
| Syslog | `text` | `port`, `is_udp`, `parsing_grok` |
| Webhook | `json` | `secret` |
| Okta | `json` | `apikey`, `url` |
| AWS S3 | varies | `bucket_name`, `access_key`, `secret_key` |
| Azure Event Hub | varies | `connection_string` |
| Office 365 | `json` | `domain`, `tenant_id`, `client_id`, `client_secret` |
| CrowdStrike | `json` | `client_id`, `client_secret` |
| GCP Pub/Sub | varies | `project_id`, `subscription_id`, `service_account_creds` |
## On-Prem Deployment
### Docker
```bash
docker run -d --rm -p 514:514/udp refractionpoint/lc-adapter syslog \
client_options.identity.installation_key=<IID> \
client_options.identity.oid=<OID> \
client_options.platform=text \
client_options.sensor_seed_key=<key> \
port=514 is_udp=true
```
### Binary
```bash
./lc_adapter syslog \
client_options.identity.installation_key=<IID> \
client_options.identity.oid=<OID> \
client_options.platform=text \
client_options.sensor_seed_key=<key> \
port=514 is_udp=true
```
## Researching Adapter Types
For unknown or undocumented adapters, check the usp-adapters repository:
```bash
# List available adapter implementations
WebFetch(url="https://api.github.com/repos/refractionPOINT/usp-adapters/contents")
# Read adapter config struct (usually client.go)
WebFetch(url="https://raw.githubusercontent.com/refractionPOINT/usp-adapters/master/<adapter>/client.go")
```
## Post-Deployment Verification
### Check Sensor Appeared
```bash
limacharlie sensor list --selector "iid == \`<iid>\`" --oid <oid> --output yaml
```
### Check for Errors
```bash
# Adapter-specific errors
limacharlie external-adapter get --key <name> --oid <oid> --output yaml
# Look for last_error in sys_mtd
# Organization-wide errors
limacharlie org errors --oid <oid> --output yaml
```
### Verify Data Flow
```bash
start=$(date -d '1 hour ago' +%s) && end=$(date +%s)
limacharlie event list --sid <sensor-id> --start $start --end $end --oid <oid> --output yaml
```
## Common Pitfalls
1. **IID vs Installation Key**: Use the IID (UUID format), not the full base64 installation key
2. **Grok field name**: Always use `message` as the key in `parsing_grok` for text platform
3. **DATESTAMP formats**: `TIMESTAMP_ISO8601` for ISO dates, `SYSLOGTIMESTAMP` for syslog, `DATESTAMP` for MM-DD-YY
4. **Azure Event Hub**: Connection string must include `EntityPath=<event-hub-name>`
5. **Unparsed events**: `event_type: "unknown_event"` with only `text` field means parsing is misconfigured
6. **Credential storage**: Always use `hive://secret/<name>` for production credentials
Related in Cloud & DevOps
appbuilder-action-scaffolder
IncludedCreate, implement, deploy, and debug Adobe Runtime actions with consistent layout, validation, and error handling. Use this skill whenever the user needs to add actions to an App Builder project, understand action structure (params, response format, web/raw actions), configure actions in the manifest, use App Builder SDKs (State, Files, Events, database), deploy and invoke actions via CLI, debug action issues, or implement patterns such as webhook receivers, custom event providers, journaling consumers, large payload redirects, action sequence pipelines, and Asset Compute workers. Also trigger when users mention serverless functions in Adobe context, action logging, IMS authentication for actions, or cron-style scheduled actions.
orchestrating-datacloud
IncludedSalesforce Data Cloud product orchestrator for connect→prepare→harmonize→segment→act workflows. Use this skill when the user needs a multi-step Data Cloud pipeline, cross-phase troubleshooting, or data space and data kit management. TRIGGER when: user needs a multi-step Data Cloud pipeline, asks to set up or troubleshoot Data Cloud across phases, manages data spaces or data kits, or wants a cross-phase sf data360 workflow. DO NOT TRIGGER when: work is isolated to a single phase (use the matching phase-specific skill), the task is STDM/session tracing/parquet telemetry (use observing-agentforce), standard CRM SOQL (use querying-soql), or Apex implementation (use generating-apex).
github-project-automation
IncludedAutomate GitHub repository setup with CI/CD workflows, issue templates, Dependabot, and CodeQL security scanning. Includes 12 production-tested workflows and prevents 18 errors: YAML syntax, action pinning, and configuration. Use when: setting up GitHub Actions CI/CD, creating issue/PR templates, enabling Dependabot or CodeQL scanning, deploying to Cloudflare Workers, implementing matrix testing, or troubleshooting YAML indentation, action version pinning, secrets syntax, runner versions, or CodeQL configuration. Keywords: github actions, github workflow, ci/cd, issue templates, pull request templates, dependabot, codeql, security scanning, yaml syntax, github automation, repository setup, workflow templates, github actions matrix, secrets management, branch protection, codeowners, github projects, continuous integration, continuous deployment, workflow syntax error, action version pinning, runner version, github context, yaml indentation error
sf-datacloud
IncludedSalesforce Data Cloud product orchestrator for connect→prepare→harmonize→segment→act workflows. TRIGGER when: user needs a multi-step Data Cloud pipeline, asks to set up or troubleshoot Data Cloud across phases, manages data spaces or data kits, or wants a cross-phase `sf data360` workflow. DO NOT TRIGGER when: work is isolated to a single phase (use the matching sf-datacloud-* skill), the task is STDM/session tracing/parquet telemetry (use sf-ai-agentforce-observability), standard CRM SOQL (use sf-soql), or Apex implementation (use sf-apex).
fabric-cli
IncludedUse this skill for Fabric.so CLI workflows with the `fabric` terminal command: diagnose/install/login, search or browse a Fabric library, save notes/links/files, create folders, ask the Fabric AI assistant, manage tasks/workspaces, generate shell completion, check subscription usage, produce JSON output, and use Fabric as persistent agent memory. Do not use for Microsoft Fabric/Azure/Power BI `fab`, Daniel Miessler's Fabric framework, Python Fabric SSH, Fabric.js, or textile/fashion fabric.
lark
IncludedLark/Feishu CLI skills: lark-cli operations for docs, markdown, sheets, base, calendar, im, mail, task, okr, drive, wiki, slides, whiteboard, apps, approval, attendance, contact, vc, minutes, event. Use when the user needs to operate Lark/Feishu resources via lark-cli, send messages, manage documents, spreadsheets, calendars, tasks, OKRs, deploy web pages, or any Feishu/Lark workspace operations.