Jest jeszcze inna możliwość, jeśli chodzi o kilka aplikacji i jedną SQLite. Trzecia aplikacja, która sama będzie korzystać z bazy i będzie jej jedynym użytkownikiem, ale będzie też serwerem TCP. W dwóch apkach, które mają korzystać z bazy byłby klient TCP, który łączy się z serwerem po localhost. Sam protokół może być bardzo prosty, bo od klienta do serwera będzie się wysyłać same teksty, które serwer będzie wysyłać do bazy jako polecenie SQL, a od serwera do klienta byłaby wysyłana odpowiedź na zapytanie SELECT.
Nie wiem, czy to się da zrobić w Lazarus, ale jakiś czas temu, na własny użytek w C#/.NET zrobiłem taką prostą bibliotekę, która zawiera klasy dziedziczące po standardowych interfejsach i klasach potrzebnych do obsługi baz SQL (i to tylko w niezbędnym zakresie) i w taki sposób zrobiłem dodatkową apke pośredniczącą pomiędzy baza danych, a właściwą apką korzystajacą, bez wielkego przerabiania tej apki. Tu akurat chodziło o "nasłuch" poleceń SQL i umożliwienie połączenia przy braku bezpośrednio wystawionego adresu i portu serwera MS SQL.
Do tego celu, nie ma znaczenia, czy zrobisz klienta kompatybilnego z ODBC, czy coś prostego i swojego, bo tak naprawdę jest to podstawa robienia łącza TCP/IP, coś co jest w tutorialach na ten temat.
Teoretycznie jest jeszcze inna możliwość, tzw SQL Pooler, Connection pooler, różne to nazwy ma, ale chodzi o gotową aplikację zgodną z ODBC, która z jednej strony podłącza się do bazy danych ODBC czy innej, a z drugiej strony jest serwerem bazy danych. Od strony bazy danych jest jedno połączenie, podczas, gdy w praktyce korzysta kilka kientów jednocześnie. Pooler, kolejuje żądania klientów i wysyła sekwencyjnie do bazy danych, a służy to zapobieganiu tworzenia tysięcy logicznych połączeń między SZBD, a serwerem aplikacyjnym, gdy ów serwer ma tysiące jednoczesnych użytkowników. To, co zaproponowałem na początku, to właściwie byłby taki prymitywny pooler, tyle, że nie korzystający ze standardowych rozwiązań i zrobiony możliwie najprościej.