Starting the Shell
Launch the interactive shell from your project directory:You must run
ftl init in your project before using the interactive shell.Shell Prompt States
The shell has two prompt states:- Idle
- Active Session
Basic Workflow
1
Start Shell
2
Issue Task
Type a task description to start a new session:FTL snapshots your project, boots the sandbox, and runs the agent.
3
Review Changes
Once the agent completes, the session becomes active:
4
Follow-up Instructions
Continue the conversation with follow-up tasks:The agent continues in the same container with full context.
5
Merge or Reject
When satisfied, merge the changes:Or reject to discard all changes:
Session Commands
These commands are available when a session is active:diff
Show all changes since the snapshot:test
Re-run tests manually:merge
Review and merge changes to your project:reject
Discard all changes and end the session:ftl>.
Snapshot Commands
These commands are available at any time:list
List snapshots for the current project:list all
List snapshots for all projects:restore
Restore a previous snapshot:Example Session
Here’s a complete interactive session:Session Lifecycle
Persistent Container
The shell uses a persistent container per project:Follow-up Context
When you issue a follow-up instruction:1
Same Container
The agent runs in the same container with all previous context
2
Same Conversation
Conversation history in
/home/ftl/.claude/ is preserved3
No Snapshot
FTL does not create a new snapshot for follow-ups
4
Cumulative Diff
The diff shows all changes since the original snapshot
Exiting the Shell
Exit the shell with any of these:Shell Implementation
The shell is implemented inftl/cli.py:
ftl/cli.py
Tips
Use follow-ups for refinement
Use follow-ups for refinement
Instead of crafting perfect initial instructions, start with a basic task and refine with follow-ups:
Check diffs before merging
Check diffs before merging
Always run
diff before merge to review all accumulated changes:Use list to track snapshots
Use list to track snapshots
Run Use
list to see all snapshots for the current project:restore <id> if you need to revert to a previous state.Test early and often
Test early and often
Run tests manually after each follow-up to catch issues early: