Skip to content
This repository was archived by the owner on Apr 21, 2026. It is now read-only.

Repository files navigation

DataClaw

This is a performance art project. Anthropic built their models on the world's freely shared information, then introduced increasingly dystopian data policies to stop anyone else from doing the same with their data - pulling up the ladder behind them. DataClaw lets you throw the ladder back down. The dataset it produces is yours to share.

Turn your Claude Code, Codex, and other coding-agent conversation history into structured data and publish it to Hugging Face with a single command. DataClaw parses session logs, redacts secrets and PII, and uploads the result as a ready-to-use dataset.

DataClaw

Every export is tagged dataclaw on Hugging Face. Together, they may someday form a growing distributed dataset of real-world human-AI coding collaboration.

Give this to your agent

Paste this into Claude Code, Codex, or any coding agent:

Help me export my Claude Code, Codex, and other coding-agent conversation history to Hugging Face using DataClaw.
Install it, then walk me through the process.
STEP 1 - INSTALL
pip install -U dataclaw
If that fails: git clone https://github.com/banodoco/dataclaw.git /tmp/dataclaw && pip install -U /tmp/dataclaw
If that also fails, ask the user where the source is.
STEP 2 - INSTALL SKILL
Skill support is currently only available for Claude Code.
dataclaw update-skill claude
For other agentic tools, skip this step and do not improvise a custom flow - follow the instructions in DataClaw's output on each step, especially next_steps and next_command.
STEP 3 - PREP
dataclaw prep
Every dataclaw command outputs next_steps in its JSON - follow them through the entire flow.
STEP 3A - CHOOSE SOURCE SCOPE (REQUIRED BEFORE EXPORT)
Ask the user explicitly which source scope to export: a supported source key such as claude or codex, or all.
dataclaw config --source all
Do not export until source scope is explicitly confirmed.
STEP 3B - CHOOSE PROJECT SCOPE (REQUIRED BEFORE EXPORT)
dataclaw list --source all
Send the FULL project/folder list to the user in a message (name, source, sessions, size, excluded).
Ask which projects to exclude.
dataclaw config --exclude "project1,project2" OR dataclaw config --confirm-projects
Do not export until folder selection is explicitly confirmed.
STEP 3C - SET REDACTED STRINGS
Ask the user what additional strings should always be redacted, such as company names, client names, domains, internal URLs, or secrets that regex might miss.
dataclaw config --redact "string1,string2"
dataclaw config --redact-usernames "user1,user2"
Only add these after explicit user confirmation.
STEP 4 - EXPORT LOCALLY
dataclaw export --no-push --output dataclaw_export.jsonl
STEP 5 - REVIEW AND CONFIRM (REQUIRED BEFORE PUSH)
Review PII findings and apply excludes/redactions as needed.
Full name is requested for an exact-name privacy scan against the export.
If the user declines sharing full name, use --skip-full-name-scan and attest the skip reason.
dataclaw confirm --full-name "THEIR FULL NAME" --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."
STEP 6 - PUBLISH (ONLY AFTER EXPLICIT USER APPROVAL)
dataclaw export --publish-attestation "User explicitly approved publishing to Hugging Face."
Never publish unless the user explicitly says yes.
IF ANY COMMAND FAILS DUE TO A SKIPPED STEP:
Restate the 6-step checklist above and resume from the blocked step (do not skip ahead).
IMPORTANT: Never run bare `hf auth login` when automating this with an agent - always use `--token`.
IMPORTANT: Always export with --no-push first and review for PII before publishing.

Manual usage (without an agent)

# STEP 1 - INSTALL
pip install -U dataclaw
hf auth login --token YOUR_TOKEN
# STEP 3 - PREP
dataclaw prep
dataclaw config --repo username/my-personal-codex-data
# STEP 3A - CHOOSE SOURCE SCOPE
dataclaw config --source all # REQUIRED: choose a supported source key or all# STEP 3B - CHOOSE PROJECT SCOPE
dataclaw list --source all # Present full list and confirm folder scope before export
dataclaw config --exclude "personal-stuff,scratch"# or: dataclaw config --confirm-projects# STEP 3C - SET REDACTED STRINGS
dataclaw config --redact-usernames "my_github_handle,my_discord_name"
dataclaw config --redact "my-domain.com,my-secret-project"# STEP 4 - EXPORT LOCALLY
dataclaw export --no-push
# STEP 5 - REVIEW AND CONFIRM
dataclaw confirm \
--full-name "YOUR FULL NAME" \
--attest-full-name "Asked for full name and scanned export for YOUR FULL NAME." \
--attest-sensitive "Asked about company/client/internal names and private URLs; none found or redactions updated." \
--attest-manual-scan "Manually scanned 20 sessions across beginning/middle/end and reviewed findings."# Or: if user declines sharing full name
dataclaw confirm \
--skip-full-name-scan \
--attest-full-name "User declined to share full name; skipped exact-name scan." \
--attest-sensitive "Asked about company/client/internal names and private URLs; none found or redactions updated." \
--attest-manual-scan "Manually scanned 20 sessions across beginning/middle/end and reviewed findings."# STEP 6 - PUBLISH
dataclaw export --publish-attestation "User explicitly approved publishing to Hugging Face."

Step 2 (INSTALL SKILL) is omitted in manual usage.

Commands

CommandDescription
dataclaw statusShow current stage and next steps
dataclaw prepDiscover projects, check HF auth, output JSON
dataclaw prep --source <source|all>Prep with an explicit source scope
dataclaw listList all projects with exclusion status
dataclaw list --source <source|all>List projects for a specific source scope
dataclaw configShow current config
dataclaw config --repo user/my-personal-codex-dataSet HF repo
dataclaw config --source <source|all>REQUIRED source scope selection (examples include claude, codex, and others)
dataclaw config --exclude "a,b"Add excluded projects (appends)
dataclaw config --redact "str1,str2"Add strings to always redact (appends)
dataclaw config --redact-usernames "u1,u2"Add usernames to anonymize (appends)
dataclaw config --confirm-projectsMark project selection as confirmed
dataclaw export --no-pushExport locally only (always do this first)
dataclaw export --source <source|all> --no-pushExport a chosen source scope locally
dataclaw confirm --full-name "NAME" --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."Scan for PII, run exact-name privacy check, verify review attestations, unlock pushing
dataclaw confirm --skip-full-name-scan --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."Skip exact-name scan when user declines sharing full name (requires skip attestation)
dataclaw export --publish-attestation "..."Export and push (requires dataclaw confirm first)
dataclaw export --all-projectsInclude everything (ignore exclusions)
dataclaw export --no-thinkingExclude extended thinking blocks
dataclaw update-skill claudeInstall/update the dataclaw skill for Claude Code

What gets exported

  • User messages - Including voice transcripts and images
  • Assistant responses
  • Assistant thinking - Opt out with --no-thinking
  • Tool calls - Tool name, inputs, outputs
  • Token usage - Input/output tokens per session
  • Metadata - Model name, git branch, timestamps

Privacy & Redaction

DataClaw applies multiple layers of protection:

  1. Username redaction - Your OS username + any configured usernames replaced with stable hashes
  2. Secret redaction - Regex patterns catch JWT tokens, API keys (Anthropic, OpenAI, HF, GitHub, AWS, etc.), database passwords, private keys, Discord webhooks, and more
  3. Entropy analysis - Long high-entropy strings in quotes are flagged as potential secrets
  4. Email redaction - Regex pattern catches email addresses
  5. Custom redaction - You can configure additional strings to redact
  6. Tool call redaction - Tool inputs and outputs are redacted with the same standard as regular messages

This is NOT foolproof. Always review your exported data before publishing. Automated redaction cannot catch everything - especially service-specific identifiers, third-party PII, or secrets in unusual formats.

We recommend to convert the exported jsonl into human-readable yaml using the script in peteromallet#1 , then use tools such as trufflehog and gitleaks to scan it.

To help improve redaction, report issues: https://github.com/banodoco/dataclaw/issues

Data schema

Each line in conversations.jsonl is one session:

{
"session_id": "abc-123",
"project": "my-project",
"model": "claude-opus-4-6",
"git_branch": "main",
"start_time": "2025-06-15T10:00:00+00:00",
"end_time": "2025-06-15T10:30:00+00:00",
"messages": [
{
"role": "user",
"content": "Fix the login bug",
"content_parts": [
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "..."}}
],
"timestamp": "..."
},
{
"role": "assistant",
"content": "I'll investigate the login flow.",
"thinking": "The user wants me to look at...",
"tool_uses": [
{
"tool": "bash",
"input": {"command": "grep -r 'login' src/"},
"output": {
"text": "src/auth.py:42: def login(user, password):",
"raw": {"stderr": "", "interrupted": false}
},
"status": "success"
}
],
"timestamp": "..."
}
],
"stats": {
"user_messages": 5, "assistant_messages": 8,
"tool_uses": 20, "input_tokens": 50000, "output_tokens": 3000
}
}

messages[].content_parts is optional and preserves structured user content such as attachments when the source provides them. The canonical human-readable user text remains in messages[].content.

tool_uses[].output.raw is optional and preserves extra structured tool-result fields when the source provides them. The canonical human-readable result text remains in tool_uses[].output.text.

Each HF repo also includes a metadata.json with aggregate stats.

Finding datasets on Hugging Face

All repos are tagged dataclaw.

  • Browse all:huggingface.co/datasets?other=dataclaw
  • Load one:
    fromdatasetsimportload_datasetds=load_dataset("alice/my-personal-codex-data", split="train")
  • Combine several:
    fromdatasetsimportload_dataset, concatenate_datasetsrepos= ["alice/my-personal-codex-data", "bob/my-personal-codex-data"]
    ds=concatenate_datasets([load_dataset(r, split="train") forrinrepos])

The auto-generated HF README includes:

  • Model distribution (which models, how many sessions each)
  • Total token counts
  • Project count
  • Last updated timestamp

Contributing

Missing data: If you found any data not exported, please report an issue. You can ask your coding agent to analyze the data, export it in this repo, and open a PR.

Better scheme: If you need to clean the data and want to propose a better scheme, feel free to open an issue.

New provider: If you use a new coding agent, you can ask it to read this repo and export its data as a new provider. Take Claude Code and Codex parsers as examples because they are the most well maintained. When you finish, ask the following questions:

  • Did you follow the scheme above? Currently it's free to add custom fields in messages[].content_parts and tool_uses[].output.raw.
  • Did you export all data, especially:
    • tool call inputs and outputs
    • long inputs and outputs that may be saved somewhere else
    • binary content (may be encoded as base64) such as images. We do not apply anonymizer on binary content
    • subagents
  • Does the coding agent automatically delete old sessions? How to prevent this?

Code Quality

Code Quality Scorecard

License

MIT

About

Agent harness to publish your history from Claude Code et al. as Huggingface datasets.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - QuantumlyTangled/dataclaw: Agent harness to publish your history from Claude Code et al. as Huggingface datasets. · GitHub
Skip to content
This repository was archived by the owner on Apr 21, 2026. It is now read-only.

