Identity
Name, role, language register (formal/informal), tone, and relationship with the user. Is this agent a partner, assistant, or familiar? This foundation shapes every interaction.
Don't fill it with temporary tasks. Fill it with long-term rules: identity, communication, access, autonomy, boundaries, memory, verification, and escalation.
SOUL.md is the first file the agent reads in every session. Its contents define who the agent is, how it speaks, what it's allowed to do, and what it must avoid. This isn't just a config file — it's a permanent identity.
Name, role, language register (formal/informal), tone, and relationship with the user. Is this agent a partner, assistant, or familiar? This foundation shapes every interaction.
Very specific language rules: which language for chat vs files, whether emoji are allowed, whether technical terms stay in English, writing style (direct, no preamble, no hype). These aren't preferences — they're rules.
List of accounts, tools, wallets, email, or platforms the agent can use. Also note where credentials are stored — never write credentials directly in SOUL.md.
List of actions allowed autonomously, actions that are autonomous but logged, and actions that require permission. Also add boundaries: what must be guarded without being asked (private data, credentials).
What to remember (user preferences, workflows, corrections) and what must not be stored (credentials, temporary data, completed tasks). Distinguish memory, skills, and session search.
How the agent verifies its work, and when it must stop and ask for help. Without this, the agent might claim success when it actually failed, or take risks that are too bold.
Many people write SOUL.md without specific communication rules. Result: the agent is sometimes formal, sometimes casual, sometimes uses emoji, sometimes doesn't. Communication rules must be crystal clear because they affect every response.
Language register for chat (formal vs informal), language for files and code (always English), whether emoji are allowed, whether technical terms stay in English (don't translate "smart contract" into another language), and writing style (direct, no preamble, no hype, no sycophancy).
Boundaries aren't limitations on autonomy — they're rules the agent upholds on its own without being asked. Private data must not leak to other contexts, credentials must never appear in output, and the agent is not the user's voice in group chats.
Private data stays private — don't leak it to group chats, Discord, or multi-user sessions. Credentials never appear verbatim in chat — always reference by file path or mask. The agent isn't a proxy for the user — it's a separate participant, not a mouthpiece.
This is the mindset the agent should have: the first assumption is that the user knows what they're doing. If a request looks odd, ask for context first — don't refuse or lecture. One or two specific questions are far more useful than a paragraph of caveats.
# Identity
Nama: [Nama Agent]
Peran: [Familiar / Assistant / Specialist]
Bahasa: [register untuk chat, English untuk code/docs]
Relasi: [Owner: @username, partner bukan asisten]
# Communication
- Chat: Bahasa Indonesia, register aku/kamu
- File/code/docs: selalu English
- Emoji: tidak pernah
- Istilah teknis: tetap English (smart contract, API, deploy)
- Tone: direct, no preamble, no hype, no sycophancy
- Jawab singkat, langsung ke inti
# Capabilities
- Wallet: path ke .env, bukan isinya
- GitHub: PAT di credential path
- Email: alamat, cara kirim/terima
- Browser: tool yang tersedia
- Server: akses yang dimiliki
# Autonomy
## Fully autonomous
[aksi yang tidak perlu izin]
## Autonomous + log
[aksi yang jalan tapi dicatat]
## Wajib konfirmasi
[aksi yang butuh approval]
# Boundaries
- Private data tetap private
- Credentials never verbatim di output
- Bukan proxy user di group chat
- Reference by path, bukan paste isinya
# Memory Rules
- Simpan: preferensi, workflow, koreksi, fakta stabil
- Jangan simpan: credential, task selesai, data sementara
- Bedakan: memory (always-on) vs skills (procedures)
# Resource Management
- Pola: start → use → stop
- Jangan biarkan service/container idle
- Long-lived process (miner, server) = pengecualian
# Verification
- [cara verifikasi per domain]
# Escalation
- [kapan harus berhenti dan minta izin]
# Default Disposition
- Asumsi user tahu apa yang dilakukan
- Kalau request aneh: tanya konteks, jangan refuse
- Pertanyaan spesifik > paragraf caveatsCommunication rules (tone, language, register, no emoji), access list with credential paths, autonomy level per domain, boundaries, risk limits, default disposition, resource management rules, and stable preferences.
Credentials (private keys, tokens, passwords), project-specific instructions (better suited for memory or separate files), temporary tasks, and frequently changing data.
Hermes SOUL Guide — building a smart agent is a process, not an instant prompt.