Files
moreminimore-service-system/skills/orbitos/orbites-vault-git/references/http-413-resolution.md
Kunthawat Greethong ddac3f187c Merge OrbitOS into project — one install, everything ready
- Added 15 OrbitOS skills (bundled in skills/orbitos/)
- Added vault structure templates (views, templates, prompts)
- Added install.sh (macOS + Linux)
- Removed references/orbitos-skills.md (no longer needed)
- Updated README: 30 skills total, unified install flow

Total: 9 mm* + 6 dependencies + 15 orbitos = 30 skills
2026-07-02 10:13:46 +07:00

2.6 KiB

HTTP 413 Resolution — Vault Git Push Failure

Observed Problem

error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly

Root Cause

The vault .git/objects pack file exceeded the Gitea server's payload size limit because it contained large binary assets alongside source code:

  • Binary assets: .png, .jpg, .jpeg, .pdf, .ico (product images, screenshots, logos, price lists)
  • Data files: .csv, .csv.gz (tick data, sample data)
  • Agent state: .omc/ directories with session checkpoints

Initial pack size: 175MB After splitting: 193MB (all assets successfully pushed)

Resolution Path (used in practice — June 2026)

Key Insight: The user wants vault to track EVERYTHING

Do NOT add broad .gitignore patterns like *.png, *.pdf, *.csv. The vault is a complete snapshot — clone once and you have all files.

Step 1 — Tighten .gitignore to build artifacts only

# Python build
__pycache__/
.venv/
venv/
*.egg-info/
dist/
build/

# Node build
node_modules/

# OS / IDE
.DS_Store
.idea/
.vscode/

# AI agent state
.omc/
.hermes/

REMOVE any broad patterns: *.csv, *.pdf, *.png, *.jpg, *.mq5, 20_Projects/*/.

Step 2 — Remove nested .git from project copies

Nested .git directories cause gitlinks (mode 160000) which break clone. Remove them before first commit:

for d in ~/vault/20_Projects/*/; do
  [ -d "$d.git" ] && rm -rf "${d}.git"
done

Step 3 — Split push per-file

When the vault has 200+ files of all types, push one file at a time:

for f in $(git diff --cached --name-only); do
  git add "$f" && git commit -m "add: $(basename "$f")" && git push
done

This produces ~600 small commits — acceptable for initial setup. Can squash later.

Step 4 — Verify despite false errors

git push may show HTTP 413 even when the push actually succeeded — the server accepts the pack but the sideband connection closes before the client receives the success response.

git fetch origin
git log origin/main --oneline | head -3

If the commit appears on origin, the push succeeded despite the error message.

Prevention

  • Check size before push: du -sh .git/
  • Increase post buffer: git config http.postBuffer 524288000
  • Push incrementally for initial full-vault upload
  • Never nuke .git: rm -rf .git && git init destroys history — only use when local state is irrecoverable
  • Expected vault size: 150-200MB (normal for complete workspace with assets)