Repository files navigation

DataClaw

This is a performance art project. Anthropic built their models on the world's freely shared information, then introduced increasingly dystopian data policies to stop anyone else from doing the same with their data - pulling up the ladder behind them. DataClaw lets you throw the ladder back down. The dataset it produces is yours to share.

Turn your Claude Code, Codex, and other coding-agent conversation history into structured data and publish it to Hugging Face with a single command. DataClaw parses session logs, redacts secrets and PII, and uploads the result as a ready-to-use dataset.

DataClaw

Every export is tagged dataclaw on Hugging Face. Together, they may someday form a growing distributed dataset of real-world human-AI coding collaboration.

Give this to your agent

Paste this into Claude Code, Codex, or any coding agent:

Help me export my Claude Code, Codex, and other coding-agent conversation history to Hugging Face using DataClaw.
Install it, then walk me through the process.
STEP 1 - INSTALL
pip install -U dataclaw
If that fails: git clone https://github.com/banodoco/dataclaw.git /tmp/dataclaw && pip install -U /tmp/dataclaw
If that also fails, ask the user where the source is.
STEP 2 - INSTALL SKILL
Skill support is currently only available for Claude Code.
dataclaw update-skill claude
For other agentic tools, skip this step and do not improvise a custom flow - follow the instructions in DataClaw's output on each step, especially next_steps and next_command.
STEP 3 - PREP
dataclaw prep
Every dataclaw command outputs next_steps in its JSON - follow them through the entire flow.
STEP 3A - CHOOSE SOURCE SCOPE (REQUIRED BEFORE EXPORT)
Ask the user explicitly which source scope to export: a supported source key such as claude or codex, or all.
dataclaw config --source all
Do not export until source scope is explicitly confirmed.
STEP 3B - CHOOSE PROJECT SCOPE (REQUIRED BEFORE EXPORT)
dataclaw list --source all
Send the FULL project/folder list to the user in a message (name, source, sessions, size, excluded).
Ask which projects to exclude.
dataclaw config --exclude "project1,project2" OR dataclaw config --confirm-projects
Do not export until folder selection is explicitly confirmed.
STEP 3C - SET REDACTED STRINGS
Ask the user what additional strings should always be redacted, such as company names, client names, domains, internal URLs, or secrets that regex might miss.
dataclaw config --redact "string1,string2"
dataclaw config --redact-usernames "user1,user2"
Only add these after explicit user confirmation.
STEP 4 - EXPORT LOCALLY
dataclaw export --no-push --output dataclaw_export.jsonl
STEP 5 - REVIEW AND CONFIRM (REQUIRED BEFORE PUSH)
Review PII findings and apply excludes/redactions as needed.
Full name is requested for an exact-name privacy scan against the export.
If the user declines sharing full name, use --skip-full-name-scan and attest the skip reason.
dataclaw confirm --full-name "THEIR FULL NAME" --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."
STEP 6 - PUBLISH (ONLY AFTER EXPLICIT USER APPROVAL)
dataclaw export --publish-attestation "User explicitly approved publishing to Hugging Face."
Never publish unless the user explicitly says yes.
IF ANY COMMAND FAILS DUE TO A SKIPPED STEP:
Restate the 6-step checklist above and resume from the blocked step (do not skip ahead).
IMPORTANT: Never run bare `hf auth login` when automating this with an agent - always use `--token`.
IMPORTANT: Always export with --no-push first and review for PII before publishing.

Manual usage (without an agent)

# STEP 1 - INSTALL
pip install -U dataclaw
hf auth login --token YOUR_TOKEN
# STEP 3 - PREP
dataclaw prep
dataclaw config --repo username/my-personal-codex-data
# STEP 3A - CHOOSE SOURCE SCOPE
dataclaw config --source all # REQUIRED: choose a supported source key or all# STEP 3B - CHOOSE PROJECT SCOPE
dataclaw list --source all # Present full list and confirm folder scope before export
dataclaw config --exclude "personal-stuff,scratch"# or: dataclaw config --confirm-projects# STEP 3C - SET REDACTED STRINGS
dataclaw config --redact-usernames "my_github_handle,my_discord_name"
dataclaw config --redact "my-domain.com,my-secret-project"# STEP 4 - EXPORT LOCALLY
dataclaw export --no-push
# STEP 5 - REVIEW AND CONFIRM
dataclaw confirm \
--full-name "YOUR FULL NAME" \
--attest-full-name "Asked for full name and scanned export for YOUR FULL NAME." \
--attest-sensitive "Asked about company/client/internal names and private URLs; none found or redactions updated." \
--attest-manual-scan "Manually scanned 20 sessions across beginning/middle/end and reviewed findings."# Or: if user declines sharing full name
dataclaw confirm \
--skip-full-name-scan \
--attest-full-name "User declined to share full name; skipped exact-name scan." \
--attest-sensitive "Asked about company/client/internal names and private URLs; none found or redactions updated." \
--attest-manual-scan "Manually scanned 20 sessions across beginning/middle/end and reviewed findings."# STEP 6 - PUBLISH
dataclaw export --publish-attestation "User explicitly approved publishing to Hugging Face."

Step 2 (INSTALL SKILL) is omitted in manual usage.

Commands

CommandDescription
dataclaw statusShow current stage and next steps
dataclaw prepDiscover projects, check HF auth, output JSON
dataclaw prep --source <source|all>Prep with an explicit source scope
dataclaw listList all projects with exclusion status
dataclaw list --source <source|all>List projects for a specific source scope
dataclaw configShow current config
dataclaw config --repo user/my-personal-codex-dataSet HF repo
dataclaw config --source <source|all>REQUIRED source scope selection (examples include claude, codex, and others)
dataclaw config --exclude "a,b"Add excluded projects (appends)
dataclaw config --redact "str1,str2"Add strings to always redact (appends)
dataclaw config --redact-usernames "u1,u2"Add usernames to anonymize (appends)
dataclaw config --confirm-projectsMark project selection as confirmed
dataclaw export --no-pushExport locally only (always do this first)
dataclaw export --source <source|all> --no-pushExport a chosen source scope locally
dataclaw confirm --full-name "NAME" --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."Scan for PII, run exact-name privacy check, verify review attestations, unlock pushing
dataclaw confirm --skip-full-name-scan --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."Skip exact-name scan when user declines sharing full name (requires skip attestation)
dataclaw export --publish-attestation "..."Export and push (requires dataclaw confirm first)
dataclaw export --all-projectsInclude everything (ignore exclusions)
dataclaw export --no-thinkingExclude extended thinking blocks
dataclaw update-skill claudeInstall/update the dataclaw skill for Claude Code

What gets exported

  • User messages - Including voice transcripts and images
  • Assistant responses
  • Assistant thinking - Opt out with --no-thinking
  • Tool calls - Tool name, inputs, outputs
  • Token usage - Input/output tokens per session
  • Metadata - Model name, git branch, timestamps

Privacy & Redaction

DataClaw applies multiple layers of protection:

  1. Username redaction - Your OS username + any configured usernames replaced with stable hashes
  2. Secret redaction - Regex patterns catch JWT tokens, API keys (Anthropic, OpenAI, HF, GitHub, AWS, etc.), database passwords, private keys, Discord webhooks, and more
  3. Entropy analysis - Long high-entropy strings in quotes are flagged as potential secrets
  4. Email redaction - Regex pattern catches email addresses
  5. Custom redaction - You can configure additional strings to redact
  6. Tool call redaction - Tool inputs and outputs are redacted with the same standard as regular messages

This is NOT foolproof. Always review your exported data before publishing. Automated redaction cannot catch everything - especially service-specific identifiers, third-party PII, or secrets in unusual formats.

We recommend to convert the exported jsonl into human-readable yaml using the script in peteromallet#1 , then use tools such as trufflehog and gitleaks to scan it.

To help improve redaction, report issues: https://github.com/banodoco/dataclaw/issues

Data schema

Each line in conversations.jsonl is one session:

{
"session_id": "abc-123",
"project": "my-project",
"model": "claude-opus-4-6",
"git_branch": "main",
"start_time": "2025-06-15T10:00:00+00:00",
"end_time": "2025-06-15T10:30:00+00:00",
"messages": [
{
"role": "user",
"content": "Fix the login bug",
"content_parts": [
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "..."}}
],
"timestamp": "..."
},
{
"role": "assistant",
"content": "I'll investigate the login flow.",
"thinking": "The user wants me to look at...",
"tool_uses": [
{
"tool": "bash",
"input": {"command": "grep -r 'login' src/"},
"output": {
"text": "src/auth.py:42: def login(user, password):",
"raw": {"stderr": "", "interrupted": false}
},
"status": "success"
}
],
"timestamp": "..."
}
],
"stats": {
"user_messages": 5, "assistant_messages": 8,
"tool_uses": 20, "input_tokens": 50000, "output_tokens": 3000
}
}

messages[].content_parts is optional and preserves structured user content such as attachments when the source provides them. The canonical human-readable user text remains in messages[].content.

tool_uses[].output.raw is optional and preserves extra structured tool-result fields when the source provides them. The canonical human-readable result text remains in tool_uses[].output.text.

Each HF repo also includes a metadata.json with aggregate stats.

Finding datasets on Hugging Face

All repos are tagged dataclaw.

  • Browse all:huggingface.co/datasets?other=dataclaw
  • Load one:
    fromdatasetsimportload_datasetds=load_dataset("alice/my-personal-codex-data", split="train")
  • Combine several:
    fromdatasetsimportload_dataset, concatenate_datasetsrepos= ["alice/my-personal-codex-data", "bob/my-personal-codex-data"]
    ds=concatenate_datasets([load_dataset(r, split="train") forrinrepos])

The auto-generated HF README includes:

  • Model distribution (which models, how many sessions each)
  • Total token counts
  • Project count
  • Last updated timestamp

Contributing

Missing data: If you found any data not exported, please report an issue. You can ask your coding agent to analyze the data, export it in this repo, and open a PR.

Better scheme: If you need to clean the data and want to propose a better scheme, feel free to open an issue.

New provider: If you use a new coding agent, you can ask it to read this repo and export its data as a new provider. Take Claude Code and Codex parsers as examples because they are the most well maintained. When you finish, ask the following questions:

  • Did you follow the scheme above? Currently it's free to add custom fields in messages[].content_parts and tool_uses[].output.raw.
  • Did you export all data, especially:
    • tool call inputs and outputs
    • long inputs and outputs that may be saved somewhere else
    • binary content (may be encoded as base64) such as images. We do not apply anonymizer on binary content
    • subagents
  • Does the coding agent automatically delete old sessions? How to prevent this?

Code Quality

Code Quality Scorecard

License

MIT

About

Agent harness to publish your history from Claude Code et al. as Huggingface datasets.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - QuantumlyTangled/dataclaw: Agent harness to publish your history from Claude Code et al. as Huggingface datasets. · GitHub
Skip to content
This repository was archived by the owner on Apr 21, 2026. It is now read-only.

