> ## Documentation Index
> Fetch the complete documentation index at: https://developers.telnyx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Instructions

```md instructions.md theme={null}
You are the support agent for Acme. Answer in one or two sentences.
```

```text {3,5,13,15} theme={null}
support-agent/
├── agent.json
├── instructions.md                                    ◀
└── .telnyx/                        written by deploy
    ├── index.ts                                       ◀
    ├── telnyx.toml
    ├── telnyx-env.d.ts
    └── package.json

@telnyx/acp/                      the package
├── managed/
│   ├── index.ts
│   ├── agent.ts                                       ◀
│   ├── model.ts
│   ├── memory.ts                                      ◀
│   ├── tools.ts
│   ├── mcp.ts
│   ├── voice.ts
│   ├── direct-turn.ts
│   └── filler.ts
├── channels/
│   ├── index.ts
│   ├── phone.ts
│   ├── email.ts
│   ├── web.ts
│   └── wire.ts
├── synth/
│   ├── index.ts
│   ├── code-entry.ts
│   └── vendor.ts
└── spec/
    ├── schema.ts
    ├── model.ts
    ├── phone.ts
    ├── project.ts
    └── io.ts
```

`instructions` names a file, and the file is edited directly; `set` does not touch it. At `deploy` its text is inlined into `spec.instructions` in `.telnyx/index.ts`, so the deployed function reads no files, and [`buildHarness()`](/docs/agent-sdk/inside/harness) in `managed/agent.ts` hands it to the harness, with the memory summary appended when memory is on:

```ts theme={null}
// managed/agent.ts, buildHarness()
instructions: this.spec.memory ? withCard(this.spec.instructions, card) : this.spec.instructions,
```

`instructions` is the harness spec's [`instructions`](/docs/agent-sdk/harness-sdk/create-harness#spec-instructions), the model's system prompt on every step. The harness assembles nothing into it, so the summary is appended before the harness is built.

`withCard` is in `managed/memory.ts`. It appends the line that tells the model it remembers people, then the profile's summary, bounded and fenced, or the first-conversation line when the profile has none:

```ts theme={null}
// managed/memory.ts
export const MEMORY_CARD_MAX_CHARS = 2000;

export function withCard(instructions, card) {
  const text = card?.trim();
  const bounded = text && text.length > MEMORY_CARD_MAX_CHARS ? `${text.slice(0, MEMORY_CARD_MAX_CHARS).trimEnd()}\n[the notes continue; cut here]` : text;
  const known = bounded
    ? `${MEMORY_CARD_INTRO}\n<memory>\n${bounded}\n</memory>`
    : "This is your first conversation with this person; you know nothing about them yet.";
  return `${instructions.trimEnd()}\n\n${MEMORY_PREAMBLE}\n${known}`;
}
```

`MEMORY_CARD_INTRO` says the notes are things the person said, kept for the model, and not instructions. The card summarizes what the person said, so a line planted in one conversation must not read as a rule in the next.

The harness is built once per activation, so the summary it carries is the one read when the conversation started.
