Persistence

Save and resume agent sessions using ActiveRecord. By default, sessions run in-memory with no database needed. Wire up a persistence adapter when you want to continue conversations across requests.

How It Works

The persistence adapter stores sessions as rows in an ask_sessions table with a JSONB data column that holds the full conversation state.

# In-memory (default) — no database needed
session = Ask::Rails::Harness.agent_session

# Persisted — requires migration + adapter config
Ask::Rails::Harness.configure do |config|
  config.persistence_adapter = Ask::Rails::Harness::Persistence.new
end
session = Ask::Rails::Harness.agent_session

Database Schema

Run the generator migration to create the table:

rails generate ask_rails:install
rails db:migrate
create_table :ask_sessions do |t|
  t.string :session_id, null: false
  t.string :model
  t.jsonb :data, default: {}
  t.timestamps
end

add_index :ask_sessions, :session_id, unique: true

Saving and Loading

	```ruby
		adapter = Ask::Rails::Harness.configuration.persistence_adapter

		session = Ask::Rails::Harness.agent_session
	session.run("Hello")
	saved_id = session.id
	
	# Load it later using the Session.load class method
	restored = Ask::Agent::Session.load(saved_id, adapter: adapter)
	restored.run("Continue where I left off")
	```

In-Memory vs Database

  In-Memory Database
Setup None (default) Run migration + configure adapter
Cross-request No Yes
Resumability No Yes
Inspectable No Via Rails console

Next Steps


This site uses Just the Docs, a documentation theme for Jekyll.