Repository files navigation

DataClaw

This is a performance art project. Anthropic built their models on the world's freely shared information, then introduced increasingly dystopian data policies to stop anyone else from doing the same with their data - pulling up the ladder behind them. DataClaw lets you throw the ladder back down. The dataset it produces is yours to share.

Turn your Claude Code, Codex, and other coding-agent conversation history into structured data and publish it to Hugging Face with a single command. DataClaw parses session logs, redacts secrets and PII, and uploads the result as a ready-to-use dataset.

DataClaw

Every export is tagged dataclaw on Hugging Face. Together, they may someday form a growing distributed dataset of real-world human-AI coding collaboration.

Give this to your agent

Paste this into Claude Code, Codex, or any coding agent:

Help me export my Claude Code, Codex, and other coding-agent conversation history to Hugging Face using DataClaw.
Install it, then walk me through the process.
STEP 1 - INSTALL
pip install -U dataclaw
If that fails: git clone https://github.com/banodoco/dataclaw.git /tmp/dataclaw && pip install -U /tmp/dataclaw
If that also fails, ask the user where the source is.
STEP 2 - INSTALL SKILL
Skill support is currently only available for Claude Code.
dataclaw update-skill claude
For other agentic tools, skip this step and do not improvise a custom flow - follow the instructions in DataClaw's output on each step, especially next_steps and next_command.
STEP 3 - PREP
dataclaw prep
Every dataclaw command outputs next_steps in its JSON - follow them through the entire flow.
STEP 3A - CHOOSE SOURCE SCOPE (REQUIRED BEFORE EXPORT)
Ask the user explicitly which source scope to export: a supported source key such as claude or codex, or all.
dataclaw config --source all
Do not export until source scope is explicitly confirmed.
STEP 3B - CHOOSE PROJECT SCOPE (REQUIRED BEFORE EXPORT)
dataclaw list --source all
Send the FULL project/folder list to the user in a message (name, source, sessions, size, excluded).
Ask which projects to exclude.
dataclaw config --exclude "project1,project2" OR dataclaw config --confirm-projects
Do not export until folder selection is explicitly confirmed.
STEP 3C - SET REDACTED STRINGS
Ask the user what additional strings should always be redacted, such as company names, client names, domains, internal URLs, or secrets that regex might miss.
dataclaw config --redact "string1,string2"
dataclaw config --redact-usernames "user1,user2"
Only add these after explicit user confirmation.
STEP 4 - EXPORT LOCALLY
dataclaw export --no-push --output dataclaw_export.jsonl
STEP 5 - REVIEW AND CONFIRM (REQUIRED BEFORE PUSH)
Review PII findings and apply excludes/redactions as needed.
Full name is requested for an exact-name privacy scan against the export.
If the user declines sharing full name, use --skip-full-name-scan and attest the skip reason.
dataclaw confirm --full-name "THEIR FULL NAME" --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."
STEP 6 - PUBLISH (ONLY AFTER EXPLICIT USER APPROVAL)
dataclaw export --publish-attestation "User explicitly approved publishing to Hugging Face."
Never publish unless the user explicitly says yes.
IF ANY COMMAND FAILS DUE TO A SKIPPED STEP:
Restate the 6-step checklist above and resume from the blocked step (do not skip ahead).
IMPORTANT: Never run bare `hf auth login` when automating this with an agent - always use `--token`.
IMPORTANT: Always export with --no-push first and review for PII before publishing.

Manual usage (without an agent)

# STEP 1 - INSTALL
pip install -U dataclaw
hf auth login --token YOUR_TOKEN
# STEP 3 - PREP
dataclaw prep
dataclaw config --repo username/my-personal-codex-data
# STEP 3A - CHOOSE SOURCE SCOPE
dataclaw config --source all # REQUIRED: choose a supported source key or all# STEP 3B - CHOOSE PROJECT SCOPE
dataclaw list --source all # Present full list and confirm folder scope before export
dataclaw config --exclude "personal-stuff,scratch"# or: dataclaw config --confirm-projects# STEP 3C - SET REDACTED STRINGS
dataclaw config --redact-usernames "my_github_handle,my_discord_name"
dataclaw config --redact "my-domain.com,my-secret-project"# STEP 4 - EXPORT LOCALLY
dataclaw export --no-push
# STEP 5 - REVIEW AND CONFIRM
dataclaw confirm \
--full-name "YOUR FULL NAME" \
--attest-full-name "Asked for full name and scanned export for YOUR FULL NAME." \
--attest-sensitive "Asked about company/client/internal names and private URLs; none found or redactions updated." \
--attest-manual-scan "Manually scanned 20 sessions across beginning/middle/end and reviewed findings."# Or: if user declines sharing full name
dataclaw confirm \
--skip-full-name-scan \
--attest-full-name "User declined to share full name; skipped exact-name scan." \
--attest-sensitive "Asked about company/client/internal names and private URLs; none found or redactions updated." \
--attest-manual-scan "Manually scanned 20 sessions across beginning/middle/end and reviewed findings."# STEP 6 - PUBLISH
dataclaw export --publish-attestation "User explicitly approved publishing to Hugging Face."

Step 2 (INSTALL SKILL) is omitted in manual usage.

Commands

CommandDescription
dataclaw statusShow current stage and next steps
dataclaw prepDiscover projects, check HF auth, output JSON
dataclaw prep --source <source|all>Prep with an explicit source scope
dataclaw listList all projects with exclusion status
dataclaw list --source <source|all>List projects for a specific source scope
dataclaw configShow current config
dataclaw config --repo user/my-personal-codex-dataSet HF repo
dataclaw config --source <source|all>REQUIRED source scope selection (examples include claude, codex, and others)
dataclaw config --exclude "a,b"Add excluded projects (appends)
dataclaw config --redact "str1,str2"Add strings to always redact (appends)
dataclaw config --redact-usernames "u1,u2"Add usernames to anonymize (appends)
dataclaw config --confirm-projectsMark project selection as confirmed
dataclaw export --no-pushExport locally only (always do this first)
dataclaw export --source <source|all> --no-pushExport a chosen source scope locally
dataclaw confirm --full-name "NAME" --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."Scan for PII, run exact-name privacy check, verify review attestations, unlock pushing
dataclaw confirm --skip-full-name-scan --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."Skip exact-name scan when user declines sharing full name (requires skip attestation)
dataclaw export --publish-attestation "..."Export and push (requires dataclaw confirm first)
dataclaw export --all-projectsInclude everything (ignore exclusions)
dataclaw export --no-thinkingExclude extended thinking blocks
dataclaw update-skill claudeInstall/update the dataclaw skill for Claude Code

What gets exported

  • User messages - Including voice transcripts and images
  • Assistant responses
  • Assistant thinking - Opt out with --no-thinking
  • Tool calls - Tool name, inputs, outputs
  • Token usage - Input/output tokens per session
  • Metadata - Model name, git branch, timestamps

Privacy & Redaction

DataClaw applies multiple layers of protection:

  1. Username redaction - Your OS username + any configured usernames replaced with stable hashes
  2. Secret redaction - Regex patterns catch JWT tokens, API keys (Anthropic, OpenAI, HF, GitHub, AWS, etc.), database passwords, private keys, Discord webhooks, and more
  3. Entropy analysis - Long high-entropy strings in quotes are flagged as potential secrets
  4. Email redaction - Regex pattern catches email addresses
  5. Custom redaction - You can configure additional strings to redact
  6. Tool call redaction - Tool inputs and outputs are redacted with the same standard as regular messages

This is NOT foolproof. Always review your exported data before publishing. Automated redaction cannot catch everything - especially service-specific identifiers, third-party PII, or secrets in unusual formats.

We recommend to convert the exported jsonl into human-readable yaml using the script in peteromallet#1 , then use tools such as trufflehog and gitleaks to scan it.

To help improve redaction, report issues: https://github.com/banodoco/dataclaw/issues

Data schema

Each line in conversations.jsonl is one session:

{
"session_id": "abc-123",
"project": "my-project",
"model": "claude-opus-4-6",
"git_branch": "main",
"start_time": "2025-06-15T10:00:00+00:00",
"end_time": "2025-06-15T10:30:00+00:00",
"messages": [
{
"role": "user",
"content": "Fix the login bug",
"content_parts": [
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "..."}}
],
"timestamp": "..."
},
{
"role": "assistant",
"content": "I'll investigate the login flow.",
"thinking": "The user wants me to look at...",
"tool_uses": [
{
"tool": "bash",
"input": {"command": "grep -r 'login' src/"},
"output": {
"text": "src/auth.py:42: def login(user, password):",
"raw": {"stderr": "", "interrupted": false}
},
"status": "success"
}
],
"timestamp": "..."
}
],
"stats": {
"user_messages": 5, "assistant_messages": 8,
"tool_uses": 20, "input_tokens": 50000, "output_tokens": 3000
}
}

messages[].content_parts is optional and preserves structured user content such as attachments when the source provides them. The canonical human-readable user text remains in messages[].content.

tool_uses[].output.raw is optional and preserves extra structured tool-result fields when the source provides them. The canonical human-readable result text remains in tool_uses[].output.text.

Each HF repo also includes a metadata.json with aggregate stats.

Finding datasets on Hugging Face

All repos are tagged dataclaw.

  • Browse all:huggingface.co/datasets?other=dataclaw
  • Load one:
    fromdatasetsimportload_datasetds=load_dataset("alice/my-personal-codex-data", split="train")
  • Combine several:
    fromdatasetsimportload_dataset, concatenate_datasetsrepos= ["alice/my-personal-codex-data", "bob/my-personal-codex-data"]
    ds=concatenate_datasets([load_dataset(r, split="train") forrinrepos])

The auto-generated HF README includes:

  • Model distribution (which models, how many sessions each)
  • Total token counts
  • Project count
  • Last updated timestamp

Contributing

Missing data: If you found any data not exported, please report an issue. You can ask your coding agent to analyze the data, export it in this repo, and open a PR.

Better scheme: If you need to clean the data and want to propose a better scheme, feel free to open an issue.

New provider: If you use a new coding agent, you can ask it to read this repo and export its data as a new provider. Take Claude Code and Codex parsers as examples because they are the most well maintained. When you finish, ask the following questions:

  • Did you follow the scheme above? Currently it's free to add custom fields in messages[].content_parts and tool_uses[].output.raw.
  • Did you export all data, especially:
    • tool call inputs and outputs
    • long inputs and outputs that may be saved somewhere else
    • binary content (may be encoded as base64) such as images. We do not apply anonymizer on binary content
    • subagents
  • Does the coding agent automatically delete old sessions? How to prevent this?

Code Quality

Code Quality Scorecard

License

MIT

About

Agent harness to publish your history from Claude Code et al. as Huggingface datasets.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - QuantumlyTangled/dataclaw: Agent harness to publish your history from Claude Code et al. as Huggingface datasets. · GitHub
Skip to content
This repository was archived by the owner on Apr 21, 2026. It is now read-only.

