AI-translated from English; not yet reviewed by a fluent editor.
# Hermes Agent का निजी GitHub पर बैकअप लें और पुनर्प्राप्ति जाँचें
> Hermes डेटा का पूरा बैकअप बनाएँ, निजी GitHub भेजने से पहले एन्क्रिप्ट करें, एजेंट-रहित रन निर्धारित करें और अलग मशीन पर प्राप्ति व आयात जाँचें। दस्तावेज़ आधारित मार्गदर्शिका।
By BIG CHANGE Editorial
Published: 2026-10-19T18:30:35.265Z
Updated: 2026-10-19T18:30:35.265Z
Canonical: https://bigchange.ai/blog/hermes-encrypted-github-backup-recovery-guide

AI-generated conceptual illustration by BIG CHANGE.
यह मार्गदर्शिका स्वयं होस्ट किए गए Hermes Agent के उस संचालक के लिए है जो Linux खाते और निजी GitHub रिपॉज़िटरी का प्रबंधन कर सकता है। लक्ष्य स्पष्ट है: Hermes के पूरे **उपयोगकर्ता डेटा** का संग्रह, जो होस्ट छोड़ने से पहले एन्क्रिप्ट हो, सही निजी रिमोट पर पुष्ट हो और अलग अस्थायी परीक्षण मशीन पर प्राप्त व आयात किया जाए। यह दस्तावेज़ी प्रक्रिया [Hermes CLI के निश्चित commit `86fa9e6`](https://github.com/NousResearch/hermes-agent/blob/86fa9e6ca1de7ee71132d2be0103f3e37d1fa872/website/docs/reference/cli-commands.md) के लिए है, जिसे 19 अक्टूबर 2026 को जाँचा गया। BIG CHANGE ने निष्क्रिय स्थानीय परीक्षण सामग्री से shell सिंटैक्स और नियंत्रण प्रवाह जाँचा; वास्तविक Hermes बैकअप, age एन्क्रिप्शन, GitHub push, निर्धारित रन या पुनर्स्थापन नहीं किया। अपने इंस्टॉलेशन में सभी जाँचें पूरी करने के बाद ही बैकअप को प्रमाणित मानें।
## बड़ा बदलाव
- **क्या बदला:** Hermes की पूर्ण बैकअप कमांड कार्य डेटा को ZIP में जमा कर सकती है, जबकि एजेंट-रहित cron मोड जाँची हुई स्क्रिप्ट चला सकता है। दोनों मिलकर AI मॉडल से बैकअप करवाए बिना निर्धारित एन्क्रिप्टेड प्रति बनाने देते हैं।
- **यह क्यों महत्त्वपूर्ण है:** संचालक तीन बातें अलग जाँचता है: Hermes ने संग्रह पूरा किया, एन्क्रिप्टेड सामग्री सही निजी रिपॉज़िटरी पहुँची और नया इंस्टॉलेशन उसे आयात कर सकता है। हर जाँच अलग विफलता पकड़ती है। संग्रह में एप्लिकेशन और कुछ मशीन-स्थानीय डेटा फिर भी नहीं आते।
- **किन बातों पर ध्यान दें:** व्यावहारिक निर्णय यह है कि संग्रह और बढ़ता Git इतिहास इस सीमित रास्ते के लिए पर्याप्त छोटे हैं या नहीं। पुनर्प्राप्ति अभ्यास विफल हो या कोई आकार सीमा लगे तो समय-सारणी पर निर्भर होने से पहले दूसरा भंडारण उपाय चाहिए।
## 1. होस्ट, कुंजी और रिपॉज़िटरी तैयार करें
Linux के साथ Bash, GNU `stat -c` और `du -sb`, स्थापित Hermes CLI, Git, GitHub CLI (`gh`), age, `unzip`, `sha256sum`, SSH तथा cron के लिए सक्रिय Hermes गेटवे इस्तेमाल करें। स्थापित `hermes backup`, `hermes import` और `hermes cron create --help` को [निश्चित commit वाले CLI संदर्भ](https://github.com/NousResearch/hermes-agent/blob/86fa9e6ca1de7ee71132d2be0103f3e37d1fa872/website/docs/reference/cli-commands.md), [सामान्य प्रश्नों](https://github.com/NousResearch/hermes-agent/blob/86fa9e6ca1de7ee71132d2be0103f3e37d1fa872/website/docs/reference/faq.md) तथा [cron मैनुअल](https://github.com/NousResearch/hermes-agent/blob/86fa9e6ca1de7ee71132d2be0103f3e37d1fa872/website/docs/user-guide/features/cron.md) से मिलाएँ। गेटवे का OS उपयोगकर्ता और `HERMES_HOME` पहचानें। सारा होस्ट सेटअप और पहला मैनुअल बैकअप उसी उपयोगकर्ता से करें। उदाहरण अलग, साफ Git क्लोन और `main` ब्रांच मानता है।
पूर्ण Hermes बैकअप में डेटा रूट के अंतर्गत कॉन्फ़िगरेशन, क्रेडेंशियल, स्मृतियाँ, स्किल, सत्र और प्रोफ़ाइल आते हैं। Hermes कोड, डाउनलोड की गई निर्भरताएँ व रनटाइम, पुराने बैकअप, चेकपॉइंट, ब्राउज़र क्रेडेंशियल प्रोफ़ाइल, SQLite सहायक फ़ाइलें और कुछ स्थानीय फ़ाइलें बाहर रहती हैं। होस्ट के अन्य स्थान की असंबंधित फ़ाइलें इसमें नहीं आतीं। **इस पूर्ण डेटा परिणाम के लिए `--quick`** का इस्तेमाल न करें। सीमा से बाहर की महत्त्वपूर्ण सामग्री अलग जाँचें और सुरक्षित करें। रिपॉज़िटरी निजी होने पर भी ZIP में गोपनीय सामग्री रहती है।
age identity, यानी संग्रह डिक्रिप्ट करने की निजी कुंजी, सुरक्षित स्थान में बनाएँ जो `HERMES_HOME`, अस्थायी तैयारी डायरेक्टरी और Git क्लोन से बाहर हो। उसकी पुनर्प्राप्ति प्रति स्वतंत्र भंडारण में रखें। छपा प्राप्तकर्ता `age1…` सार्वजनिक है और कॉन्फ़िगरेशन में जाता है; निजी identity नहीं। [age उपयोग संदर्भ](https://github.com/FiloSottile/age/blob/main/README.md) का पालन करें।
```bash
umask 077
install -d -m 700 /PRIVATE-KEY-STORE
age-keygen -o /PRIVATE-KEY-STORE/hermes-backup-identity.txt
age-keygen -y /PRIVATE-KEY-STORE/hermes-backup-identity.txt
```
केवल इस बैकअप के लिए **निजी** रिपॉज़िटरी बनाएँ, पहुँच वालों को जाँचें और Hermes cron चलाने वाले उसी OS उपयोगकर्ता के लिए गैर-इंटरैक्टिव `gh` पठन और Git SSH लेखन तय करें। टोकन व निजी SSH कुंजियाँ Hermes डेटा, तैयारी स्थान और Git से बाहर रखें। दूसरे खाते का इंटरैक्टिव लॉगिन निर्धारित पहुँच साबित नहीं करता। उदाहरण चलाने से पहले बड़े अक्षरों वाले प्लेसहोल्डर बदलें। यदि रिपॉज़िटरी बनाते समय README या `main` ब्रांच बनी हो तो देखें और विरोधी आरंभीकरण कमांड छोड़ें।
```bash
gh repo create ACCOUNT/PRIVATE-REPOSITORY --private --clone
gh repo view ACCOUNT/PRIVATE-REPOSITORY --json isPrivate --jq .isPrivate
cd PRIVATE-REPOSITORY
git remote set-url origin git@github.com:ACCOUNT/PRIVATE-REPOSITORY.git
git remote get-url --all origin
git remote get-url --push --all origin
git branch -M main
printf '%s\n' 'Encrypted Hermes backup storage; ciphertext and checksum only.' > README.md
git add README.md
git commit -m 'Initialize private backup repository'
git push -u origin HEAD:main
git ls-remote --heads origin main
```
`gh repo create --clone` स्थानीय पसंद से HTTPS चुन सकता है; ऊपर दिया स्पष्ट SSH रिमोट इस प्रक्रिया का गंतव्य है। आगे तभी बढ़ें जब `isPrivate` लौटाए `true`, सहयोगी अपेक्षित हों, प्रभावी पठन और push URL दोनों एक जाँचे हुए SSH URL के बिल्कुल बराबर हों तथा निर्धारित उपयोगकर्ता की रिमोट पहुँच सफल हो। [Git रिमोट नियम](https://git-scm.com/docs/git-remote) URL पुनर्लेखन, अतिरिक्त गंतव्य और अलग `pushurl` की अनुमति देते हैं; नीचे की स्क्रिप्ट हर रन में मूल और प्रभावी मान जाँचती है।
अगले दो कोड ब्लॉक सहेजने से पहले क्लोन से बाहर आएँ। Hermes डेटा रूट, Git क्लोन, तैयारी डायरेक्टरी और कुंजी भंडार से बाहर निजी सेटअप डायरेक्टरी बनाएँ। `hermes-github-backup.sh` और `hermes-github-backup.conf` वहाँ सहेजें; इंस्टॉल कमांड इन्हें स्वामी प्रोफ़ाइल में कॉपी करेंगी। समर्पित Git क्लोन साफ रहना चाहिए।
```bash
install -d -m 700 /ABSOLUTE/PRIVATE-SETUP
cd /ABSOLUTE/PRIVATE-SETUP
```
## 2. जाँची हुई बैकअप स्क्रिप्ट स्थापित करें
नीचे का पूरा Bash ब्लॉक `hermes-github-backup.sh` नाम से उस निजी डायरेक्टरी में सहेजें। दूसरा ब्लॉक `hermes-github-backup.conf` नाम से पास रखें और सभी प्लेसहोल्डर को पूर्ण पथ या सार्वजनिक प्राप्तकर्ता से बदलें। यह स्थानीय समीक्षा वाली shell कॉन्फ़िगरेशन है: लोड करने से पहले जाँचें और केवल स्वामी को अनुमति दें। पासवर्ड, टोकन या निजी age identity इसमें न रखें। यह पूरा प्रस्तावित नमूना है; सिंटैक्स और निष्क्रिय प्रवाह जाँचे गए, पर अपने इंस्टॉलेशन में अनुकूलित कर परीक्षण करें। बनी `latest.zip.age` फ़ाइल एन्क्रिप्टेड संग्रह है।
```bash
#!/usr/bin/env bash
# Documentation-based Linux sample for an operator to review and adapt.
# Place with hermes-github-backup.conf under the owning HERMES_HOME/scripts/.
# Requires GNU stat -c and du -sb. Git Bash was used only for inert fixtures.
set -Eeuo pipefail
umask 077
script_dir=$(CDPATH= cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)
owning_home=$(CDPATH= cd -- "$script_dir/.." && pwd -P)
if [[ -n ${HERMES_HOME:-} && $(CDPATH= cd -- "$HERMES_HOME" && pwd -P) != "$owning_home" ]]; then
printf 'Backup stopped: cron profile and script directory differ.\n' >&2
exit 1
fi
export HERMES_HOME="$owning_home"
config="$script_dir/hermes-github-backup.conf"
[[ -f "$config" ]] || { printf 'Backup stopped: reviewed configuration missing.\n' >&2; exit 1; }
# This file is local, owner-reviewed shell configuration. It must contain no secret.
# shellcheck source=/dev/null
source "$config"
: "${HERMES_BIN:?set an absolute Hermes executable path}"
: "${REPO_DIR:?set an absolute private clone path}"
: "${STAGING_PARENT:?set an absolute private staging path}"
: "${AGE_RECIPIENT:?set an age public recipient}"
: "${EXPECTED_REMOTE:?set the exact private GitHub SSH remote}"
: "${BRANCH:=main}"
fail() { printf 'Backup stopped: %s.\n' "$1" >&2; exit 1; }
for path in "$HERMES_BIN" "$REPO_DIR" "$STAGING_PARENT"; do
[[ $path == /* ]] || fail 'a configured path is not absolute'
done
[[ -x "$HERMES_BIN" ]] || fail 'Hermes executable unavailable'
[[ $AGE_RECIPIENT == age1* ]] || fail 'age public recipient invalid'
[[ $EXPECTED_REMOTE == git@github.com:*/*.git ]] || fail 'remote is not the reviewed GitHub SSH URL'
[[ $BRANCH =~ ^[a-zA-Z0-9._/-]+$ ]] || fail 'branch name invalid'
[[ -d "$STAGING_PARENT" ]] || fail 'staging directory unavailable'
stage_parent=$(CDPATH= cd -- "$STAGING_PARENT" && pwd -P)
[[ $stage_parent != "$owning_home" && $stage_parent != "$owning_home"/* ]] || fail 'staging is inside Hermes data'
# Atomic, nonblocking whole-flow lock: keep it through push and remote readback.
# A stale directory after a crash requires operator inspection; never steal it.
lockdir="$stage_parent/.hermes-github-backup-flow.lock"
mkdir -- "$lockdir" 2>/dev/null || fail 'another backup flow holds the lock or a stale lock needs review'
work=''
cleanup() {
if [[ -n $work ]]; then
rm -f -- "$work/hermes.zip" "$work/latest.zip.age" "$work/latest.sha256" "$work/backup.log"
rmdir -- "$work" 2>/dev/null || true
fi
rmdir -- "$lockdir" 2>/dev/null || true
}
trap cleanup EXIT
[[ -d "$REPO_DIR/.git" ]] || fail 'Git repository unavailable'
repo=$(CDPATH= cd -- "$REPO_DIR" && pwd -P)
[[ $repo != "$owning_home" && $repo != "$owning_home"/* ]] || fail 'repository is inside Hermes data'
[[ $stage_parent != "$repo" && $stage_parent != "$repo"/* ]] || fail 'staging is inside Git repository'
[[ $repo != "$stage_parent"/* ]] || fail 'Git repository is inside staging'
command -v age >/dev/null || fail 'age unavailable'
command -v gh >/dev/null || fail 'GitHub CLI unavailable for private visibility check'
command -v unzip >/dev/null || fail 'zip verifier unavailable'
command -v git >/dev/null || fail 'Git unavailable'
remote_repo=${EXPECTED_REMOTE#git@github.com:}
remote_repo=${remote_repo%.git}
visibility=$(gh repo view "$remote_repo" --json isPrivate --jq .isPrivate 2>/dev/null) || fail 'GitHub repository visibility unreadable'
[[ $visibility == true ]] || fail 'GitHub repository is not confirmed private'
raw_fetch_urls=$(git -C "$repo" config --get-all remote.origin.url) || fail 'Git fetch URL missing'
[[ $raw_fetch_urls == "$EXPECTED_REMOTE" ]] || fail 'Git has multiple or unexpected raw fetch URLs'
raw_push_urls=$(git -C "$repo" config --get-all remote.origin.pushurl || true)
[[ -z $raw_push_urls ]] || fail 'separate Git pushurl requires independent review'
effective_fetch_urls=$(git -C "$repo" remote get-url --all origin) || fail 'effective fetch URL unreadable'
effective_push_urls=$(git -C "$repo" remote get-url --push --all origin) || fail 'effective push URL unreadable'
[[ $effective_fetch_urls == "$EXPECTED_REMOTE" ]] || fail 'Git fetch URL rewrite or extra destination'
[[ $effective_push_urls == "$EXPECTED_REMOTE" ]] || fail 'Git push URL rewrite or extra destination'
[[ $(git -C "$repo" branch --show-current) == "$BRANCH" ]] || fail 'local branch changed'
[[ -z $(git -C "$repo" status --porcelain --untracked-files=all) ]] || fail 'repository has unrelated changes'
# No interactive prompt is possible in an unattended Hermes cron tick.
export GIT_TERMINAL_PROMPT=0
export GIT_SSH_COMMAND='ssh -o BatchMode=yes'
remote_head=$(git -C "$repo" ls-remote --heads origin "$BRANCH" | awk '{print $1}')
[[ -n $remote_head && $remote_head == "$(git -C "$repo" rev-parse HEAD)" ]] || fail 'remote unreadable or branch has changed'
work=$(mktemp -d "$stage_parent/hermes-backup.XXXXXXXX") || fail 'private staging creation failed'
if "$HERMES_BIN" backup -o "$work/hermes.zip" >"$work/backup.log" 2>&1; then
:
else
backup_rc=$?
fail "Hermes full backup returned $backup_rc; temporary zip/log will be removed, so diagnose with a separate controlled manual run"
fi
[[ -s "$work/hermes.zip" ]] || fail 'Hermes archive absent or empty'
unzip -tq "$work/hermes.zip" >"$work/backup.log" 2>&1 || fail 'zip integrity check failed'
age -r "$AGE_RECIPIENT" -o "$work/latest.zip.age" "$work/hermes.zip" >"$work/backup.log" 2>&1 || fail 'archive encryption failed'
[[ -s "$work/latest.zip.age" ]] || fail 'encrypted archive absent or empty'
# Deliberately below GitHub's 50 MiB warning. Git history retains every version.
cipher_bytes=$(stat -c %s "$work/latest.zip.age")
(( cipher_bytes <= 40000000 )) || fail 'encrypted archive exceeds this small-repository recipe'
git_bytes=$(du -sb "$repo/.git" | awk '{print $1}')
(( git_bytes + cipher_bytes + 10000000 <= 500000000 )) || fail 'repository history approaches the review limit'
hash=$(sha256sum "$work/latest.zip.age" | awk '{print $1}')
printf '%s latest.zip.age\n' "$hash" >"$work/latest.sha256"
cp -- "$work/latest.zip.age" "$repo/latest.zip.age"
cp -- "$work/latest.sha256" "$repo/latest.sha256"
git -C "$repo" add -- latest.zip.age latest.sha256
staged=$(git -C "$repo" diff --cached --name-only)
[[ $staged == $'latest.sha256\nlatest.zip.age' ]] || fail 'staged paths are not the two reviewed files'
git -C "$repo" diff --cached --check >/dev/null || fail 'staged content check failed'
git -C "$repo" commit -m "Encrypted Hermes backup $(date -u +%Y-%m-%dT%H:%M:%SZ)" >/dev/null || fail 'local backup commit failed'
run_head=$(git -C "$repo" rev-parse HEAD)
(( $(du -sb "$repo/.git" | awk '{print $1}') <= 500000000 )) || fail 'Git history exceeds review limit before push'
[[ $(git -C "$repo" rev-parse HEAD) == "$run_head" ]] || fail 'local HEAD changed before push'
git -C "$repo" push origin "$run_head:refs/heads/$BRANCH" >/dev/null || fail 'remote push failed; inspect exact remote before retrying'
remote_head=$(git -C "$repo" ls-remote --heads origin "$BRANCH" | awk '{print $1}')
[[ $remote_head == "$run_head" ]] || fail 'this run commit not confirmed at remote'
printf 'Encrypted backup verified at private remote commit %s.\n' "$run_head"
```
```bash
# No passwords, tokens, age identities or private keys belong here.
HERMES_BIN=/absolute/path/to/hermes
REPO_DIR=/absolute/path/to/dedicated-private-github-clone
STAGING_PARENT=/absolute/path/to/private-staging-outside-hermes-and-git
AGE_RECIPIENT=age1replace_with_operator_public_recipient
EXPECTED_REMOTE=git@github.com:ACCOUNT/PRIVATE-REPOSITORY.git
BRANCH=main
```
तैयारी डायरेक्टरी Hermes डेटा रूट और Git क्लोन से बाहर बनाएँ। जाँची फ़ाइलें स्वामी प्रोफ़ाइल की `scripts/` डायरेक्टरी में रखें। हर रन से पहले क्लोन साफ और रिमोट `main` से मेल खाना चाहिए। स्क्रिप्ट push और पढ़कर पुष्टि तक पूरे प्रवाह को लॉक करती है; व्यस्त या पुराने लॉक को नहीं छीनती। नए Git-तैयार बैकअप पथ के रूप में केवल `latest.zip.age` और `latest.sha256` स्वीकार हैं। एन्क्रिप्टेड फ़ाइल **40,000,000 बाइट** से अधिक हो या स्थानीय `.git` और अतिरिक्त जगह मिलकर **500,000,000 बाइट** के पास जाएँ तो रुकती है। ये नमूने की सावधान सीमाएँ हैं, GitHub भंडारण की गारंटी नहीं।
```bash
export HERMES_HOME=/absolute/path/to/owning-hermes-data-root
install -d -m 700 /ABSOLUTE/PRIVATE-STAGING
install -d -m 700 "$HERMES_HOME/scripts"
install -m 700 hermes-github-backup.sh "$HERMES_HOME/scripts/hermes-github-backup.sh"
install -m 600 hermes-github-backup.conf "$HERMES_HOME/scripts/hermes-github-backup.conf"
"$HERMES_HOME/scripts/hermes-github-backup.sh"
```
मैनुअल रन शून्य निकास कोड के साथ समाप्त होकर नए रिमोट पठन के बाद **उसी रन में बना** commit दिखाए। सुनिश्चित करें `gh repo view` अभी भी निजी बताता है, क्लोन के ट्रैक किए पथ और सही रिमोट का सटीक commit जाँचें। स्थानीय संग्रह या commit बाहरी बैकअप परिणाम नहीं है। रुका रन ऐसा दर्ज न करें। Hermes के अनुसार पूर्ण बैकअप `0` तभी लौटाता है जब हर चुनी फ़ाइल जुड़ी हो; अधूरे संग्रह के लिए `1`, भले ZIP हो; दूसरा बैकअप चलने पर `2` लौटाता है। स्क्रिप्ट निकलते समय अस्थायी ZIP और लॉग हटाती है; सामान्य हटाना सुरक्षित मिटाना नहीं है। छूटी फ़ाइलों के लिए अलग नियंत्रित मैनुअल `hermes backup -o /PRIVATE-DIAGNOSTIC/hermes.zip` से जाँचें, निकास स्थिति और रिपोर्ट देखें तथा छूटी सामग्री की सुरक्षा तय करें।
## 3. समय तय करें और पहला निर्धारित रन देखें
मैनुअल परिणाम के बाद ही उसी प्रोफ़ाइल से Hermes का दस्तावेज़ी `--no-agent --script` मोड इस्तेमाल करें। यह LLM बुलाए बिना फ़ाइल चलाता है। सोचकर आवृत्ति और गैर-गोपनीय स्थानीय स्थिति वितरण चुनें। गेटवे की OS पहचान, प्रोफ़ाइल और अगला समय जाँचें। Hermes स्क्रिप्ट टाइमआउट पहले `HERMES_CRON_SCRIPT_TIMEOUT`, फिर `cron.script_timeout_seconds`, फिर **3,600 सेकंड के डिफ़ॉल्ट** से तय होता है। देखे गए रन के लिए उपयुक्त मान तय व जाँचें; टाइमआउट विफलता है। साफ किया स्क्रिप्ट वातावरण Hermes द्वारा प्रबंधित प्रदाता क्रेडेंशियल अपने-आप नहीं पाता; निर्भर होने से पहले वास्तविक निर्धारित उपयोगकर्ता से बिना हस्तक्षेप `gh` और SSH पहुँच जाँचें।
```bash
hermes cron create '0 3 * * *' --no-agent --script hermes-github-backup.sh --deliver local --name 'Encrypted Hermes backup'
hermes cron list
hermes cron status
hermes cron doctor
```
पहले **निर्धारित** समय के बाद सटीक जॉब ID, रन रिकॉर्ड, स्थानीय आउटपुट (डिफ़ॉल्ट प्रोफ़ाइल में `~/.hermes/cron/output/`), घटना रिकॉर्ड और सही रिमोट का शीर्ष commit देखें। गेटवे उपलब्ध रहा और रन ने उसी ट्रिगर से बना रिमोट commit बताया, यह जाँचें। मैनुअल रन cron चलने का प्रमाण नहीं है। आउटपुट गायब हो तो उसी जॉब और गेटवे की जाँच करें, दूसरा शेड्यूल न बनाएँ। स्थिति संदेश में ZIP सामग्री, गोपनीय डेटा या क्रेडेंशियल न डालें।
## 4. नई मशीन पर प्राप्ति और आयात साबित करें
इस्तेमाल करें **अलग अस्थायी Linux मशीन, जिसमें उत्पादन Hermes प्रोफ़ाइल या गेटवे न हो**। पहले संगत Hermes संस्करण स्थापित करें: संग्रह उपयोगकर्ता डेटा है, एप्लिकेशन या रनटाइम इमेज नहीं। परीक्षण मशीन को सही निजी रिपॉज़िटरी और स्वतंत्र रखी age identity का अलग अधिकृत पठन दें। क्लोन रिमोट और चुना commit जाँचें। स्रोत होस्ट या मौजूदा प्रोफ़ाइल पर `hermes import` न चलाएँ। वापस आए सभी शेड्यूल और बाहरी कार्य निष्क्रिय रखें जब तक व्यक्ति गंतव्य देखकर सक्रिय करने का निर्णय न ले।
```bash
umask 077
unset HERMES_HOME
git clone git@github.com:ACCOUNT/PRIVATE-REPOSITORY.git /PRIVATE-RECOVERY/hermes-backup-clone
cd /PRIVATE-RECOVERY/hermes-backup-clone
sha256sum -c latest.sha256
age --decrypt -i /PRIVATE-KEY-STORE/hermes-backup-identity.txt -o /PRIVATE-RECOVERY/hermes.zip latest.zip.age
unzip -tq /PRIVATE-RECOVERY/hermes.zip
hermes import /PRIVATE-RECOVERY/hermes.zip
hermes setup
hermes cron list
```
आयात हुई प्रोफ़ाइल, स्किल, स्मृतियाँ, सत्र और cron परिभाषाएँ इच्छित सुरक्षा सामग्री से मिलाएँ। `hermes setup` प्रदाता कॉन्फ़िगरेशन जाँचता है, लेकिन बदलने योग्य क्रेडेंशियल और मशीन-विशिष्ट पथ भी देखें। वास्तविक परिणाम लिखें। सही चेकसम और डिक्रिप्ट योग्य ZIP अकेले उपयोगी पुनर्स्थापन साबित नहीं करते। अभ्यास बाद स्थानीय नीति से स्पष्ट-पाठ परीक्षण ZIP हटाएँ; सामान्य हटाना सुरक्षित मिटाने की गारंटी नहीं।
## जाँच रुकने पर
अधूरा Hermes बैकअप, ZIP या एन्क्रिप्शन त्रुटि, अनपेक्षित प्रभावी Git URL, गैर-निजी या अपठनीय रिपॉज़िटरी, व्यस्त प्रवाह लॉक, आकार सीमा, असफल push, भिन्न रिमोट commit या आयात विफलता रन को **अपुष्ट** छोड़ते हैं। कारण ठीक करें और दोबारा कोशिश से पहले वर्तमान स्थिति जाँचें। push परिणाम अनिश्चित हो तो पहले सटीक रिमोट ब्रांच और commit देखें। क्रैश बाद लॉक बचा हो तो सक्रिय प्रक्रिया और स्थानीय/रिमोट स्थिति जाँचें; सक्रिय लॉक कभी न हटाएँ। निजी age identity खोने पर डिक्रिप्शन के लिए स्वतंत्र सही प्रति चाहिए। स्पष्ट-पाठ गोपनीय सामग्री Git में जाए तो पहले उजागर क्रेडेंशियल बदलें; बाद में फ़ाइल हटाने से पुराना इतिहास या दूसरे क्लोन नहीं मिटते।
[GitHub की बड़ी फ़ाइल मार्गदर्शिका](https://docs.github.com/en/repositories/working-with-files/managing-large-files/about-large-files-on-github) चेतावनी देती है **50 MiB** पर, और साधारण Git फ़ाइलें रोकती है **100 MiB** से ऊपर; Git बैकअप उपकरण के रूप में नहीं बना है। नमूना जानबूझकर इनसे पहले रुकता है। हर बदली एन्क्रिप्टेड सामग्री Git इतिहास में रहती है, भले `latest.zip.age` बदल जाए। 40 MB/500 MB सीमाएँ चुपचाप न बढ़ाएँ, इतिहास न लिखें और निजी पहुँच को एन्क्रिप्शन न मानें। आकार या पुनर्प्राप्ति जाँच विफल हो तो बैकअप-विशेष भंडार या अलग जाँची LFS योजना पर विचार करें। खाते, भंडारण, नेटवर्क और होस्ट खर्च लागू हैं; एजेंट-रहित स्क्रिप्ट स्वयं LLM कॉल नहीं माँगती। अवधि, सफलता दर या बचत मापी नहीं गई।
अलग, सीमित Hermes शेड्यूलिंग कार्य के लिए देखें [स्किल-आधारित आवर्ती Hermes जॉब बनाने और पहला रन जाँचने का तरीका](https://bigchange.ai/blog/hermes-skill-recurring-job-first-run)। उसकी रिपोर्ट जाँच एन्क्रिप्टेड संग्रह और पुनर्प्राप्ति अभ्यास की जगह नहीं लेती।
## स्रोत और आगे पढ़ें
- [Hermes Agent CLI कमांड, निश्चित commit `86fa9e6`](https://github.com/NousResearch/hermes-agent/blob/86fa9e6ca1de7ee71132d2be0103f3e37d1fa872/website/docs/reference/cli-commands.md) — पूरा बैकअप आदेश, कवरेज, बहिष्करण और निकास स्थिति। 19 अक्टूबर 2026 को निश्चित स्रोत से जाँचा; वास्तविक प्रोफ़ाइल पर रन साबित नहीं।
- [Hermes Agent सामान्य प्रश्न, वही निश्चित commit](https://github.com/NousResearch/hermes-agent/blob/86fa9e6ca1de7ee71132d2be0103f3e37d1fa872/website/docs/reference/faq.md) — पूरा बैकअप स्थानांतरण, `hermes import` और `hermes setup`; संग्रह डेटा है, रनटाइम इमेज नहीं।
- [Hermes निर्धारित कार्य मैनुअल, वही निश्चित commit](https://github.com/NousResearch/hermes-agent/blob/86fa9e6ca1de7ee71132d2be0103f3e37d1fa872/website/docs/user-guide/features/cron.md) — एजेंट-रहित स्क्रिप्ट मोड, वितरण, साफ वातावरण, गेटवे और टाइमआउट। शेड्यूल से पहले स्थापित संस्करण की मदद जाँचें।
- [age README](https://github.com/FiloSottile/age/blob/main/README.md) — प्राप्तकर्ता एन्क्रिप्शन और identity डिक्रिप्शन। बदलता `main` पृष्ठ 19 अक्टूबर 2026 को जाँचा; निष्क्रिय परीक्षण ने वास्तविक एन्क्रिप्शन नहीं जाँचा।
- [GitHub रिपॉज़िटरी गोपनीयता](https://docs.github.com/en/repositories/creating-and-managing-repositories/about-repositories), [रिपॉज़िटरी निर्माण](https://docs.github.com/en/repositories/creating-and-managing-repositories/quickstart-for-repositories) और [GitHub CLI repo view](https://cli.github.com/manual/gh_repo_view) — निजी पहुँच और दृश्यता पठन। निजी पहुँच जाँचे सहयोगियों व क्रेडेंशियल पर निर्भर है।
- [Git remote](https://git-scm.com/docs/git-remote) और [Git push](https://git-scm.com/docs/git-push) — प्रभावी गंतव्य और भेजे संदर्भ; स्क्रिप्ट उसी रन के रिमोट शीर्ष की अलग जाँच जोड़ती है।
- [GitHub बड़ी फ़ाइल मार्गदर्शिका](https://docs.github.com/en/repositories/working-with-files/managing-large-files/about-large-files-on-github) और [संवेदनशील डेटा हटाना](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository) — Git आकार और इतिहास की सीमाएँ तथा लीक क्रेडेंशियल बदलने की वजह, केवल फ़ाइल हटाना पर्याप्त नहीं। बदलते मैनुअल 19 अक्टूबर 2026 को जाँचे।
## Sources
- [Hermes Agent CLI कमांड, निश्चित commit 86fa9e6](https://github.com/NousResearch/hermes-agent/blob/86fa9e6ca1de7ee71132d2be0103f3e37d1fa872/website/docs/reference/cli-commands.md) — पूर्ण बैकअप सिंटैक्स, उपयोगकर्ता डेटा सीमा, चूक और निकास स्थिति; निश्चित commit 2026-10-19 को जाँचा। वास्तविक बैकअप नहीं जाँचा।
- [Hermes Agent सामान्य प्रश्न, निश्चित commit 86fa9e6](https://github.com/NousResearch/hermes-agent/blob/86fa9e6ca1de7ee71132d2be0103f3e37d1fa872/website/docs/reference/faq.md) — नई मशीन पर आयात और सेटअप; डेटा संग्रह, एप्लिकेशन/रनटाइम इमेज नहीं। पुनर्स्थापन नहीं जाँचा।
- [Hermes निर्धारित कार्य मैनुअल, निश्चित commit 86fa9e6](https://github.com/NousResearch/hermes-agent/blob/86fa9e6ca1de7ee71132d2be0103f3e37d1fa872/website/docs/user-guide/features/cron.md) — एजेंट-रहित स्क्रिप्ट, साफ वातावरण, गेटवे, वितरण और टाइमआउट प्राथमिकता; स्थापित CLI नहीं देखा।
- [age README](https://github.com/FiloSottile/age/blob/main/README.md) — प्राप्तकर्ता एन्क्रिप्शन और identity डिक्रिप्शन; बदलता main 2026-10-19 को जाँचा; निष्क्रिय परीक्षण ने एन्क्रिप्ट नहीं किया।
- [GitHub रिपॉज़िटरी गोपनीयता](https://docs.github.com/en/repositories/creating-and-managing-repositories/about-repositories) — निजी पहुँच सीमा और सहयोगियों का प्रभाव; बदलता मैनुअल 2026-10-19 को जाँचा।
- [GitHub रिपॉज़िटरी निर्माण](https://docs.github.com/en/repositories/creating-and-managing-repositories/quickstart-for-repositories) — निजी रिपॉज़िटरी सेटअप; बदलता मैनुअल 2026-10-19 को जाँचा।
- [GitHub CLI repo view](https://cli.github.com/manual/gh_repo_view) — isPrivate दृश्यता पठन; 2026-10-19 को जाँचा।
- [Git remote](https://git-scm.com/docs/git-remote) — प्रभावी fetch/push गंतव्य व्यवहार; बदलता Git मैनुअल 2026-10-19 को जाँचा।
- [Git push](https://git-scm.com/docs/git-push) — स्पष्ट संदर्भ push व्यवहार; बदलता मैनुअल 2026-10-19 को जाँचा।
- [GitHub बड़ी फ़ाइल मार्गदर्शिका](https://docs.github.com/en/repositories/working-with-files/managing-large-files/about-large-files-on-github) — 50 MiB चेतावनी, 100 MiB से अधिक सामान्य Git फ़ाइल रोक और Git के बैकअप हेतु न बने होने की चेतावनी; बदलता मैनुअल 2026-10-19 को जाँचा।
- [GitHub संवेदनशील डेटा हटाना](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository) — क्रेडेंशियल बदलना और इतिहास हटाने की सीमाएँ; बदलता मैनुअल 2026-10-19 को जाँचा।
BIG CHANGE न्यूज़लेटर
बड़ी तस्वीर। आपकी गति से।
AI और रोबोटिक्स पर ताज़ा लेख, ध्यान देने योग्य बदलाव और उपयोगी विचार। दैनिक ब्रीफ़िंग, साप्ताहिक सारांश या मासिक परिप्रेक्ष्य चुनें।
Next scheduled send (UTC): . Your first edition arrives at the next scheduled send after you confirm.
आपकी गोपनीयता, आपकी पसंद।
ज़रूरी स्टोरेज साइट की सुरक्षा में मदद करता है और आपकी पसंद याद रखता है। आपकी अनुमति मिलने तक वैकल्पिक Google Analytics बंद रहता है। आप हर लेख केवल आवश्यक स्टोरेज के साथ पढ़ सकते हैं। गोपनीयता का विवरण