Using Alara Code
Talk to the agent
Shape your idea in the project chat, watch replies stream in, and turn the conversation into an RFP.
Every project has a chat with its agent, built into SDLC Studio. Before there is an RFP, the agent helps you shape your idea into one; afterwards it answers questions about the project. Its replies stream in as it writes them, and when the idea is complete it offers to draft the RFP.
Where the chat lives
Open a project and choose SDLC Studio. The middle of the page is one conversation, oldest first: your messages on the right, the agent's replies across the column, and the runs of every step in between, in the order they happened. The message box is at the bottom, in the composer; the steps are in the rail on the left.
The placeholder tells you which mode you are in:
- "Describe your idea to the agent — who it is for, what it must do, any deadline or budget…" while the project has no RFP yet;
- "Ask the agent about this project…" once it has one.
On a new project with no RFP the empty conversation reads Start with your idea.
Send a message
Type in the box and press Enter, or press the round button. Shift+Enter starts a new line.
- A message can be up to 8000 characters. Longer ones are refused with "Messages are limited to 8000 characters."
- One reply at a time. While the agent is answering, you cannot send another message — the box shows "The agent is still answering." Wait for the reply, then continue.
- The chat needs the Projects › Run permission and a bound agent. Without an agent, the composer shows No Alara agent bound instead of the message box, with a link to Project Settings.
What the agent can and cannot do
The agent behind the chat is a pre-sales consultant and business analyst for your project.
It can:
- ask focused questions about your idea — at most three per reply, the most important first — covering the problem, users, goals, must-have features, integrations, constraints (budget, timeline, technology, regulation) and what "done" looks like;
- summarise what it has understood so far;
- tell you when there is enough to draft the RFP;
- once the RFP is approved, answer questions about the project and explain what each step produces and what comes next;
- answer in Markdown: lists, bold text, a short table, or a Mermaid diagram.
It cannot:
- run, approve or change a step. If you ask it to, it tells you which button to press. Steps are started only from the step rail, the composer's round button, or a typed
/step. - edit a document. To change a draft, use Request changes on the document's turn — see Review, approve, request changes.
- write the RFP in the chat. The RFP is drafted by Generate RFP.
- see documents it is not given. It knows the project's name, client and stage, the RFP text and the recent conversation. For anything else it tells you which step produces it.
Replies stream in
After you send a message, the agent's side shows Thinking…. As soon as it starts writing, its reply appears word by word with Writing… underneath. When it finishes, the reply settles into place with a Copy button (visible on hover) that copies the reply's Markdown text.
If the agent's first answer does not match what Alara Code expects, it is asked once more with the problem as a correction. The streamed text may then start again from the beginning — that is the second attempt, not a glitch.
Streaming is a live preview. The reply is saved only when it is complete, and the view also checks every two seconds while a reply is pending, so a reply always arrives even if the live stream is interrupted.
What the agent knows
The agent does not remember earlier calls. Each message it receives carries:
| Context | Detail |
|---|---|
| The project | Name, client, and the type, timeline and description if set |
| The stage | Which steps are complete, which are awaiting review, which can run next, and whether an RFP exists and is approved |
| The RFP text | The current RFP, up to 20 000 characters (longer RFPs are cut) |
| The conversation | The last 30 completed messages — failed or unfinished replies are left out |
| Your new message | The one it answers |
The chat view itself keeps the newest 200 messages.
Generate RFP
When the conversation covers the problem, who uses the system, the main goals and the core features, the agent ends its reply by saying you can generate the RFP, and a banner appears below the conversation:
The agent has enough to draft your RFP. It comes back for your review before /scope unlocks.
Press Generate RFP. This runs the /rfp step, which drafts the RFP from the last 60 messages of the chat. Anything still missing is listed as open questions in the draft. The draft finishes as Awaiting your review; approve it to unlock /scope.
The banner appears only when all of these hold:
- the agent's newest completed reply suggested it;
- the RFP step can still run — there is no RFP yet (a draft under review is changed with Request changes instead);
- no step is running, and you have the permission to run steps with an agent bound.
Once the RFP is approved the chat becomes question-and-answer and the banner no longer appears. You can also run /rfp from its row in the step rail without waiting for the suggestion; if the chat has nothing to draft from yet, the run fails with "There is nothing to draft an RFP from yet — describe the idea in the project chat first, or upload an RFP."
Already have an RFP? Press Upload RFP in the step rail instead. See Projects.
Slash commands in the message box
Typing a bare step command — /scope, /srs and so on — and pressing Enter runs that step instead of sending a message. The round button's label changes to "Run /scope" so you can see which will happen.
A slash command runs only when it is exactly the command and nothing else, and the step can run now (it is available, or complete and can be re-run). Anything else is sent to the agent as a message — a sentence starting with a slash, an unknown command, or a locked step. While a step is running, typed commands are sent as messages.
With the box empty, the round button runs the next available step. See Run the pipeline.
Chatting while a step runs
A running step never blocks the chat. The composer keeps the message box, with "You can keep talking to the agent while the step runs." beneath it, and a Stop button for the run beside Send.
When a reply fails
A reply that fails shows a red message in its place. Send your message again once you have dealt with the cause.
| Message | What happened | What to do |
|---|---|---|
| "The agent did not answer in time. Send the message again." | No reply within the time limit | Resend. If it keeps happening, check the agent's model in Alara. |
| "Your session expired while the agent was answering. Sign in again, then resend." | Your sign-in expired mid-reply | Sign in again and resend |
| "The project agent does not have its chat skill. …" | The agent declined because sdlc-project-assistant.md is missing | Add the file to the agent in Alara, then resend. Set up the project agent |
| "The agent could not answer: … Send the message again." | Its reply did not match the chat contract, twice | Resend; if it persists, check the agent's persona and skill files |
| "The agent could not be reached: …" | Alara refused or could not be reached | Check the reason; try again shortly |
| "The agent's reply was lost (the service restarted). Send the message again." | The service restarted before the reply finished | Resend |
Some problems stop a message before it is sent and appear as a notification instead — for example The agent is still answering, No agent bound, Agent not available (the bound agent is no longer shared with your organization), or Sign in again first (your session would expire too soon).
Under the hood
Sending posts POST /api/projects/:id/chat, which stores your message and a pending reply and returns at once. The reply is one sdlc-project-assistant skill call returning { reply, suggestGenerateRfp }. Its text streams to the browser over GET /api/projects/:id/chat/:messageId/stream (events snapshot, delta, end, unavailable); the saved message is the record. See Run lifecycle and streaming.