Repository files navigation

DataClaw

This is a performance art project. Anthropic built their models on the world's freely shared information, then introduced increasingly dystopian data policies to stop anyone else from doing the same with their data - pulling up the ladder behind them. DataClaw lets you throw the ladder back down. The dataset it produces is yours to share.

Turn your Claude Code, Codex, and other coding-agent conversation history into structured data and publish it to Hugging Face with a single command. DataClaw parses session logs, redacts secrets and PII, and uploads the result as a ready-to-use dataset.

DataClaw

Every export is tagged dataclaw on Hugging Face. Together, they may someday form a growing distributed dataset of real-world human-AI coding collaboration.

Give this to your agent

Paste this into Claude Code, Codex, or any coding agent:

Help me export my Claude Code, Codex, and other coding-agent conversation history to Hugging Face using DataClaw.
Install it, then walk me through the process.
STEP 1 - INSTALL
pip install -U dataclaw
If that fails: git clone https://github.com/banodoco/dataclaw.git /tmp/dataclaw && pip install -U /tmp/dataclaw
If that also fails, ask the user where the source is.
STEP 2 - INSTALL SKILL
Skill support is currently only available for Claude Code.
dataclaw update-skill claude
For other agentic tools, skip this step and do not improvise a custom flow - follow the instructions in DataClaw's output on each step, especially next_steps and next_command.
STEP 3 - PREP
dataclaw prep
Every dataclaw command outputs next_steps in its JSON - follow them through the entire flow.
STEP 3A - CHOOSE SOURCE SCOPE (REQUIRED BEFORE EXPORT)
Ask the user explicitly which source scope to export: a supported source key such as claude or codex, or all.
dataclaw config --source all
Do not export until source scope is explicitly confirmed.
STEP 3B - CHOOSE PROJECT SCOPE (REQUIRED BEFORE EXPORT)
dataclaw list --source all
Send the FULL project/folder list to the user in a message (name, source, sessions, size, excluded).
Ask which projects to exclude.
dataclaw config --exclude "project1,project2" OR dataclaw config --confirm-projects
Do not export until folder selection is explicitly confirmed.
STEP 3C - SET REDACTED STRINGS
Ask the user what additional strings should always be redacted, such as company names, client names, domains, internal URLs, or secrets that regex might miss.
dataclaw config --redact "string1,string2"
dataclaw config --redact-usernames "user1,user2"
Only add these after explicit user confirmation.
STEP 4 - EXPORT LOCALLY
dataclaw export --no-push --output dataclaw_export.jsonl
STEP 5 - REVIEW AND CONFIRM (REQUIRED BEFORE PUSH)
Review PII findings and apply excludes/redactions as needed.
Full name is requested for an exact-name privacy scan against the export.
If the user declines sharing full name, use --skip-full-name-scan and attest the skip reason.
dataclaw confirm --full-name "THEIR FULL NAME" --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."
STEP 6 - PUBLISH (ONLY AFTER EXPLICIT USER APPROVAL)
dataclaw export --publish-attestation "User explicitly approved publishing to Hugging Face."
Never publish unless the user explicitly says yes.
IF ANY COMMAND FAILS DUE TO A SKIPPED STEP:
Restate the 6-step checklist above and resume from the blocked step (do not skip ahead).
IMPORTANT: Never run bare `hf auth login` when automating this with an agent - always use `--token`.
IMPORTANT: Always export with --no-push first and review for PII before publishing.

Manual usage (without an agent)

# STEP 1 - INSTALL
pip install -U dataclaw
hf auth login --token YOUR_TOKEN
# STEP 3 - PREP
dataclaw prep
dataclaw config --repo username/my-personal-codex-data
# STEP 3A - CHOOSE SOURCE SCOPE
dataclaw config --source all # REQUIRED: choose a supported source key or all# STEP 3B - CHOOSE PROJECT SCOPE
dataclaw list --source all # Present full list and confirm folder scope before export
dataclaw config --exclude "personal-stuff,scratch"# or: dataclaw config --confirm-projects# STEP 3C - SET REDACTED STRINGS
dataclaw config --redact-usernames "my_github_handle,my_discord_name"
dataclaw config --redact "my-domain.com,my-secret-project"# STEP 4 - EXPORT LOCALLY
dataclaw export --no-push
# STEP 5 - REVIEW AND CONFIRM
dataclaw confirm \
--full-name "YOUR FULL NAME" \
--attest-full-name "Asked for full name and scanned export for YOUR FULL NAME." \
--attest-sensitive "Asked about company/client/internal names and private URLs; none found or redactions updated." \
--attest-manual-scan "Manually scanned 20 sessions across beginning/middle/end and reviewed findings."# Or: if user declines sharing full name
dataclaw confirm \
--skip-full-name-scan \
--attest-full-name "User declined to share full name; skipped exact-name scan." \
--attest-sensitive "Asked about company/client/internal names and private URLs; none found or redactions updated." \
--attest-manual-scan "Manually scanned 20 sessions across beginning/middle/end and reviewed findings."# STEP 6 - PUBLISH
dataclaw export --publish-attestation "User explicitly approved publishing to Hugging Face."

Step 2 (INSTALL SKILL) is omitted in manual usage.

Commands

CommandDescription
dataclaw statusShow current stage and next steps
dataclaw prepDiscover projects, check HF auth, output JSON
dataclaw prep --source <source|all>Prep with an explicit source scope
dataclaw listList all projects with exclusion status
dataclaw list --source <source|all>List projects for a specific source scope
dataclaw configShow current config
dataclaw config --repo user/my-personal-codex-dataSet HF repo
dataclaw config --source <source|all>REQUIRED source scope selection (examples include claude, codex, and others)
dataclaw config --exclude "a,b"Add excluded projects (appends)
dataclaw config --redact "str1,str2"Add strings to always redact (appends)
dataclaw config --redact-usernames "u1,u2"Add usernames to anonymize (appends)
dataclaw config --confirm-projectsMark project selection as confirmed
dataclaw export --no-pushExport locally only (always do this first)
dataclaw export --source <source|all> --no-pushExport a chosen source scope locally
dataclaw confirm --full-name "NAME" --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."Scan for PII, run exact-name privacy check, verify review attestations, unlock pushing
dataclaw confirm --skip-full-name-scan --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."Skip exact-name scan when user declines sharing full name (requires skip attestation)
dataclaw export --publish-attestation "..."Export and push (requires dataclaw confirm first)
dataclaw export --all-projectsInclude everything (ignore exclusions)
dataclaw export --no-thinkingExclude extended thinking blocks
dataclaw update-skill claudeInstall/update the dataclaw skill for Claude Code

What gets exported

  • User messages - Including voice transcripts and images
  • Assistant responses
  • Assistant thinking - Opt out with --no-thinking
  • Tool calls - Tool name, inputs, outputs
  • Token usage - Input/output tokens per session
  • Metadata - Model name, git branch, timestamps

Privacy & Redaction

DataClaw applies multiple layers of protection:

  1. Username redaction - Your OS username + any configured usernames replaced with stable hashes
  2. Secret redaction - Regex patterns catch JWT tokens, API keys (Anthropic, OpenAI, HF, GitHub, AWS, etc.), database passwords, private keys, Discord webhooks, and more
  3. Entropy analysis - Long high-entropy strings in quotes are flagged as potential secrets
  4. Email redaction - Regex pattern catches email addresses
  5. Custom redaction - You can configure additional strings to redact
  6. Tool call redaction - Tool inputs and outputs are redacted with the same standard as regular messages

This is NOT foolproof. Always review your exported data before publishing. Automated redaction cannot catch everything - especially service-specific identifiers, third-party PII, or secrets in unusual formats.

We recommend to convert the exported jsonl into human-readable yaml using the script in peteromallet#1 , then use tools such as trufflehog and gitleaks to scan it.

To help improve redaction, report issues: https://github.com/banodoco/dataclaw/issues

Data schema

Each line in conversations.jsonl is one session:

{
"session_id": "abc-123",
"project": "my-project",
"model": "claude-opus-4-6",
"git_branch": "main",
"start_time": "2025-06-15T10:00:00+00:00",
"end_time": "2025-06-15T10:30:00+00:00",
"messages": [
{
"role": "user",
"content": "Fix the login bug",
"content_parts": [
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "..."}}
],
"timestamp": "..."
},
{
"role": "assistant",
"content": "I'll investigate the login flow.",
"thinking": "The user wants me to look at...",
"tool_uses": [
{
"tool": "bash",
"input": {"command": "grep -r 'login' src/"},
"output": {
"text": "src/auth.py:42: def login(user, password):",
"raw": {"stderr": "", "interrupted": false}
},
"status": "success"
}
],
"timestamp": "..."
}
],
"stats": {
"user_messages": 5, "assistant_messages": 8,
"tool_uses": 20, "input_tokens": 50000, "output_tokens": 3000
}
}

messages[].content_parts is optional and preserves structured user content such as attachments when the source provides them. The canonical human-readable user text remains in messages[].content.

tool_uses[].output.raw is optional and preserves extra structured tool-result fields when the source provides them. The canonical human-readable result text remains in tool_uses[].output.text.

Each HF repo also includes a metadata.json with aggregate stats.

Finding datasets on Hugging Face

All repos are tagged dataclaw.

  • Browse all:huggingface.co/datasets?other=dataclaw
  • Load one:
    fromdatasetsimportload_datasetds=load_dataset("alice/my-personal-codex-data", split="train")
  • Combine several:
    fromdatasetsimportload_dataset, concatenate_datasetsrepos= ["alice/my-personal-codex-data", "bob/my-personal-codex-data"]
    ds=concatenate_datasets([load_dataset(r, split="train") forrinrepos])

The auto-generated HF README includes:

  • Model distribution (which models, how many sessions each)
  • Total token counts
  • Project count
  • Last updated timestamp

Contributing

Missing data: If you found any data not exported, please report an issue. You can ask your coding agent to analyze the data, export it in this repo, and open a PR.

Better scheme: If you need to clean the data and want to propose a better scheme, feel free to open an issue.

New provider: If you use a new coding agent, you can ask it to read this repo and export its data as a new provider. Take Claude Code and Codex parsers as examples because they are the most well maintained. When you finish, ask the following questions:

  • Did you follow the scheme above? Currently it's free to add custom fields in messages[].content_parts and tool_uses[].output.raw.
  • Did you export all data, especially:
    • tool call inputs and outputs
    • long inputs and outputs that may be saved somewhere else
    • binary content (may be encoded as base64) such as images. We do not apply anonymizer on binary content
    • subagents
  • Does the coding agent automatically delete old sessions? How to prevent this?

Code Quality

Code Quality Scorecard

License

MIT

About

Agent harness to publish your history from Claude Code et al. as Huggingface datasets.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - QuantumlyTangled/dataclaw: Agent harness to publish your history from Claude Code et al. as Huggingface datasets. · GitHub
Skip to content
This repository was archived by the owner on Apr 21, 2026. It is now read-only.

Repository files navigation

DataClaw

This is a performance art project. Anthropic built their models on the world's freely shared information, then introduced increasingly dystopian data policies to stop anyone else from doing the same with their data - pulling up the ladder behind them. DataClaw lets you throw the ladder back down. The dataset it produces is yours to share.

Turn your Claude Code, Codex, and other coding-agent conversation history into structured data and publish it to Hugging Face with a single command. DataClaw parses session logs, redacts secrets and PII, and uploads the result as a ready-to-use dataset.

DataClaw

Every export is tagged dataclaw on Hugging Face. Together, they may someday form a growing distributed dataset of real-world human-AI coding collaboration.

Give this to your agent

Paste this into Claude Code, Codex, or any coding agent:

Help me export my Claude Code, Codex, and other coding-agent conversation history to Hugging Face using DataClaw.
Install it, then walk me through the process.
STEP 1 - INSTALL
pip install -U dataclaw
If that fails: git clone https://github.com/banodoco/dataclaw.git /tmp/dataclaw && pip install -U /tmp/dataclaw
If that also fails, ask the user where the source is.
STEP 2 - INSTALL SKILL
Skill support is currently only available for Claude Code.
dataclaw update-skill claude
For other agentic tools, skip this step and do not improvise a custom flow - follow the instructions in DataClaw's output on each step, especially next_steps and next_command.
STEP 3 - PREP
dataclaw prep
Every dataclaw command outputs next_steps in its JSON - follow them through the entire flow.
STEP 3A - CHOOSE SOURCE SCOPE (REQUIRED BEFORE EXPORT)
Ask the user explicitly which source scope to export: a supported source key such as claude or codex, or all.
dataclaw config --source all
Do not export until source scope is explicitly confirmed.
STEP 3B - CHOOSE PROJECT SCOPE (REQUIRED BEFORE EXPORT)
dataclaw list --source all
Send the FULL project/folder list to the user in a message (name, source, sessions, size, excluded).
Ask which projects to exclude.
dataclaw config --exclude "project1,project2" OR dataclaw config --confirm-projects
Do not export until folder selection is explicitly confirmed.
STEP 3C - SET REDACTED STRINGS
Ask the user what additional strings should always be redacted, such as company names, client names, domains, internal URLs, or secrets that regex might miss.
dataclaw config --redact "string1,string2"
dataclaw config --redact-usernames "user1,user2"
Only add these after explicit user confirmation.
STEP 4 - EXPORT LOCALLY
dataclaw export --no-push --output dataclaw_export.jsonl
STEP 5 - REVIEW AND CONFIRM (REQUIRED BEFORE PUSH)
Review PII findings and apply excludes/redactions as needed.
Full name is requested for an exact-name privacy scan against the export.
If the user declines sharing full name, use --skip-full-name-scan and attest the skip reason.
dataclaw confirm --full-name "THEIR FULL NAME" --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."
STEP 6 - PUBLISH (ONLY AFTER EXPLICIT USER APPROVAL)
dataclaw export --publish-attestation "User explicitly approved publishing to Hugging Face."
Never publish unless the user explicitly says yes.
IF ANY COMMAND FAILS DUE TO A SKIPPED STEP:
Restate the 6-step checklist above and resume from the blocked step (do not skip ahead).
IMPORTANT: Never run bare `hf auth login` when automating this with an agent - always use `--token`.
IMPORTANT: Always export with --no-push first and review for PII before publishing.

Manual usage (without an agent)

# STEP 1 - INSTALL
pip install -U dataclaw
hf auth login --token YOUR_TOKEN
# STEP 3 - PREP
dataclaw prep
dataclaw config --repo username/my-personal-codex-data
# STEP 3A - CHOOSE SOURCE SCOPE
dataclaw config --source all # REQUIRED: choose a supported source key or all# STEP 3B - CHOOSE PROJECT SCOPE
dataclaw list --source all # Present full list and confirm folder scope before export
dataclaw config --exclude "personal-stuff,scratch"# or: dataclaw config --confirm-projects# STEP 3C - SET REDACTED STRINGS
dataclaw config --redact-usernames "my_github_handle,my_discord_name"
dataclaw config --redact "my-domain.com,my-secret-project"# STEP 4 - EXPORT LOCALLY
dataclaw export --no-push
# STEP 5 - REVIEW AND CONFIRM
dataclaw confirm \
--full-name "YOUR FULL NAME" \
--attest-full-name "Asked for full name and scanned export for YOUR FULL NAME." \
--attest-sensitive "Asked about company/client/internal names and private URLs; none found or redactions updated." \
--attest-manual-scan "Manually scanned 20 sessions across beginning/middle/end and reviewed findings."# Or: if user declines sharing full name
dataclaw confirm \
--skip-full-name-scan \
--attest-full-name "User declined to share full name; skipped exact-name scan." \
--attest-sensitive "Asked about company/client/internal names and private URLs; none found or redactions updated." \
--attest-manual-scan "Manually scanned 20 sessions across beginning/middle/end and reviewed findings."# STEP 6 - PUBLISH
dataclaw export --publish-attestation "User explicitly approved publishing to Hugging Face."

Step 2 (INSTALL SKILL) is omitted in manual usage.

Commands

CommandDescription
dataclaw statusShow current stage and next steps
dataclaw prepDiscover projects, check HF auth, output JSON
dataclaw prep --source <source|all>Prep with an explicit source scope
dataclaw listList all projects with exclusion status
dataclaw list --source <source|all>List projects for a specific source scope
dataclaw configShow current config
dataclaw config --repo user/my-personal-codex-dataSet HF repo
dataclaw config --source <source|all>REQUIRED source scope selection (examples include claude, codex, and others)
dataclaw config --exclude "a,b"Add excluded projects (appends)
dataclaw config --redact "str1,str2"Add strings to always redact (appends)
dataclaw config --redact-usernames "u1,u2"Add usernames to anonymize (appends)
dataclaw config --confirm-projectsMark project selection as confirmed
dataclaw export --no-pushExport locally only (always do this first)
dataclaw export --source <source|all> --no-pushExport a chosen source scope locally
dataclaw confirm --full-name "NAME" --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."Scan for PII, run exact-name privacy check, verify review attestations, unlock pushing
dataclaw confirm --skip-full-name-scan --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."Skip exact-name scan when user declines sharing full name (requires skip attestation)
dataclaw export --publish-attestation "..."Export and push (requires dataclaw confirm first)
dataclaw export --all-projectsInclude everything (ignore exclusions)
dataclaw export --no-thinkingExclude extended thinking blocks
dataclaw update-skill claudeInstall/update the dataclaw skill for Claude Code

What gets exported

  • User messages - Including voice transcripts and images
  • Assistant responses
  • Assistant thinking - Opt out with --no-thinking
  • Tool calls - Tool name, inputs, outputs
  • Token usage - Input/output tokens per session
  • Metadata - Model name, git branch, timestamps

Privacy & Redaction

DataClaw applies multiple layers of protection:

  1. Username redaction - Your OS username + any configured usernames replaced with stable hashes
  2. Secret redaction - Regex patterns catch JWT tokens, API keys (Anthropic, OpenAI, HF, GitHub, AWS, etc.), database passwords, private keys, Discord webhooks, and more
  3. Entropy analysis - Long high-entropy strings in quotes are flagged as potential secrets
  4. Email redaction - Regex pattern catches email addresses
  5. Custom redaction - You can configure additional strings to redact
  6. Tool call redaction - Tool inputs and outputs are redacted with the same standard as regular messages

This is NOT foolproof. Always review your exported data before publishing. Automated redaction cannot catch everything - especially service-specific identifiers, third-party PII, or secrets in unusual formats.

We recommend to convert the exported jsonl into human-readable yaml using the script in peteromallet#1 , then use tools such as trufflehog and gitleaks to scan it.

To help improve redaction, report issues: https://github.com/banodoco/dataclaw/issues

Data schema

Each line in conversations.jsonl is one session:

{
"session_id": "abc-123",
"project": "my-project",
"model": "claude-opus-4-6",
"git_branch": "main",
"start_time": "2025-06-15T10:00:00+00:00",
"end_time": "2025-06-15T10:30:00+00:00",
"messages": [
{
"role": "user",
"content": "Fix the login bug",
"content_parts": [
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "..."}}
],
"timestamp": "..."
},
{
"role": "assistant",
"content": "I'll investigate the login flow.",
"thinking": "The user wants me to look at...",
"tool_uses": [
{
"tool": "bash",
"input": {"command": "grep -r 'login' src/"},
"output": {
"text": "src/auth.py:42: def login(user, password):",
"raw": {"stderr": "", "interrupted": false}
},
"status": "success"
}
],
"timestamp": "..."
}
],
"stats": {
"user_messages": 5, "assistant_messages": 8,
"tool_uses": 20, "input_tokens": 50000, "output_tokens": 3000
}
}

messages[].content_parts is optional and preserves structured user content such as attachments when the source provides them. The canonical human-readable user text remains in messages[].content.

tool_uses[].output.raw is optional and preserves extra structured tool-result fields when the source provides them. The canonical human-readable result text remains in tool_uses[].output.text.

Each HF repo also includes a metadata.json with aggregate stats.

Finding datasets on Hugging Face

All repos are tagged dataclaw.

  • Browse all:huggingface.co/datasets?other=dataclaw
  • Load one:
    fromdatasetsimportload_datasetds=load_dataset("alice/my-personal-codex-data", split="train")
  • Combine several:
    fromdatasetsimportload_dataset, concatenate_datasetsrepos= ["alice/my-personal-codex-data", "bob/my-personal-codex-data"]
    ds=concatenate_datasets([load_dataset(r, split="train") forrinrepos])

The auto-generated HF README includes:

  • Model distribution (which models, how many sessions each)
  • Total token counts
  • Project count
  • Last updated timestamp

Contributing

Missing data: If you found any data not exported, please report an issue. You can ask your coding agent to analyze the data, export it in this repo, and open a PR.

Better scheme: If you need to clean the data and want to propose a better scheme, feel free to open an issue.

New provider: If you use a new coding agent, you can ask it to read this repo and export its data as a new provider. Take Claude Code and Codex parsers as examples because they are the most well maintained. When you finish, ask the following questions:

  • Did you follow the scheme above? Currently it's free to add custom fields in messages[].content_parts and tool_uses[].output.raw.
  • Did you export all data, especially:
    • tool call inputs and outputs
    • long inputs and outputs that may be saved somewhere else
    • binary content (may be encoded as base64) such as images. We do not apply anonymizer on binary content
    • subagents
  • Does the coding agent automatically delete old sessions? How to prevent this?

Code Quality

Code Quality Scorecard

License

MIT

About

Agent harness to publish your history from Claude Code et al. as Huggingface datasets.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - QuantumlyTangled/dataclaw: Agent harness to publish your history from Claude Code et al. as Huggingface datasets. · GitHub
Skip to content
This repository was archived by the owner on Apr 21, 2026. It is now read-only.

Repository files navigation

DataClaw

This is a performance art project. Anthropic built their models on the world's freely shared information, then introduced increasingly dystopian data policies to stop anyone else from doing the same with their data - pulling up the ladder behind them. DataClaw lets you throw the ladder back down. The dataset it produces is yours to share.

Turn your Claude Code, Codex, and other coding-agent conversation history into structured data and publish it to Hugging Face with a single command. DataClaw parses session logs, redacts secrets and PII, and uploads the result as a ready-to-use dataset.

DataClaw

Every export is tagged dataclaw on Hugging Face. Together, they may someday form a growing distributed dataset of real-world human-AI coding collaboration.

Give this to your agent

Paste this into Claude Code, Codex, or any coding agent:

Help me export my Claude Code, Codex, and other coding-agent conversation history to Hugging Face using DataClaw.
Install it, then walk me through the process.
STEP 1 - INSTALL
pip install -U dataclaw
If that fails: git clone https://github.com/banodoco/dataclaw.git /tmp/dataclaw && pip install -U /tmp/dataclaw
If that also fails, ask the user where the source is.
STEP 2 - INSTALL SKILL
Skill support is currently only available for Claude Code.
dataclaw update-skill claude
For other agentic tools, skip this step and do not improvise a custom flow - follow the instructions in DataClaw's output on each step, especially next_steps and next_command.
STEP 3 - PREP
dataclaw prep
Every dataclaw command outputs next_steps in its JSON - follow them through the entire flow.
STEP 3A - CHOOSE SOURCE SCOPE (REQUIRED BEFORE EXPORT)
Ask the user explicitly which source scope to export: a supported source key such as claude or codex, or all.
dataclaw config --source all
Do not export until source scope is explicitly confirmed.
STEP 3B - CHOOSE PROJECT SCOPE (REQUIRED BEFORE EXPORT)
dataclaw list --source all
Send the FULL project/folder list to the user in a message (name, source, sessions, size, excluded).
Ask which projects to exclude.
dataclaw config --exclude "project1,project2" OR dataclaw config --confirm-projects
Do not export until folder selection is explicitly confirmed.
STEP 3C - SET REDACTED STRINGS
Ask the user what additional strings should always be redacted, such as company names, client names, domains, internal URLs, or secrets that regex might miss.
dataclaw config --redact "string1,string2"
dataclaw config --redact-usernames "user1,user2"
Only add these after explicit user confirmation.
STEP 4 - EXPORT LOCALLY
dataclaw export --no-push --output dataclaw_export.jsonl
STEP 5 - REVIEW AND CONFIRM (REQUIRED BEFORE PUSH)
Review PII findings and apply excludes/redactions as needed.
Full name is requested for an exact-name privacy scan against the export.
If the user declines sharing full name, use --skip-full-name-scan and attest the skip reason.
dataclaw confirm --full-name "THEIR FULL NAME" --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."
STEP 6 - PUBLISH (ONLY AFTER EXPLICIT USER APPROVAL)
dataclaw export --publish-attestation "User explicitly approved publishing to Hugging Face."
Never publish unless the user explicitly says yes.
IF ANY COMMAND FAILS DUE TO A SKIPPED STEP:
Restate the 6-step checklist above and resume from the blocked step (do not skip ahead).
IMPORTANT: Never run bare `hf auth login` when automating this with an agent - always use `--token`.
IMPORTANT: Always export with --no-push first and review for PII before publishing.

Manual usage (without an agent)

# STEP 1 - INSTALL
pip install -U dataclaw
hf auth login --token YOUR_TOKEN
# STEP 3 - PREP
dataclaw prep
dataclaw config --repo username/my-personal-codex-data
# STEP 3A - CHOOSE SOURCE SCOPE
dataclaw config --source all # REQUIRED: choose a supported source key or all# STEP 3B - CHOOSE PROJECT SCOPE
dataclaw list --source all # Present full list and confirm folder scope before export
dataclaw config --exclude "personal-stuff,scratch"# or: dataclaw config --confirm-projects# STEP 3C - SET REDACTED STRINGS
dataclaw config --redact-usernames "my_github_handle,my_discord_name"
dataclaw config --redact "my-domain.com,my-secret-project"# STEP 4 - EXPORT LOCALLY
dataclaw export --no-push
# STEP 5 - REVIEW AND CONFIRM
dataclaw confirm \
--full-name "YOUR FULL NAME" \
--attest-full-name "Asked for full name and scanned export for YOUR FULL NAME." \
--attest-sensitive "Asked about company/client/internal names and private URLs; none found or redactions updated." \
--attest-manual-scan "Manually scanned 20 sessions across beginning/middle/end and reviewed findings."# Or: if user declines sharing full name
dataclaw confirm \
--skip-full-name-scan \
--attest-full-name "User declined to share full name; skipped exact-name scan." \
--attest-sensitive "Asked about company/client/internal names and private URLs; none found or redactions updated." \
--attest-manual-scan "Manually scanned 20 sessions across beginning/middle/end and reviewed findings."# STEP 6 - PUBLISH
dataclaw export --publish-attestation "User explicitly approved publishing to Hugging Face."

Step 2 (INSTALL SKILL) is omitted in manual usage.

Commands

CommandDescription
dataclaw statusShow current stage and next steps
dataclaw prepDiscover projects, check HF auth, output JSON
dataclaw prep --source <source|all>Prep with an explicit source scope
dataclaw listList all projects with exclusion status
dataclaw list --source <source|all>List projects for a specific source scope
dataclaw configShow current config
dataclaw config --repo user/my-personal-codex-dataSet HF repo
dataclaw config --source <source|all>REQUIRED source scope selection (examples include claude, codex, and others)
dataclaw config --exclude "a,b"Add excluded projects (appends)
dataclaw config --redact "str1,str2"Add strings to always redact (appends)
dataclaw config --redact-usernames "u1,u2"Add usernames to anonymize (appends)
dataclaw config --confirm-projectsMark project selection as confirmed
dataclaw export --no-pushExport locally only (always do this first)
dataclaw export --source <source|all> --no-pushExport a chosen source scope locally
dataclaw confirm --full-name "NAME" --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."Scan for PII, run exact-name privacy check, verify review attestations, unlock pushing
dataclaw confirm --skip-full-name-scan --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."Skip exact-name scan when user declines sharing full name (requires skip attestation)
dataclaw export --publish-attestation "..."Export and push (requires dataclaw confirm first)
dataclaw export --all-projectsInclude everything (ignore exclusions)
dataclaw export --no-thinkingExclude extended thinking blocks
dataclaw update-skill claudeInstall/update the dataclaw skill for Claude Code

What gets exported

  • User messages - Including voice transcripts and images
  • Assistant responses
  • Assistant thinking - Opt out with --no-thinking
  • Tool calls - Tool name, inputs, outputs
  • Token usage - Input/output tokens per session
  • Metadata - Model name, git branch, timestamps

Privacy & Redaction

DataClaw applies multiple layers of protection:

  1. Username redaction - Your OS username + any configured usernames replaced with stable hashes
  2. Secret redaction - Regex patterns catch JWT tokens, API keys (Anthropic, OpenAI, HF, GitHub, AWS, etc.), database passwords, private keys, Discord webhooks, and more
  3. Entropy analysis - Long high-entropy strings in quotes are flagged as potential secrets
  4. Email redaction - Regex pattern catches email addresses
  5. Custom redaction - You can configure additional strings to redact
  6. Tool call redaction - Tool inputs and outputs are redacted with the same standard as regular messages

This is NOT foolproof. Always review your exported data before publishing. Automated redaction cannot catch everything - especially service-specific identifiers, third-party PII, or secrets in unusual formats.

We recommend to convert the exported jsonl into human-readable yaml using the script in peteromallet#1 , then use tools such as trufflehog and gitleaks to scan it.

To help improve redaction, report issues: https://github.com/banodoco/dataclaw/issues

Data schema

Each line in conversations.jsonl is one session:

{
"session_id": "abc-123",
"project": "my-project",
"model": "claude-opus-4-6",
"git_branch": "main",
"start_time": "2025-06-15T10:00:00+00:00",
"end_time": "2025-06-15T10:30:00+00:00",
"messages": [
{
"role": "user",
"content": "Fix the login bug",
"content_parts": [
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "..."}}
],
"timestamp": "..."
},
{
"role": "assistant",
"content": "I'll investigate the login flow.",
"thinking": "The user wants me to look at...",
"tool_uses": [
{
"tool": "bash",
"input": {"command": "grep -r 'login' src/"},
"output": {
"text": "src/auth.py:42: def login(user, password):",
"raw": {"stderr": "", "interrupted": false}
},
"status": "success"
}
],
"timestamp": "..."
}
],
"stats": {
"user_messages": 5, "assistant_messages": 8,
"tool_uses": 20, "input_tokens": 50000, "output_tokens": 3000
}
}

messages[].content_parts is optional and preserves structured user content such as attachments when the source provides them. The canonical human-readable user text remains in messages[].content.

tool_uses[].output.raw is optional and preserves extra structured tool-result fields when the source provides them. The canonical human-readable result text remains in tool_uses[].output.text.

Each HF repo also includes a metadata.json with aggregate stats.

Finding datasets on Hugging Face

All repos are tagged dataclaw.

  • Browse all:huggingface.co/datasets?other=dataclaw
  • Load one:
    fromdatasetsimportload_datasetds=load_dataset("alice/my-personal-codex-data", split="train")
  • Combine several:
    fromdatasetsimportload_dataset, concatenate_datasetsrepos= ["alice/my-personal-codex-data", "bob/my-personal-codex-data"]
    ds=concatenate_datasets([load_dataset(r, split="train") forrinrepos])

The auto-generated HF README includes:

  • Model distribution (which models, how many sessions each)
  • Total token counts
  • Project count
  • Last updated timestamp

Contributing

Missing data: If you found any data not exported, please report an issue. You can ask your coding agent to analyze the data, export it in this repo, and open a PR.

Better scheme: If you need to clean the data and want to propose a better scheme, feel free to open an issue.

New provider: If you use a new coding agent, you can ask it to read this repo and export its data as a new provider. Take Claude Code and Codex parsers as examples because they are the most well maintained. When you finish, ask the following questions:

  • Did you follow the scheme above? Currently it's free to add custom fields in messages[].content_parts and tool_uses[].output.raw.
  • Did you export all data, especially:
    • tool call inputs and outputs
    • long inputs and outputs that may be saved somewhere else
    • binary content (may be encoded as base64) such as images. We do not apply anonymizer on binary content
    • subagents
  • Does the coding agent automatically delete old sessions? How to prevent this?

Code Quality

Code Quality Scorecard

License

MIT

About

Agent harness to publish your history from Claude Code et al. as Huggingface datasets.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - QuantumlyTangled/dataclaw: Agent harness to publish your history from Claude Code et al. as Huggingface datasets. · GitHub
Skip to content
This repository was archived by the owner on Apr 21, 2026. It is now read-only.

Repository files navigation

DataClaw

This is a performance art project. Anthropic built their models on the world's freely shared information, then introduced increasingly dystopian data policies to stop anyone else from doing the same with their data - pulling up the ladder behind them. DataClaw lets you throw the ladder back down. The dataset it produces is yours to share.

Turn your Claude Code, Codex, and other coding-agent conversation history into structured data and publish it to Hugging Face with a single command. DataClaw parses session logs, redacts secrets and PII, and uploads the result as a ready-to-use dataset.

DataClaw

Every export is tagged dataclaw on Hugging Face. Together, they may someday form a growing distributed dataset of real-world human-AI coding collaboration.

Give this to your agent

Paste this into Claude Code, Codex, or any coding agent:

Help me export my Claude Code, Codex, and other coding-agent conversation history to Hugging Face using DataClaw.
Install it, then walk me through the process.
STEP 1 - INSTALL
pip install -U dataclaw
If that fails: git clone https://github.com/banodoco/dataclaw.git /tmp/dataclaw && pip install -U /tmp/dataclaw
If that also fails, ask the user where the source is.
STEP 2 - INSTALL SKILL
Skill support is currently only available for Claude Code.
dataclaw update-skill claude
For other agentic tools, skip this step and do not improvise a custom flow - follow the instructions in DataClaw's output on each step, especially next_steps and next_command.
STEP 3 - PREP
dataclaw prep
Every dataclaw command outputs next_steps in its JSON - follow them through the entire flow.
STEP 3A - CHOOSE SOURCE SCOPE (REQUIRED BEFORE EXPORT)
Ask the user explicitly which source scope to export: a supported source key such as claude or codex, or all.
dataclaw config --source all
Do not export until source scope is explicitly confirmed.
STEP 3B - CHOOSE PROJECT SCOPE (REQUIRED BEFORE EXPORT)
dataclaw list --source all
Send the FULL project/folder list to the user in a message (name, source, sessions, size, excluded).
Ask which projects to exclude.
dataclaw config --exclude "project1,project2" OR dataclaw config --confirm-projects
Do not export until folder selection is explicitly confirmed.
STEP 3C - SET REDACTED STRINGS
Ask the user what additional strings should always be redacted, such as company names, client names, domains, internal URLs, or secrets that regex might miss.
dataclaw config --redact "string1,string2"
dataclaw config --redact-usernames "user1,user2"
Only add these after explicit user confirmation.
STEP 4 - EXPORT LOCALLY
dataclaw export --no-push --output dataclaw_export.jsonl
STEP 5 - REVIEW AND CONFIRM (REQUIRED BEFORE PUSH)
Review PII findings and apply excludes/redactions as needed.
Full name is requested for an exact-name privacy scan against the export.
If the user declines sharing full name, use --skip-full-name-scan and attest the skip reason.
dataclaw confirm --full-name "THEIR FULL NAME" --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."
STEP 6 - PUBLISH (ONLY AFTER EXPLICIT USER APPROVAL)
dataclaw export --publish-attestation "User explicitly approved publishing to Hugging Face."
Never publish unless the user explicitly says yes.
IF ANY COMMAND FAILS DUE TO A SKIPPED STEP:
Restate the 6-step checklist above and resume from the blocked step (do not skip ahead).
IMPORTANT: Never run bare `hf auth login` when automating this with an agent - always use `--token`.
IMPORTANT: Always export with --no-push first and review for PII before publishing.

Manual usage (without an agent)

# STEP 1 - INSTALL
pip install -U dataclaw
hf auth login --token YOUR_TOKEN
# STEP 3 - PREP
dataclaw prep
dataclaw config --repo username/my-personal-codex-data
# STEP 3A - CHOOSE SOURCE SCOPE
dataclaw config --source all # REQUIRED: choose a supported source key or all# STEP 3B - CHOOSE PROJECT SCOPE
dataclaw list --source all # Present full list and confirm folder scope before export
dataclaw config --exclude "personal-stuff,scratch"# or: dataclaw config --confirm-projects# STEP 3C - SET REDACTED STRINGS
dataclaw config --redact-usernames "my_github_handle,my_discord_name"
dataclaw config --redact "my-domain.com,my-secret-project"# STEP 4 - EXPORT LOCALLY
dataclaw export --no-push
# STEP 5 - REVIEW AND CONFIRM
dataclaw confirm \
--full-name "YOUR FULL NAME" \
--attest-full-name "Asked for full name and scanned export for YOUR FULL NAME." \
--attest-sensitive "Asked about company/client/internal names and private URLs; none found or redactions updated." \
--attest-manual-scan "Manually scanned 20 sessions across beginning/middle/end and reviewed findings."# Or: if user declines sharing full name
dataclaw confirm \
--skip-full-name-scan \
--attest-full-name "User declined to share full name; skipped exact-name scan." \
--attest-sensitive "Asked about company/client/internal names and private URLs; none found or redactions updated." \
--attest-manual-scan "Manually scanned 20 sessions across beginning/middle/end and reviewed findings."# STEP 6 - PUBLISH
dataclaw export --publish-attestation "User explicitly approved publishing to Hugging Face."

Step 2 (INSTALL SKILL) is omitted in manual usage.

Commands

CommandDescription
dataclaw statusShow current stage and next steps
dataclaw prepDiscover projects, check HF auth, output JSON
dataclaw prep --source <source|all>Prep with an explicit source scope
dataclaw listList all projects with exclusion status
dataclaw list --source <source|all>List projects for a specific source scope
dataclaw configShow current config
dataclaw config --repo user/my-personal-codex-dataSet HF repo
dataclaw config --source <source|all>REQUIRED source scope selection (examples include claude, codex, and others)
dataclaw config --exclude "a,b"Add excluded projects (appends)
dataclaw config --redact "str1,str2"Add strings to always redact (appends)
dataclaw config --redact-usernames "u1,u2"Add usernames to anonymize (appends)
dataclaw config --confirm-projectsMark project selection as confirmed
dataclaw export --no-pushExport locally only (always do this first)
dataclaw export --source <source|all> --no-pushExport a chosen source scope locally
dataclaw confirm --full-name "NAME" --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."Scan for PII, run exact-name privacy check, verify review attestations, unlock pushing
dataclaw confirm --skip-full-name-scan --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."Skip exact-name scan when user declines sharing full name (requires skip attestation)
dataclaw export --publish-attestation "..."Export and push (requires dataclaw confirm first)
dataclaw export --all-projectsInclude everything (ignore exclusions)
dataclaw export --no-thinkingExclude extended thinking blocks
dataclaw update-skill claudeInstall/update the dataclaw skill for Claude Code

What gets exported

  • User messages - Including voice transcripts and images
  • Assistant responses
  • Assistant thinking - Opt out with --no-thinking
  • Tool calls - Tool name, inputs, outputs
  • Token usage - Input/output tokens per session
  • Metadata - Model name, git branch, timestamps

Privacy & Redaction

DataClaw applies multiple layers of protection:

  1. Username redaction - Your OS username + any configured usernames replaced with stable hashes
  2. Secret redaction - Regex patterns catch JWT tokens, API keys (Anthropic, OpenAI, HF, GitHub, AWS, etc.), database passwords, private keys, Discord webhooks, and more
  3. Entropy analysis - Long high-entropy strings in quotes are flagged as potential secrets
  4. Email redaction - Regex pattern catches email addresses
  5. Custom redaction - You can configure additional strings to redact
  6. Tool call redaction - Tool inputs and outputs are redacted with the same standard as regular messages

This is NOT foolproof. Always review your exported data before publishing. Automated redaction cannot catch everything - especially service-specific identifiers, third-party PII, or secrets in unusual formats.

We recommend to convert the exported jsonl into human-readable yaml using the script in peteromallet#1 , then use tools such as trufflehog and gitleaks to scan it.

To help improve redaction, report issues: https://github.com/banodoco/dataclaw/issues

Data schema

Each line in conversations.jsonl is one session:

{
"session_id": "abc-123",
"project": "my-project",
"model": "claude-opus-4-6",
"git_branch": "main",
"start_time": "2025-06-15T10:00:00+00:00",
"end_time": "2025-06-15T10:30:00+00:00",
"messages": [
{
"role": "user",
"content": "Fix the login bug",
"content_parts": [
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "..."}}
],
"timestamp": "..."
},
{
"role": "assistant",
"content": "I'll investigate the login flow.",
"thinking": "The user wants me to look at...",
"tool_uses": [
{
"tool": "bash",
"input": {"command": "grep -r 'login' src/"},
"output": {
"text": "src/auth.py:42: def login(user, password):",
"raw": {"stderr": "", "interrupted": false}
},
"status": "success"
}
],
"timestamp": "..."
}
],
"stats": {
"user_messages": 5, "assistant_messages": 8,
"tool_uses": 20, "input_tokens": 50000, "output_tokens": 3000
}
}

messages[].content_parts is optional and preserves structured user content such as attachments when the source provides them. The canonical human-readable user text remains in messages[].content.

tool_uses[].output.raw is optional and preserves extra structured tool-result fields when the source provides them. The canonical human-readable result text remains in tool_uses[].output.text.

Each HF repo also includes a metadata.json with aggregate stats.

Finding datasets on Hugging Face

All repos are tagged dataclaw.

  • Browse all:huggingface.co/datasets?other=dataclaw
  • Load one:
    fromdatasetsimportload_datasetds=load_dataset("alice/my-personal-codex-data", split="train")
  • Combine several:
    fromdatasetsimportload_dataset, concatenate_datasetsrepos= ["alice/my-personal-codex-data", "bob/my-personal-codex-data"]
    ds=concatenate_datasets([load_dataset(r, split="train") forrinrepos])

The auto-generated HF README includes:

  • Model distribution (which models, how many sessions each)
  • Total token counts
  • Project count
  • Last updated timestamp

Contributing

Missing data: If you found any data not exported, please report an issue. You can ask your coding agent to analyze the data, export it in this repo, and open a PR.

Better scheme: If you need to clean the data and want to propose a better scheme, feel free to open an issue.

New provider: If you use a new coding agent, you can ask it to read this repo and export its data as a new provider. Take Claude Code and Codex parsers as examples because they are the most well maintained. When you finish, ask the following questions:

  • Did you follow the scheme above? Currently it's free to add custom fields in messages[].content_parts and tool_uses[].output.raw.
  • Did you export all data, especially:
    • tool call inputs and outputs
    • long inputs and outputs that may be saved somewhere else
    • binary content (may be encoded as base64) such as images. We do not apply anonymizer on binary content
    • subagents
  • Does the coding agent automatically delete old sessions? How to prevent this?

Code Quality

Code Quality Scorecard

License

MIT

About

Agent harness to publish your history from Claude Code et al. as Huggingface datasets.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - QuantumlyTangled/dataclaw: Agent harness to publish your history from Claude Code et al. as Huggingface datasets. · GitHub
Skip to content
This repository was archived by the owner on Apr 21, 2026. It is now read-only.

Repository files navigation

DataClaw

This is a performance art project. Anthropic built their models on the world's freely shared information, then introduced increasingly dystopian data policies to stop anyone else from doing the same with their data - pulling up the ladder behind them. DataClaw lets you throw the ladder back down. The dataset it produces is yours to share.

Turn your Claude Code, Codex, and other coding-agent conversation history into structured data and publish it to Hugging Face with a single command. DataClaw parses session logs, redacts secrets and PII, and uploads the result as a ready-to-use dataset.

DataClaw

Every export is tagged dataclaw on Hugging Face. Together, they may someday form a growing distributed dataset of real-world human-AI coding collaboration.

Give this to your agent

Paste this into Claude Code, Codex, or any coding agent:

Help me export my Claude Code, Codex, and other coding-agent conversation history to Hugging Face using DataClaw.
Install it, then walk me through the process.
STEP 1 - INSTALL
pip install -U dataclaw
If that fails: git clone https://github.com/banodoco/dataclaw.git /tmp/dataclaw && pip install -U /tmp/dataclaw
If that also fails, ask the user where the source is.
STEP 2 - INSTALL SKILL
Skill support is currently only available for Claude Code.
dataclaw update-skill claude
For other agentic tools, skip this step and do not improvise a custom flow - follow the instructions in DataClaw's output on each step, especially next_steps and next_command.
STEP 3 - PREP
dataclaw prep
Every dataclaw command outputs next_steps in its JSON - follow them through the entire flow.
STEP 3A - CHOOSE SOURCE SCOPE (REQUIRED BEFORE EXPORT)
Ask the user explicitly which source scope to export: a supported source key such as claude or codex, or all.
dataclaw config --source all
Do not export until source scope is explicitly confirmed.
STEP 3B - CHOOSE PROJECT SCOPE (REQUIRED BEFORE EXPORT)
dataclaw list --source all
Send the FULL project/folder list to the user in a message (name, source, sessions, size, excluded).
Ask which projects to exclude.
dataclaw config --exclude "project1,project2" OR dataclaw config --confirm-projects
Do not export until folder selection is explicitly confirmed.
STEP 3C - SET REDACTED STRINGS
Ask the user what additional strings should always be redacted, such as company names, client names, domains, internal URLs, or secrets that regex might miss.
dataclaw config --redact "string1,string2"
dataclaw config --redact-usernames "user1,user2"
Only add these after explicit user confirmation.
STEP 4 - EXPORT LOCALLY
dataclaw export --no-push --output dataclaw_export.jsonl
STEP 5 - REVIEW AND CONFIRM (REQUIRED BEFORE PUSH)
Review PII findings and apply excludes/redactions as needed.
Full name is requested for an exact-name privacy scan against the export.
If the user declines sharing full name, use --skip-full-name-scan and attest the skip reason.
dataclaw confirm --full-name "THEIR FULL NAME" --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."
STEP 6 - PUBLISH (ONLY AFTER EXPLICIT USER APPROVAL)
dataclaw export --publish-attestation "User explicitly approved publishing to Hugging Face."
Never publish unless the user explicitly says yes.
IF ANY COMMAND FAILS DUE TO A SKIPPED STEP:
Restate the 6-step checklist above and resume from the blocked step (do not skip ahead).
IMPORTANT: Never run bare `hf auth login` when automating this with an agent - always use `--token`.
IMPORTANT: Always export with --no-push first and review for PII before publishing.

Manual usage (without an agent)

# STEP 1 - INSTALL
pip install -U dataclaw
hf auth login --token YOUR_TOKEN
# STEP 3 - PREP
dataclaw prep
dataclaw config --repo username/my-personal-codex-data
# STEP 3A - CHOOSE SOURCE SCOPE
dataclaw config --source all # REQUIRED: choose a supported source key or all# STEP 3B - CHOOSE PROJECT SCOPE
dataclaw list --source all # Present full list and confirm folder scope before export
dataclaw config --exclude "personal-stuff,scratch"# or: dataclaw config --confirm-projects# STEP 3C - SET REDACTED STRINGS
dataclaw config --redact-usernames "my_github_handle,my_discord_name"
dataclaw config --redact "my-domain.com,my-secret-project"# STEP 4 - EXPORT LOCALLY
dataclaw export --no-push
# STEP 5 - REVIEW AND CONFIRM
dataclaw confirm \
--full-name "YOUR FULL NAME" \
--attest-full-name "Asked for full name and scanned export for YOUR FULL NAME." \
--attest-sensitive "Asked about company/client/internal names and private URLs; none found or redactions updated." \
--attest-manual-scan "Manually scanned 20 sessions across beginning/middle/end and reviewed findings."# Or: if user declines sharing full name
dataclaw confirm \
--skip-full-name-scan \
--attest-full-name "User declined to share full name; skipped exact-name scan." \
--attest-sensitive "Asked about company/client/internal names and private URLs; none found or redactions updated." \
--attest-manual-scan "Manually scanned 20 sessions across beginning/middle/end and reviewed findings."# STEP 6 - PUBLISH
dataclaw export --publish-attestation "User explicitly approved publishing to Hugging Face."

Step 2 (INSTALL SKILL) is omitted in manual usage.

Commands

CommandDescription
dataclaw statusShow current stage and next steps
dataclaw prepDiscover projects, check HF auth, output JSON
dataclaw prep --source <source|all>Prep with an explicit source scope
dataclaw listList all projects with exclusion status
dataclaw list --source <source|all>List projects for a specific source scope
dataclaw configShow current config
dataclaw config --repo user/my-personal-codex-dataSet HF repo
dataclaw config --source <source|all>REQUIRED source scope selection (examples include claude, codex, and others)
dataclaw config --exclude "a,b"Add excluded projects (appends)
dataclaw config --redact "str1,str2"Add strings to always redact (appends)
dataclaw config --redact-usernames "u1,u2"Add usernames to anonymize (appends)
dataclaw config --confirm-projectsMark project selection as confirmed
dataclaw export --no-pushExport locally only (always do this first)
dataclaw export --source <source|all> --no-pushExport a chosen source scope locally
dataclaw confirm --full-name "NAME" --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."Scan for PII, run exact-name privacy check, verify review attestations, unlock pushing
dataclaw confirm --skip-full-name-scan --attest-full-name "..." --attest-sensitive "..." --attest-manual-scan "..."Skip exact-name scan when user declines sharing full name (requires skip attestation)
dataclaw export --publish-attestation "..."Export and push (requires dataclaw confirm first)
dataclaw export --all-projectsInclude everything (ignore exclusions)
dataclaw export --no-thinkingExclude extended thinking blocks
dataclaw update-skill claudeInstall/update the dataclaw skill for Claude Code

What gets exported

  • User messages - Including voice transcripts and images
  • Assistant responses
  • Assistant thinking - Opt out with --no-thinking
  • Tool calls - Tool name, inputs, outputs
  • Token usage - Input/output tokens per session
  • Metadata - Model name, git branch, timestamps

Privacy & Redaction

DataClaw applies multiple layers of protection:

  1. Username redaction - Your OS username + any configured usernames replaced with stable hashes
  2. Secret redaction - Regex patterns catch JWT tokens, API keys (Anthropic, OpenAI, HF, GitHub, AWS, etc.), database passwords, private keys, Discord webhooks, and more
  3. Entropy analysis - Long high-entropy strings in quotes are flagged as potential secrets
  4. Email redaction - Regex pattern catches email addresses
  5. Custom redaction - You can configure additional strings to redact
  6. Tool call redaction - Tool inputs and outputs are redacted with the same standard as regular messages

This is NOT foolproof. Always review your exported data before publishing. Automated redaction cannot catch everything - especially service-specific identifiers, third-party PII, or secrets in unusual formats.

We recommend to convert the exported jsonl into human-readable yaml using the script in peteromallet#1 , then use tools such as trufflehog and gitleaks to scan it.

To help improve redaction, report issues: https://github.com/banodoco/dataclaw/issues

Data schema

Each line in conversations.jsonl is one session:

{
"session_id": "abc-123",
"project": "my-project",
"model": "claude-opus-4-6",
"git_branch": "main",
"start_time": "2025-06-15T10:00:00+00:00",
"end_time": "2025-06-15T10:30:00+00:00",
"messages": [
{
"role": "user",
"content": "Fix the login bug",
"content_parts": [
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "..."}}
],
"timestamp": "..."
},
{
"role": "assistant",
"content": "I'll investigate the login flow.",
"thinking": "The user wants me to look at...",
"tool_uses": [
{
"tool": "bash",
"input": {"command": "grep -r 'login' src/"},
"output": {
"text": "src/auth.py:42: def login(user, password):",
"raw": {"stderr": "", "interrupted": false}
},
"status": "success"
}
],
"timestamp": "..."
}
],
"stats": {
"user_messages": 5, "assistant_messages": 8,
"tool_uses": 20, "input_tokens": 50000, "output_tokens": 3000
}
}

messages[].content_parts is optional and preserves structured user content such as attachments when the source provides them. The canonical human-readable user text remains in messages[].content.

tool_uses[].output.raw is optional and preserves extra structured tool-result fields when the source provides them. The canonical human-readable result text remains in tool_uses[].output.text.

Each HF repo also includes a metadata.json with aggregate stats.

Finding datasets on Hugging Face

All repos are tagged dataclaw.

  • Browse all:huggingface.co/datasets?other=dataclaw
  • Load one:
    fromdatasetsimportload_datasetds=load_dataset("alice/my-personal-codex-data", split="train")
  • Combine several:
    fromdatasetsimportload_dataset, concatenate_datasetsrepos= ["alice/my-personal-codex-data", "bob/my-personal-codex-data"]
    ds=concatenate_datasets([load_dataset(r, split="train") forrinrepos])

The auto-generated HF README includes:

  • Model distribution (which models, how many sessions each)
  • Total token counts
  • Project count
  • Last updated timestamp

Contributing

Missing data: If you found any data not exported, please report an issue. You can ask your coding agent to analyze the data, export it in this repo, and open a PR.

Better scheme: If you need to clean the data and want to propose a better scheme, feel free to open an issue.

New provider: If you use a new coding agent, you can ask it to read this repo and export its data as a new provider. Take Claude Code and Codex parsers as examples because they are the most well maintained. When you finish, ask the following questions:

  • Did you follow the scheme above? Currently it's free to add custom fields in messages[].content_parts and tool_uses[].output.raw.
  • Did you export all data, especially:
    • tool call inputs and outputs
    • long inputs and outputs that may be saved somewhere else
    • binary content (may be encoded as base64) such as images. We do not apply anonymizer on binary content
    • subagents
  • Does the coding agent automatically delete old sessions? How to prevent this?

Code Quality

Code Quality Scorecard

License

MIT

About

Agent harness to publish your history from Claude Code et al. as Huggingface datasets.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages